@splinetool/loader 0.9.145 → 0.9.146
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 +85 -85
- package/build/SplineLoader.js +85 -85
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDescriptor;var Fh=Object.getOwnPropertyNames;var zh=Object.getPrototypeOf,Uh=Object.prototype.hasOwnProperty;var Bc=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),jh=(n,t)=>{for(var e in t)Va(n,e,{get:t[e],enumerable:!0})},kh=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Fh(t))!Uh.call(n,o)&&o!==e&&Va(n,o,{get:()=>t[o],enumerable:!(r=Vh(t,o))||r.enumerable});return n};var Dc=(n,t,e)=>(e=n!=null?Rh(zh(n)):{},kh(t||!n||!n.__esModule?Va(e,"default",{value:n,enumerable:!0}):e,n));var Jm=Bc((Ea,Zm)=>{(function(n,t){typeof Ea=="object"&&typeof Zm<"u"?t(Ea):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Ea,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,l,c,p,a,u,d,f,m,h,g,v,x=t[0].length,w=t.length;if(w<x)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],I=[],_=e==="f"?w:x,y=h=d=0;y<w;y++)b[y]=new Array(_).fill(0);for(y=0;y<x;y++)I[y]=new Array(x).fill(0);var P,A=new Array(x).fill(0);for(y=0;y<w;y++)for(s=0;s<x;s++)b[y][s]=t[y][s];for(y=0;y<x;y++){for(S[y]=d,m=0,c=y+1,s=y;s<w;s++)m+=Math.pow(b[s][y],2);if(m<i)d=0;else for(f=(u=b[y][y])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y]=u-d,s=c;s<x;s++){for(m=0,l=y;l<w;l++)m+=b[l][y]*b[l][s];for(u=m/f,l=y;l<w;l++)b[l][s]=b[l][s]+u*b[l][y]}for(A[y]=d,m=0,s=c;s<x;s++)m+=Math.pow(b[y][s],2);if(m<i)d=0;else{for(f=(u=b[y][y+1])*(d=u<0?Math.sqrt(m):-Math.sqrt(m))-m,b[y][y+1]=u-d,s=c;s<x;s++)S[s]=b[y][s]/f;for(s=c;s<w;s++){for(m=0,l=c;l<x;l++)m+=b[s][l]*b[y][l];for(l=c;l<x;l++)b[s][l]=b[s][l]+m*S[l]}}h<(g=Math.abs(A[y])+Math.abs(S[y]))&&(h=g)}if(r)for(y=x-1;0<=y;y--){if(d!==0){for(f=b[y][y+1]*d,s=c;s<x;s++)I[s][y]=b[y][s]/f;for(s=c;s<x;s++){for(m=0,l=c;l<x;l++)m+=b[y][l]*I[l][s];for(l=c;l<x;l++)I[l][s]=I[l][s]+m*I[l][y]}}for(s=c;s<x;s++)I[y][s]=0,I[s][y]=0;I[y][y]=1,d=S[y],c=y}if(e){if(e==="f")for(y=x;y<w;y++){for(s=x;s<w;s++)b[y][s]=0;b[y][y]=1}for(y=x-1;0<=y;y--){for(c=y+1,d=A[y],s=c;s<_;s++)b[y][s]=0;if(d!==0){for(f=b[y][y]*d,s=c;s<_;s++){for(m=0,l=c;l<w;l++)m+=b[l][y]*b[l][s];for(u=m/f,l=y;l<w;l++)b[l][s]=b[l][s]+u*b[l][y]}for(s=y;s<w;s++)b[s][y]=b[s][y]/d}else for(s=y;s<w;s++)b[s][y]=0;b[y][y]=b[y][y]+1}}for(o*=h,l=x-1;0<=l;l--)for(var O=0;O<50;O++){for(P=!1,c=l;0<=c;c--){if(Math.abs(S[c])<=o){P=!0;break}if(Math.abs(A[c-1])<=o)break}if(!P){for(a=0,p=c-(m=1),y=c;y<l+1&&(u=m*S[y],S[y]=a*S[y],!(Math.abs(u)<=o));y++)if(d=A[y],A[y]=Math.sqrt(u*u+d*d),a=d/(f=A[y]),m=-u/f,e)for(s=0;s<w;s++)g=b[s][p],v=b[s][y],b[s][p]=g*a+v*m,b[s][y]=-g*m+v*a}if(v=A[l],c===l){if(v<0&&(A[l]=-v,r))for(s=0;s<x;s++)I[s][l]=-I[s][l];break}for(h=A[c],u=(((g=A[l-1])-v)*(g+v)+((d=S[l-1])-(f=S[l]))*(d+f))/(2*f*g),d=Math.sqrt(u*u+1),u=((h-v)*(h+v)+f*(g/(u<0?u-d:u+d)-f))/h,y=c+(m=a=1);y<l+1;y++){if(d=S[y],g=A[y],f=m*d,d*=a,v=Math.sqrt(u*u+f*f),u=h*(a=u/(S[y-1]=v))+d*(m=f/v),d=-h*m+d*a,f=g*m,g*=a,r)for(s=0;s<x;s++)h=I[s][y-1],v=I[s][y],I[s][y-1]=h*a+v*m,I[s][y]=-h*m+v*a;if(v=Math.sqrt(u*u+f*f),u=(a=u/(A[y-1]=v))*d+(m=f/v)*g,h=-m*d+a*g,e)for(s=0;s<w;s++)g=b[s][y-1],v=b[s][y],b[s][y-1]=g*a+v*m,b[s][y]=-g*m+v*a}S[c]=0,S[l]=u,A[l]=h}for(y=0;y<x;y++)A[y]<o&&(A[y]=0);return{u:b,q:A,v:I}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var hh=Bc(Ba=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||t;return a._counter=1e3,a._html5AudioPool=[],a.html5PoolSize=10,a._codecs={},a._howls=[],a._muted=!1,a._volume=1,a._canPlayEvent="canplaythrough",a._navigator=typeof window<"u"&&window.navigator?window.navigator:null,a.masterGain=null,a.noAudio=!1,a.usingWebAudio=!0,a.autoSuspend=!0,a.ctx=null,a.autoUnlock=!0,a._setup(),a},volume:function(a){var u=this||t;if(a=parseFloat(a),u.ctx||p(),typeof a<"u"&&a>=0&&a<=1){if(u._volume=a,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return u}return u._volume},mute:function(a){var u=this||t;u.ctx||p(),u._muted=a,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a?0:u._volume,t.ctx.currentTime);for(var d=0;d<u._howls.length;d++)if(!u._howls[d]._webAudio)for(var f=u._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[d]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return u},stop:function(){for(var a=this||t,u=0;u<a._howls.length;u++)a._howls[u].stop();return a},unload:function(){for(var a=this||t,u=a._howls.length-1;u>=0;u--)a._howls[u].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,p()),a},codecs:function(a){return(this||t)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||t;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var u=new Audio;u.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return a}if(!u||typeof u.canPlayType!="function")return a;var d=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,g=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,v=f.match(/Version\/(.*?) /),x=g&&v&&parseInt(v[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:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||t;if(!(a._audioUnlocked||!a.ctx)){a._audioUnlocked=!1,a.autoUnlock=!1,!a._mobileUnloaded&&a.ctx.sampleRate!==44100&&(a._mobileUnloaded=!0,a.unload()),a._scratchBuffer=a.ctx.createBuffer(1,1,22050);var u=function(d){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),g=0;g<h.length;g++){var v=a._howls[m]._soundById(h[g]);v&&v._node&&!v._node._unlocked&&(v._node._unlocked=!0,v._node.load())}a._autoResume();var x=a.ctx.createBufferSource();x.buffer=a._scratchBuffer,x.connect(a.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),x.onended=function(){x.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 w=0;w<a._howls.length;w++)a._howls[w]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),a}},_obtainHtml5Audio:function(){var a=this||t;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var u=new Audio().play();return u&&typeof Promise<"u"&&(u instanceof Promise||typeof u.then=="function")&&u.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var u=this||t;return a._unlocked&&u._html5AudioPool.push(a),u},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<a._howls.length;u++)if(a._howls[u]._webAudio){for(var d=0;d<a._howls[u]._sounds.length;d++)if(!a._howls[u]._sounds[d]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!t.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var u=0;u<a._howls.length;u++)a._howls[u]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var t=new n,e=function(a){var u=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(a)};e.prototype={init:function(a){var u=this;return t.ctx||p(),u._autoplay=a.autoplay||!1,u._format=typeof a.format!="string"?a.format:[a.format],u._html5=a.html5||!1,u._muted=a.mute||!1,u._loop=a.loop||!1,u._pool=a.pool||5,u._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,u._rate=a.rate||1,u._sprite=a.sprite||{},u._src=typeof a.src!="string"?a.src:[a.src],u._volume=a.volume!==void 0?a.volume:1,u._xhr={method:a.xhr&&a.xhr.method?a.xhr.method:"GET",headers:a.xhr&&a.xhr.headers?a.xhr.headers:null,withCredentials:a.xhr&&a.xhr.withCredentials?a.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=a.onend?[{fn:a.onend}]:[],u._onfade=a.onfade?[{fn:a.onfade}]:[],u._onload=a.onload?[{fn:a.onload}]:[],u._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],u._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],u._onpause=a.onpause?[{fn:a.onpause}]:[],u._onplay=a.onplay?[{fn:a.onplay}]:[],u._onstop=a.onstop?[{fn:a.onstop}]:[],u._onmute=a.onmute?[{fn:a.onmute}]:[],u._onvolume=a.onvolume?[{fn:a.onvolume}]:[],u._onrate=a.onrate?[{fn:a.onrate}]:[],u._onseek=a.onseek?[{fn:a.onseek}]:[],u._onunlock=a.onunlock?[{fn:a.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var a=this,u=null;if(t.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var d=0;d<a._src.length;d++){var f,m;if(a._format&&a._format[d])f=a._format[d];else{if(m=a._src[d],typeof m!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&t.codecs(f)){u=a._src[d];break}}if(!u){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=u,a._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new r(a),a._webAudio&&i(a),a},play:function(a,u){var d=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&d._state==="loaded"&&!d._sprite[a])return null;if(typeof a>"u"&&(a="__default",!d._playLock)){for(var m=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(m++,f=d._sounds[h]._id);m===1?a=null:f=null}}var g=f?d._soundById(f):d._inactiveSound();if(!g)return null;if(f&&!a&&(a=g._sprite||"__default"),d._state!=="loaded"){g._sprite=a,g._ended=!1;var v=g._id;return d._queue.push({event:"play",action:function(){d.play(v)}}),v}if(f&&!g._paused)return u||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var x=Math.max(0,g._seek>0?g._seek:d._sprite[a][0]/1e3),w=Math.max(0,(d._sprite[a][0]+d._sprite[a][1])/1e3-x),S=w*1e3/Math.abs(g._rate),b=d._sprite[a][0]/1e3,I=(d._sprite[a][0]+d._sprite[a][1])/1e3;g._sprite=a,g._ended=!1;var _=function(){g._paused=!1,g._seek=x,g._start=b,g._stop=I,g._loop=!!(g._loop||d._sprite[a][2])};if(x>=I){d._ended(g);return}var y=g._node;if(d._webAudio){var P=function(){d._playLock=!1,_(),d._refreshBuffer(g);var L=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(L,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,x,86400):y.bufferSource.noteGrainOn(0,x,w):g._loop?y.bufferSource.start(0,x,86400):y.bufferSource.start(0,x,w),S!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S)),u||setTimeout(function(){d._emit("play",g._id),d._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?P():(d._playLock=!0,d.once("resume",P),d._clearTimer(g._id))}else{var A=function(){y.currentTime=x,y.muted=g._muted||d._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var L=y.play();if(L&&typeof Promise<"u"&&(L instanceof Promise||typeof L.then=="function")?(d._playLock=!0,_(),L.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,_(),d._emit("play",g._id)),y.playbackRate=g._rate,y.paused){d._emit("playerror",g._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}a!=="__default"||g._loop?d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),S):(d._endTimers[g._id]=function(){d._ended(g),y.removeEventListener("ended",d._endTimers[g._id],!1)},y.addEventListener("ended",d._endTimers[g._id],!1))}catch(B){d._emit("playerror",g._id,B)}};y.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(y.src=d._src,y.load());var O=window&&window.ejecta||!y.readyState&&t._navigator.isCocoonJS;if(y.readyState>=3||O)A();else{d._playLock=!0,d._state="loading";var T=function(){d._state="loaded",A(),y.removeEventListener(t._canPlayEvent,T,!1)};y.addEventListener(t._canPlayEvent,T,!1),d._clearTimer(g._id)}}return g._id},pause:function(a){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(a)}}),u;for(var d=u._getSoundIds(a),f=0;f<d.length;f++){u._clearTimer(d[f]);var m=u._soundById(d[f]);if(m&&!m._paused&&(m._seek=u.seek(d[f]),m._rateSeek=0,m._paused=!0,u._stopFade(d[f]),m._node))if(u._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),u._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||u._emit("pause",m?m._id:null)}return u},stop:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(a)}}),d;for(var f=d._getSoundIds(a),m=0;m<f.length;m++){d._clearTimer(f[m]);var h=d._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(f[m]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),u||d._emit("stop",h._id))}return d},mute:function(a,u){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(a,u)}}),d;if(typeof u>"u")if(typeof a=="boolean")d._muted=a;else return d._muted;for(var f=d._getSoundIds(u),m=0;m<f.length;m++){var h=d._soundById(f[m]);h&&(h._muted=a,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:a),d._emit("mute",h._id))}return d},volume:function(){var a=this,u=arguments,d,f;if(u.length===0)return a._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length>=2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var g;if(typeof d<"u"&&d>=0&&d<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,u)}}),a;typeof f>"u"&&(a._volume=d),f=a._getSoundIds(f);for(var v=0;v<f.length;v++)g=a._soundById(f[v]),g&&(g._volume=d,u[2]||a._stopFade(f[v]),a._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),a._emit("volume",g._id))}else return g=f?a._soundById(f):a._sounds[0],g?g._volume:0;return a},fade:function(a,u,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,u,d,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),1),d=parseFloat(d),m.volume(a,f);for(var h=m._getSoundIds(f),g=0;g<h.length;g++){var v=m._soundById(h[g]);if(v){if(f||m._stopFade(h[g]),m._webAudio&&!v._muted){var x=t.ctx.currentTime,w=x+d/1e3;v._volume=a,v._node.gain.setValueAtTime(a,x),v._node.gain.linearRampToValueAtTime(u,w)}m._startFadeInterval(v,a,u,d,h[g],typeof f>"u")}}return m},_startFadeInterval:function(a,u,d,f,m,h){var g=this,v=u,x=d-u,w=Math.abs(x/.01),S=Math.max(4,w>0?f/w:f),b=Date.now();a._fadeTo=d,a._interval=setInterval(function(){var I=(Date.now()-b)/f;b=Date.now(),v+=x*I,v=Math.round(v*100)/100,x<0?v=Math.max(d,v):v=Math.min(d,v),g._webAudio?a._volume=v:g.volume(v,a._id,!0),h&&(g._volume=v),(d<u&&v<=d||d>u&&v>=d)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,g.volume(d,a._id),g._emit("fade",a._id))},S)},_stopFade:function(a){var u=this,d=u._soundById(a);return d&&d._interval&&(u._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,u.volume(d._fadeTo,a),d._fadeTo=null,u._emit("fade",a)),u},loop:function(){var a=this,u=arguments,d,f,m;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")d=u[0],a._loop=d;else return m=a._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(d=u[0],f=parseInt(u[1],10));for(var h=a._getSoundIds(f),g=0;g<h.length;g++)m=a._soundById(h[g]),m&&(m._loop=d,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=d,d&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[g])&&(a.pause(h[g],!0),a.play(h[g],!0)))));return a},rate:function(){var a=this,u=arguments,d,f;if(u.length===0)f=a._sounds[0]._id;else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):d=parseFloat(u[0])}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));var g;if(typeof d=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,u)}}),a;typeof f>"u"&&(a._rate=d),f=a._getSoundIds(f);for(var v=0;v<f.length;v++)if(g=a._soundById(f[v]),g){a.playing(f[v])&&(g._rateSeek=a.seek(f[v]),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 x=a.seek(f[v]),w=(a._sprite[g._sprite][0]+a._sprite[g._sprite][1])/1e3-x,S=w*1e3/Math.abs(g._rate);(a._endTimers[f[v]]||!g._paused)&&(a._clearTimer(f[v]),a._endTimers[f[v]]=setTimeout(a._ended.bind(a,g),S)),a._emit("rate",g._id)}}else return g=a._soundById(f),g?g._rate:a._rate;return a},seek:function(){var a=this,u=arguments,d,f;if(u.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(u.length===1){var m=a._getSoundIds(),h=m.indexOf(u[0]);h>=0?f=parseInt(u[0],10):a._sounds.length&&(f=a._sounds[0]._id,d=parseFloat(u[0]))}else u.length===2&&(d=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"u")return 0;if(typeof d=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,u)}}),a;var g=a._soundById(f);if(g)if(typeof d=="number"&&d>=0){var v=a.playing(f);v&&a.pause(f,!0),g._seek=d,g._ended=!1,a._clearTimer(f),!a._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var x=function(){v&&a.play(f,!0),a._emit("seek",f)};if(v&&!a._webAudio){var w=function(){a._playLock?setTimeout(w,0):x()};setTimeout(w,0)}else x()}else if(a._webAudio){var S=a.playing(f)?t.ctx.currentTime-g._playStart:0,b=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(b+S*Math.abs(g._rate))}else return g._node.currentTime;return a},playing:function(a){var u=this;if(typeof a=="number"){var d=u._soundById(a);return d?!d._paused:!1}for(var f=0;f<u._sounds.length;f++)if(!u._sounds[f]._paused)return!0;return!1},duration:function(a){var u=this,d=u._duration,f=u._soundById(a);return f&&(d=u._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var a=this,u=a._sounds,d=0;d<u.length;d++)u[d]._paused||a.stop(u[d]._id),a._webAudio||(a._clearSound(u[d]._node),u[d]._node.removeEventListener("error",u[d]._errorFn,!1),u[d]._node.removeEventListener(t._canPlayEvent,u[d]._loadFn,!1),u[d]._node.removeEventListener("ended",u[d]._endFn,!1),t._releaseHtml5Audio(u[d]._node)),delete u[d]._node,a._clearTimer(u[d]._id);var f=t._howls.indexOf(a);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===a._src||a._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],t.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,u,d,f){var m=this,h=m["_on"+a];return typeof u=="function"&&h.push(f?{id:d,fn:u,once:f}:{id:d,fn:u}),m},off:function(a,u,d){var f=this,m=f["_on"+a],h=0;if(typeof u=="number"&&(d=u,u=null),u||d)for(h=0;h<m.length;h++){var g=d===m[h].id;if(u===m[h].fn&&g||!u&&g){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var v=Object.keys(f);for(h=0;h<v.length;h++)v[h].indexOf("_on")===0&&Array.isArray(f[v[h]])&&(f[v[h]]=[])}return f},once:function(a,u,d){var f=this;return f.on(a,u,d,1),f},_emit:function(a,u,d){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||a==="load")&&(setTimeout(function(g){g.call(this,u,d)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var u=this;if(u._queue.length>0){var d=u._queue[0];d.event===a&&(u._queue.shift(),u._loadQueue()),a||d.action()}return u},_ended:function(a){var u=this,d=a._sprite;if(!u._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(u._ended.bind(u,a),100),u;var f=!!(a._loop||u._sprite[d][2]);if(u._emit("end",a._id),!u._webAudio&&f&&u.stop(a._id,!0).play(a._id),u._webAudio&&f){u._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=t.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);u._endTimers[a._id]=setTimeout(u._ended.bind(u,a),m)}return u._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,u._clearTimer(a._id),u._cleanBuffer(a._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(a._id,!0),u},_clearTimer:function(a){var u=this;if(u._endTimers[a]){if(typeof u._endTimers[a]!="function")clearTimeout(u._endTimers[a]);else{var d=u._soundById(a);d&&d._node&&d._node.removeEventListener("ended",u._endTimers[a],!1)}delete u._endTimers[a]}return u},_soundById:function(a){for(var u=this,d=0;d<u._sounds.length;d++)if(a===u._sounds[d]._id)return u._sounds[d];return null},_inactiveSound:function(){var a=this;a._drain();for(var u=0;u<a._sounds.length;u++)if(a._sounds[u]._ended)return a._sounds[u].reset();return new r(a)},_drain:function(){var a=this,u=a._pool,d=0,f=0;if(!(a._sounds.length<u)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&d++;for(f=a._sounds.length-1;f>=0;f--){if(d<=u)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),d--)}}},_getSoundIds:function(a){var u=this;if(typeof a>"u"){for(var d=[],f=0;f<u._sounds.length;f++)d.push(u._sounds[f]._id);return d}else return[a]},_refreshBuffer:function(a){var u=this;return a._node.bufferSource=t.ctx.createBufferSource(),a._node.bufferSource.buffer=o[u._src],a._panner?a._node.bufferSource.connect(a._panner):a._node.bufferSource.connect(a._node),a._node.bufferSource.loop=a._loop,a._loop&&(a._node.bufferSource.loopStart=a._start||0,a._node.bufferSource.loopEnd=a._stop||0),a._node.bufferSource.playbackRate.setValueAtTime(a._rate,t.ctx.currentTime),u},_cleanBuffer:function(a){var u=this,d=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),d))try{a.bufferSource.buffer=t._scratchBuffer}catch{}return a.bufferSource=null,u},_clearSound:function(a){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(a){this._parent=a,this.init()};r.prototype={init:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,u._sounds.push(a),a.create(),a},create:function(){var a=this,u=a._parent,d=t._muted||a._muted||a._parent._muted?0:a._volume;return u._webAudio?(a._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),a._node.gain.setValueAtTime(d,t.ctx.currentTime),a._node.paused=!0,a._node.connect(t.masterGain)):t.noAudio||(a._node=t._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(t._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=u._src,a._node.preload=u._preload===!0?"auto":u._preload,a._node.volume=d*t.volume(),a._node.load()),a},reset:function(){var a=this,u=a._parent;return a._muted=u._muted,a._loop=u._loop,a._volume=u._volume,a._rate=u._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,a},_errorListener:function(){var a=this;a._parent._emit("loaderror",a._id,a._node.error?a._node.error.code:0),a._node.removeEventListener("error",a._errorFn,!1)},_loadListener:function(){var a=this,u=a._parent;u._duration=Math.ceil(a._node.duration*10)/10,Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue()),a._node.removeEventListener(t._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,u=a._parent;u._duration===1/0&&(u._duration=Math.ceil(a._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var u=a._src;if(o[u]){a._duration=o[u].duration,c(a);return}if(/^data:[^;]+;base64,/.test(u)){for(var d=atob(u.split(",")[1]),f=new Uint8Array(d.length),m=0;m<d.length;++m)f[m]=d.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,u,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(g){h.setRequestHeader(g,a._xhr.headers[g])}),h.onload=function(){var g=(h.status+"")[0];if(g!=="0"&&g!=="2"&&g!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[u],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,u){var d=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,m)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(a).then(f).catch(d):t.ctx.decodeAudioData(a,f,d)},c=function(a,u){u&&!a._duration&&(a._duration=u.duration),Object.keys(a._sprite).length===0&&(a._sprite={__default:[0,a._duration*1e3]}),a._state!=="loaded"&&(a._state="loaded",a._emit("load"),a._loadQueue())},p=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=u?parseInt(u[1],10):null;if(a&&d&&d<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof Ba<"u"&&(Ba.Howler=t,Ba.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)}})()});import{FileLoader as iT,Loader as sT}from"three";var Ce=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,Ce.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,Ce.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,Ce.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Gn(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"&&Gn(r)}return Object.freeze(n)}function Gc(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 wo=class extends Error{};var me=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,me.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Gn(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,me.prototype);let r=e;return Rc()||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)}return null}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 $t(0,r,r);{let i=o[0].fi;return $t(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 $t(l,l+r,r)}else return $t(i.fi,s.fi,r)}}};function $t(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 Rn(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 Rc(){return typeof process<"u"}function Fa(n){return typeof n!="object"||Rn(n)||za(n)}function Vn(n){return Fa(n)||n instanceof me||n instanceof Me||n instanceof Ce}function za(n){return Array.isArray(n)&&n.every(t=>typeof t!="object")}function Vc(n,t){for(let e of n)t(e.id,e.data)!==!0&&Vc(e.children,t)}function Fc(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Fc(e,t)}var Me=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Me.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Gn(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)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!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&&Fc(o,r)}}traverse(e){Vc(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,Me.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)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:l}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=r,p=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return p=[...p,a],p.sort((d,f)=>d.fi-f.fi),e.localIndex=p.indexOf(a),{data:this.modifyArrayBy(c,p),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(p=>p.id===r);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new wo("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),p=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(p,1)[0],u=this.modifyArrayBy(s,c);s=r,c=u.childrenArray(s);let d=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),u=u.modifyArrayBy(s,c),{data:u,actual:e,reverse:{type:9,parent:l,fi:d,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Gc(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 $t(0,o,o);{let s=i[0].fi;return $t(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 $t(c,c+o,o)}else return $t(s.fi,l.fi,o)}}};var _o;(t=>{function n(e,r){if(r.type!==0)return null;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})(_o||(_o={}));var To=class{unusedFun(t){}},vt=class{unusedFun(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r instanceof Me||r instanceof me)return null;o+=1}r={...r};for(let[c,p]of Object.entries(t.props)){let a=r[c];i[c]=a,p===void 0?delete r[c]:r[c]=p}for(;o>0;)Object.keys(r).length===0?(r={...e[o-1]},delete r[t.path[o-1]]):r={...e[o-1],[t.path[o-1]]:r},o-=1;let s=Object.setPrototypeOf(r,vt.prototype),l={...t,props:i};return{data:s,actual:t,reverse:l}}},zc;(r=>{function n(o,i){return Ao(o,i)??o}r.apply=n;function t(o,i){return jc(o,i)}r.merge=t;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=vr.zoomOnce(c,l[s]),c instanceof Me||c instanceof me)return;s+=1}if(c===void 0)return i;if(Vn(c))return;if(i.type===0)if(c&&typeof c=="object"){let p={...i.props};for(let a of Object.keys(c))delete p[a];return{...i,props:p}}else return;else if(i.type===1||i.type===4||i.type===7)if(typeof c=="object"){let p={...i.data,...c};return{...i,data:p}}else return;else return i}r.filterOp=e})(zc||(zc={}));function Uc(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=Ao(o.data,t[i]);e=e||s!==void 0,s===void 0&&(s=o.data);let l=Uc(o.children,t);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}});if(e)return r}function Hh(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=Ao(o.data,t[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Ao(n,t){if(Vn(t))return t;if(n instanceof Me){let e=Uc(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof me)return Hh(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let s=Ao(o,t[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let s=Ao(i,t[o]);r=r||s!==void 0,s===void 0&&(s=i),e[o]=s}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}else return n==null&&(Vn(t)||t instanceof To)?t??n:n}}function jc(n,t){if(n===void 0)return t;if(t===void 0)return n;if(Vn(t)||Fa(n))return t;if(n instanceof Me||n instanceof me)return Ao(n,t);if(typeof n=="object"&&typeof t=="object"){let e=new Set;if(n)for(let o of Object.keys(n))e.add(o);if(t)for(let o of Object.keys(t))e.add(o);let r={};for(let o of e){let i=jc(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}else return n}function kc(n,t){let e={cur:[],result:[],len:0};return n=Fn(n,t,e)??n,[n,e.result]}function Wi(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function qi(n){n&&(n.len-=1)}function Wh(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Hc(n,t,e){let r=!1,o=n.map(i=>{let s=i.id,l=t[s];if(l!==void 0&&typeof l=="string"&&(r=!0,s=l,e!==null))throw new Error("not supported");let c=Fn(i.data,t,Wi(e,s));qi(e),r=r||c!==void 0,c===void 0&&(c=i.data);let p=Hc(i.children,t,e);return p!==void 0?r=!0:p=i.children,{...i,id:s,data:c,children:p}});if(r)return o}function qh(n,t,e){let r=!1,o=n.map(i=>{let s=i.id,l=t[s];if(l!==void 0&&typeof l=="string"&&(r=!0,s=l,e!==null))throw new Error("not supported");let c=Fn(i.data,t,Wi(e,s));return qi(e),r=r||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Fn(n,t,e){if(n instanceof Me){let r=Hc(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof me)return qh(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,s)=>{let l=Fn(i,t,Wi(e,s));return qi(e),r=r||l!==void 0,l===void 0&&(l=i),l});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"){let r={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=t[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=Fn(s,t,Wi(e,i));qi(e),o=o||c!==void 0,c===void 0&&(c=s),r[i]=c}else r[i]=s;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];if(r!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");Wh(e)}return r}else return}}var Wc;(t=>{function n(e,r){let o=vr.zoom(r,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}t.replaceProps=n})(Wc||(Wc={}));var Mr;(l=>{function n(c,p){return{...c,path:c.path.slice(p)}}l.drop=n;function t(c,p){return e(c,p)?.data??c}l.applySimple=t;function e(c,p){let a=p.path;for(var u=[];;){let d;if(c instanceof vt&&p.type===0&&(d=c.runOp({...p,path:a.slice(u.length)}),d===null&&(d=void 0)),u.length===a.length&&(c instanceof Me||c instanceof me||c instanceof Ce?d=c.runOp(p):d=_o.runOp(c,p)),d!==void 0)if(d!==null){let h=d.data;for(let g=u.length-1;g>=0;g--){let v=a[g],x=u[g];if(x instanceof Me){if(typeof v=="number")throw new Error("illegal arg");h=x.modifyById(v,h)}else if(x instanceof me){if(typeof v=="number")throw new Error("illegal arg");h=x.modifyById(v,h)}else if(x instanceof Ce){if(typeof v=="number")throw new Error("illegal arg");h=x.modifyById(v,h)}else if(x instanceof vt){let w={...x,[v]:h};h=Object.setPrototypeOf(w,vt.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof v=="string"&&(v=parseInt(v),isNaN(v)))throw new Error("Invalid path");let w=h;h=[...x],h[v]=w}else h={...x,[v]:h};else return null}return{data:h,actual:{...d.actual,path:a},reverse:{...d.reverse,path:a}}}else return null;let f=a[u.length],m;if(c instanceof Me){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof me){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)u.push(c),c=m;else return null}}l.apply=e;function r(c,p){for(let a=0;a<c.length&&a<p.length;a++)if(c[a]!==p[a])return!0;return!1}l.pathDisjoint=r;function o(c,p){if(c.length!==p.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==p[a])return!1;return!0}l.pathEq=o;function i(c,p){return r(c.path,p.path)}l.commutative=i;function s(c,p){return c.type===0&&p.type===0&&o(c.path,p.path)?Object.keys(c.props).every(a=>p.props[a]!==void 0):!1}l.subsumed=s})(Mr||(Mr={}));var qc;(c=>{function n(){return[]}c.empty=n;function t(p,a){let u=[];for(let d of p){let[f,...m]=d.path;f===a&&u.push({...d,path:m})}return u}c.removePrefix=t;function e(p,a){return p.map(u=>({...u,path:[a,...u.path]}))}c.addPrefix=e;function r(p,a){return[...p,...a]}c.concat=r;function o(p,a){return[...p.filter(d=>!a.some(f=>Mr.subsumed(d,f))),...a]}c.compress=o;function i(p,a){return p.every(u=>a.every(d=>Mr.commutative(u,d)))}c.commutative=i;function s(p,a){for(let u of a){let d=l(p,u);d!==null&&(p=d.data)}return p}c.applyAll=s;function l(p,a){var u=p;let d=[],f=[];for(let m of a)try{if(m.type===3){let h=vr.zoom(u,[...m.path,m.id]),g=Mr.apply(u,{...m,type:2});if(g!==null){u=g.data;let[v,x]=kc(u,{[m.id]:h});u=v;for(let w of x){let S=w[w.length-1];w.splice(w.length-1,1),d.push({type:0,path:w,props:{[S]:h}}),f.push({type:0,path:w,props:{[S]:m.id}})}f.push(g.reverse),d.push(g.actual)}}else{let h=Mr.apply(u,m);h!==null&&(d.push(h.actual),u=h.data,f.push(h.reverse))}}catch(h){if(h instanceof wo)return null;throw h}return{data:u,actual:d,reverse:f.reverse()}}c.apply=l})(qc||(qc={}));var $c=Symbol(),zn=Symbol(),to=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof Xi);){let s=o._path,l=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,l)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[zn];r&&r(),delete this._children[t]}}}},ja=class extends to{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,_o.runOp(this._current,t),t.path)}},ka=class extends to{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,Ce.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Xc={get(n,t){if(t===zn)return()=>{n._parent=null};if(t===$c)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=Yi(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]}}},$h={...Xc,set(n,t,e){let r={type:0,props:{[t]:ut(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}},Xh={...Xc,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}},No=class extends to{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[zn]=()=>{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=Yi(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)}},$i=class extends to{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r,this[zn]=()=>{this._parent=null}}feedOp(t){let{path:e,...r}=t;this.reportOp(r,Mr.apply(this._current,t),e)}},Io=class extends to{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[zn]=()=>{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,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(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=Yi(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 Ua(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&vr.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var Xi=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){Ua(this.ts,e,t),Ua(this.actual,r,t),Ua(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Yi(n,t,e){return e instanceof Me?new No(n,t,e):e instanceof me?new Io(n,t,e):e instanceof vt?new $i(n,t,e):e instanceof Ce?new Proxy(new ka(n,t,e),Xh):e!==null&&typeof e=="object"?Rn(e)||za(e)?e:new Proxy(new ja(n,t,e),$h):e}function Ha(n){let t=new Xi(n);return[Yi(t,"",n),t]}function Wa(n,t){let[e,r]=Ha(n);return t(e),r.result()}function ut(n){return n instanceof No||n instanceof Io||n instanceof $i?n._current:n!==null&&typeof n=="object"?n[$c]:n}var vr;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function t(i,s,l){let c=r(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let p={...s};return Object.keys(c).forEach(a=>{delete p[a]}),p}else return s}o.removeOverridden=t;function e(i,s){if((i instanceof Me||i instanceof No)&&typeof s=="string")return i.data(s);if((i instanceof me||i instanceof Io)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function r(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=r})(vr||(vr={}));var Ki=class{},Un=class extends Ki{constructor(e){super();this.id=e}},jn=class extends Ki{constructor(e){super();this.data=e}};var $a;try{$a=new TextDecoder}catch{}var oe,Br,N=0;var ru=[],Xa=ru,Ya=0,pt={},be,Er,At=0,Xt=0,bt,br,st=[],Ae,Yc={useRecords:!1,mapsAsObjects:!0},kn=class{},Qa=new kn;Qa.name="MessagePack 0xC1";var Po=!1,Yt=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(oe)return au(()=>(Zi(),this?this.unpack(t,e):Yt.prototype.unpack.call(Yc,t,e)));Br=e>-1?e:t.length,N=0,Ya=0,Xt=0,Er=null,Xa=ru,bt=null,oe=t;try{Ae=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw oe=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 Yt){if(pt=this,this.structures)return be=this.structures,Qi();(!be||be.length>0)&&(be=[])}else pt=Yc,(!be||be.length>0)&&(be=[]);return Qi()}unpackMultiple(t,e){let r,o=0;try{Po=!0;let i=t.length,s=this?this.unpack(t,i):ts.unpack(t,i);if(e){for(e(s);N<i;)if(o=N,e(Qi())===!1)return}else{for(r=[s];N<i;)o=N,r.push(Qi());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Po=!1,Zi()}}_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 Qi(){try{if(!pt.trusted&&!Po){let t=be.sharedLength||0;t<be.length&&(be.length=t)}let n=Be();if(N==Br)be.restoreStructures&&Kc(),be=null,oe=null,br&&(br=null);else if(N>Br){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Po)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw be.restoreStructures&&Kc(),Zi(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Kc(){for(let n in be.restoreStructures)be[n]=be.restoreStructures[n];be.restoreStructures=null}function Be(){let n=oe[N++];if(n<160)if(n<128){if(n<64)return n;{let t=be[n&63]||pt.getStructures&&ou()[n&63];return t?(t.read||(t.read=Za(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,pt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[iu()]=Be();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Be(),Be());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Be();return t}else if(n<192){let t=n-160;if(Xt>=N)return Er.slice(N-At,(N+=t)-At);if(Xt==0&&Br<140){let e=t<16?Ja(t):nu(t);if(e!=null)return e}return Ka(t)}else{let t;switch(n){case 192:return null;case 193:return bt?(t=Be(),t>0?bt[1].slice(bt.position1,bt.position1+=t):bt[0].slice(bt.position0,bt.position0-=t)):Qa;case 194:return!1;case 195:return!0;case 196:return qa(oe[N++]);case 197:return t=Ae.getUint16(N),N+=2,qa(t);case 198:return t=Ae.getUint32(N),N+=4,qa(t);case 199:return ro(oe[N++]);case 200:return t=Ae.getUint16(N),N+=2,ro(t);case 201:return t=Ae.getUint32(N),N+=4,ro(t);case 202:if(t=Ae.getFloat32(N),pt.useFloat32>2){let e=es[(oe[N]&127)<<1|oe[N+1]>>7];return N+=4,(e*t+(t>0?.5:-.5)>>0)/e}return N+=4,t;case 203:return t=Ae.getFloat64(N),N+=8,t;case 204:return oe[N++];case 205:return t=Ae.getUint16(N),N+=2,t;case 206:return t=Ae.getUint32(N),N+=4,t;case 207:return pt.int64AsNumber?(t=Ae.getUint32(N)*4294967296,t+=Ae.getUint32(N+4)):t=Ae.getBigUint64(N),N+=8,t;case 208:return Ae.getInt8(N++);case 209:return t=Ae.getInt16(N),N+=2,t;case 210:return t=Ae.getInt32(N),N+=4,t;case 211:return pt.int64AsNumber?(t=Ae.getInt32(N)*4294967296,t+=Ae.getUint32(N+4)):t=Ae.getBigInt64(N),N+=8,t;case 212:if(t=oe[N++],t==114)return tu(oe[N++]&63);{let e=st[t];if(e)return e.read?(N++,e.read(Be())):e.noBuffer?(N++,e()):e(oe.subarray(N,++N));throw new Error("Unknown extension "+t)}case 213:return t=oe[N],t==114?(N++,tu(oe[N++]&63,oe[N++])):ro(2);case 214:return ro(4);case 215:return ro(8);case 216:return ro(16);case 217:return t=oe[N++],Xt>=N?Er.slice(N-At,(N+=t)-At):Kh(t);case 218:return t=Ae.getUint16(N),N+=2,Xt>=N?Er.slice(N-At,(N+=t)-At):Qh(t);case 219:return t=Ae.getUint32(N),N+=4,Xt>=N?Er.slice(N-At,(N+=t)-At):Zh(t);case 220:return t=Ae.getUint16(N),N+=2,Zc(t);case 221:return t=Ae.getUint32(N),N+=4,Zc(t);case 222:return t=Ae.getUint16(N),N+=2,Jc(t);case 223:return t=Ae.getUint32(N),N+=4,Jc(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 Yh=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Za(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>Yh.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Be);return n.highByte===0&&(n.read=Qc(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Be()}return r}return e.count=0,n.highByte===0?Qc(t,e):e}var Qc=(n,t)=>function(){let e=oe[N++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=be[r]||ou()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Za(o,n)),o.read()};function ou(){let n=au(()=>(oe=null,pt.getStructures()));return be=pt._mergeStructures(n,be)}var Ka=Ji,Kh=Ji,Qh=Ji,Zh=Ji;function Ji(n){let t;if(n<16&&(t=Ja(n)))return t;if(n>64&&$a)return $a.decode(oe.subarray(N,N+=n));let e=N+n,r=[];for(t="";N<e;){let o=oe[N++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=oe[N++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=oe[N++]&63,s=oe[N++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=oe[N++]&63,s=oe[N++]&63,l=oe[N++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|c&1023),r.push(c)}else r.push(o);r.length>=4096&&(t+=qe.apply(String,r),r.length=0)}return r.length>0&&(t+=qe.apply(String,r)),t}function Zc(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Be();return t}function Jc(n){if(pt.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[iu()]=Be();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Be(),Be());return t}}var qe=String.fromCharCode;function nu(n){let t=N,e=new Array(n);for(let r=0;r<n;r++){let o=oe[N++];if((o&128)>0){N=t;return}e[r]=o}return qe.apply(String,e)}function Ja(n){if(n<4)if(n<2){if(n===0)return"";{let t=oe[N++];if((t&128)>1){N-=1;return}return qe(t)}}else{let t=oe[N++],e=oe[N++];if((t&128)>0||(e&128)>0){N-=2;return}if(n<3)return qe(t,e);let r=oe[N++];if((r&128)>0){N-=3;return}return qe(t,e,r)}else{let t=oe[N++],e=oe[N++],r=oe[N++],o=oe[N++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return qe(t,e,r,o);{let i=oe[N++];if((i&128)>0){N-=5;return}return qe(t,e,r,o,i)}}else if(n<8){let i=oe[N++],s=oe[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return qe(t,e,r,o,i,s);let l=oe[N++];if((l&128)>0){N-=7;return}return qe(t,e,r,o,i,s,l)}else{let i=oe[N++],s=oe[N++],l=oe[N++],c=oe[N++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){N-=8;return}if(n<10){if(n===8)return qe(t,e,r,o,i,s,l,c);{let p=oe[N++];if((p&128)>0){N-=9;return}return qe(t,e,r,o,i,s,l,c,p)}}else if(n<12){let p=oe[N++],a=oe[N++];if((p&128)>0||(a&128)>0){N-=10;return}if(n<11)return qe(t,e,r,o,i,s,l,c,p,a);let u=oe[N++];if((u&128)>0){N-=11;return}return qe(t,e,r,o,i,s,l,c,p,a,u)}else{let p=oe[N++],a=oe[N++],u=oe[N++],d=oe[N++];if((p&128)>0||(a&128)>0||(u&128)>0||(d&128)>0){N-=12;return}if(n<14){if(n===12)return qe(t,e,r,o,i,s,l,c,p,a,u,d);{let f=oe[N++];if((f&128)>0){N-=13;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f)}}else{let f=oe[N++],m=oe[N++];if((f&128)>0||(m&128)>0){N-=14;return}if(n<15)return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m);let h=oe[N++];if((h&128)>0){N-=15;return}return qe(t,e,r,o,i,s,l,c,p,a,u,d,f,m,h)}}}}}function qa(n){return pt.copyBuffers?Uint8Array.prototype.slice.call(oe,N,N+=n):oe.subarray(N,N+=n)}function ro(n){let t=oe[N++];if(st[t])return st[t](oe.subarray(N,N+=n));throw new Error("Unknown extension type "+t)}var eu=new Array(4096);function iu(){let n=oe[N++];if(n>=160&&n<192){if(n=n-160,Xt>=N)return Er.slice(N-At,(N+=n)-At);if(!(Xt==0&&Br<180))return Ka(n)}else return N--,Be();let t=(n<<5^(n>1?Ae.getUint16(N):n>0?oe[N]:0))&4095,e=eu[t],r=N,o=N+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ae.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=oe[r++],i!=e[s++]){r=1879048192;break}if(r===o)return N=r,e.string;o-=3,r=N}for(e=[],eu[t]=e,e.bytes=n;r<o;)i=Ae.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=oe[r++],e.push(i);let l=n<16?Ja(n):nu(n);return l!=null?e.string=l:e.string=Ka(n)}var tu=(n,t)=>{var e=Be();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=be[n];return o&&o.isShared&&((be.restoreStructures||(be.restoreStructures=[]))[n]=o),be[n]=e,e.read=Za(e,r),e.read()},su=typeof self=="object"?self:global;st[0]=()=>{};st[0].noBuffer=!0;st[101]=()=>{let n=Be();return(su[n[0]]||Error)(n[1])};st[105]=n=>{let t=Ae.getUint32(N-4);br||(br=new Map);let e=oe[N],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};br.set(t,o);let i=Be();return o.used?Object.assign(r,i):(o.target=i,i)};st[112]=n=>{let t=Ae.getUint32(N-4),e=br.get(t);return e.used=!0,e.target};st[115]=()=>new Set(Be());var el=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");st[116]=n=>{let t=n[0],e=el[t];if(!e)throw new Error("Could not find typed array for code "+t);return new su[e](Uint8Array.prototype.slice.call(n,1).buffer)};st[120]=()=>{let n=Be();return new RegExp(n[0],n[1])};st[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=t-4,bt=[Be(),Be()],bt.position0=0,bt.position1=0;let r=N;N=e;try{return Be()}finally{N=r}};st[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 au(n){let t=Br,e=N,r=Ya,o=At,i=Xt,s=Er,l=Xa,c=br,p=bt,a=new Uint8Array(oe.slice(0,Br)),u=be,d=be.slice(0,be.length),f=pt,m=Po,h=n();return Br=t,N=e,Ya=r,At=o,Xt=i,Er=s,Xa=l,br=c,bt=p,oe=a,Po=m,be=u,be.splice(0,be.length,...d),pt=f,Ae=new DataView(oe.buffer,oe.byteOffset,oe.byteLength),h}function Zi(){oe=null,br=null,be=null}function lu(n){n.unpack?st[n.type]=n.unpack:st[n.type]=n}var es=new Array(147);for(let n=0;n<256;n++)es[n]=+("1e"+Math.floor(45.15-n*.30103));var ts=new Yt({useRecords:!1}),Jh=ts.unpack,eg=ts.unpackMultiple,tg=ts.unpack,rs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},rg=new Float32Array(1),dA=new Uint8Array(rg.buffer,0,4);var os;try{os=new TextEncoder}catch{}var ns,rl,is=typeof Buffer<"u",tl=is?Buffer.allocUnsafeSlow:Uint8Array,du=is?Buffer:Uint8Array,cu=is?4294967296:2144337920,G,Re,C=0,Kt,Qt=null,og=/[\u0080-\uFFFF]/,Hn=Symbol("record-id"),oo=class extends Yt{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,p=du.prototype.utf8Write?function(y,P,A){return G.utf8Write(y,P,A)}:os&&os.encodeInto?function(y,P){return os.encodeInto(y,G.subarray(P)).written}:!1,a=this;t||(t={});let u=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=d?32:64),u&&!t.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,g=f+64,v=f+m+64;if(v>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],w=0,S=0;this.pack=this.encode=function(y,P){if(G||(G=new tl(8192),Re=new DataView(G.buffer,0,8192),C=0),Kt=G.length-10,Kt-C<2048?(G=new tl(G.length),Re=new DataView(G.buffer,0,G.length),Kt=G.length-10,C=0):C=C+7&2147483640,r=C,l=a.structuredClone?new Map:null,a.bundleStrings?(Qt=["",""],G[C++]=214,G[C++]=98,Qt.position=C-r,C+=4):Qt=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let A=o.sharedLength||0;if(A>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let O=0;O<A;O++){let T=o[O];if(!T)continue;let L,B=o.transitions;for(let j=0,te=T.length;j<te;j++){let ne=T[j];L=B[ne],L||(L=B[ne]=Object.create(null)),B=L}B[Hn]=O+64}c=A}u||(o.nextId=A+64)}i&&(i=!1),s=o||[];try{if(b(y),Qt){Re.setUint32(Qt.position+r,C-Qt.position-r);let A=Qt;Qt=null,b(A[0]),b(A[1])}if(a.offset=C,l&&l.idsToInsert){C+=l.idsToInsert.length*6,C>Kt&&_(C),a.offset=C;let A=ig(G.subarray(r,C),l.idsToInsert);return l=null,A}return P&mu?(G.start=r,G.end=C,G):G.subarray(r,C)}finally{if(o){if(S<10&&S++,w>1e4)o.transitions=null,S=0,w=0,x.length>0&&(x=[]);else if(x.length>0&&!u){for(let A=0,O=x.length;A<O;A++)x[A][Hn]=0;x=[]}if(i&&a.saveStructures){let A=o.sharedLength||f;o.length>A&&(o=o.slice(0,A));let O=G.subarray(r,C);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(y)):(c=A,O)}}P&dg&&(C=r)}};let b=y=>{C>Kt&&(G=_(C));var P=typeof y,A;if(P==="string"){let O=y.length;if(Qt&&O>=8&&O<4096){let B=og.test(y);Qt[B?0:1]+=y,G[C++]=193,b(B?-O:O);return}let T;O<32?T=1:O<256?T=2:O<65536?T=3:T=5;let L=O*3;if(C+L>Kt&&(G=_(C+L)),O<64||!p){let B,j,te,ne=C+T;for(B=0;B<O;B++)j=y.charCodeAt(B),j<128?G[ne++]=j:j<2048?(G[ne++]=j>>6|192,G[ne++]=j&63|128):(j&64512)===55296&&((te=y.charCodeAt(B+1))&64512)===56320?(j=65536+((j&1023)<<10)+(te&1023),B++,G[ne++]=j>>18|240,G[ne++]=j>>12&63|128,G[ne++]=j>>6&63|128,G[ne++]=j&63|128):(G[ne++]=j>>12|224,G[ne++]=j>>6&63|128,G[ne++]=j&63|128);A=ne-C-T}else A=p(y,C+T,L);A<32?G[C++]=160|A:A<256?(T<2&&G.copyWithin(C+2,C+1,C+1+A),G[C++]=217,G[C++]=A):A<65536?(T<3&&G.copyWithin(C+3,C+2,C+2+A),G[C++]=218,G[C++]=A>>8,G[C++]=A&255):(T<5&&G.copyWithin(C+5,C+3,C+3+A),G[C++]=219,Re.setUint32(C,A),C+=4),C+=A}else if(P==="number")if(y>>>0===y)y<64?G[C++]=y:y<256?(G[C++]=204,G[C++]=y):y<65536?(G[C++]=205,G[C++]=y>>8,G[C++]=y&255):(G[C++]=206,Re.setUint32(C,y),C+=4);else if(y>>0===y)y>=-32?G[C++]=256+y:y>=-128?(G[C++]=208,G[C++]=y+256):y>=-32768?(G[C++]=209,Re.setInt16(C,y),C+=2):(G[C++]=210,Re.setInt32(C,y),C+=4);else{let O;if((O=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){G[C++]=202,Re.setFloat32(C,y);let T;if(O<4||(T=y*es[(G[C]&127)<<1|G[C+1]>>7])>>0===T){C+=4;return}else C--}G[C++]=203,Re.setFloat64(C,y),C+=8}else if(P==="object")if(!y)G[C++]=192;else{if(l){let T=l.get(y);if(T){if(!T.id){let L=l.idsToInsert||(l.idsToInsert=[]);T.id=L.push(T)}G[C++]=214,G[C++]=112,Re.setUint32(C,T.id),C+=4;return}else l.set(y,{offset:C-r})}let O=y.constructor;if(O===Object)I(y,!0);else if(O===Array){A=y.length,A<16?G[C++]=144|A:A<65536?(G[C++]=220,G[C++]=A>>8,G[C++]=A&255):(G[C++]=221,Re.setUint32(C,A),C+=4);for(let T=0;T<A;T++)b(y[T])}else if(O===Map){A=y.size,A<16?G[C++]=128|A:A<65536?(G[C++]=222,G[C++]=A>>8,G[C++]=A&255):(G[C++]=223,Re.setUint32(C,A),C+=4);for(let[T,L]of y)b(T),b(L)}else{for(let T=0,L=ns.length;T<L;T++){let B=rl[T];if(y instanceof B){let j=ns[T];if(j.write){j.type&&(G[C++]=212,G[C++]=j.type,G[C++]=0),b(j.write.call(this,y));return}let te=G,ne=Re,se=C;G=null;let U;try{U=j.pack.call(this,y,W=>(G=te,te=null,C+=W,C>Kt&&_(C),{target:G,targetView:Re,position:C-W}),b)}finally{te&&(G=te,Re=ne,C=se,Kt=G.length-10)}U&&(U.length+C>Kt&&_(U.length+C),C=ng(U,G,C,j.type));return}}I(y,!y.hasOwnProperty)}}else if(P==="boolean")G[C++]=y?195:194;else if(P==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))G[C++]=211,Re.setBigInt64(C,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)G[C++]=207,Re.setBigUint64(C,y);else if(this.largeBigIntToFloat)G[C++]=203,Re.setFloat64(C,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");C+=8}else if(P==="undefined")this.encodeUndefinedAsNil?G[C++]=192:(G[C++]=212,G[C++]=0,G[C++]=0);else if(P==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+P)},I=this.useRecords===!1?this.variableMapSize?y=>{let P=Object.keys(y),A=P.length;A<16?G[C++]=128|A:A<65536?(G[C++]=222,G[C++]=A>>8,G[C++]=A&255):(G[C++]=223,Re.setUint32(C,A),C+=4);let O;for(let T=0;T<A;T++)b(O=P[T]),b(y[O])}:(y,P)=>{G[C++]=222;let A=C-r;C+=2;let O=0;for(let T in y)(P||y.hasOwnProperty(T))&&(b(T),b(y[T]),O++);G[A+++r]=O>>8,G[A+r]=O&255}:y=>{let P=Object.keys(y),A,O=s.transitions||(s.transitions=Object.create(null)),T=0;for(let B=0,j=P.length;B<j;B++){let te=P[B];A=O[te],A||(A=O[te]=Object.create(null),T++),O=A}let L=O[Hn];if(L)L>=96&&h?(G[C++]=((L-=96)&31)+96,G[C++]=L>>5):G[C++]=L;else{L=s.nextId,L||(L=64),L<g&&this.shouldShareStructure&&!this.shouldShareStructure(P)?(L=s.nextOwnId,L<v||(L=g),s.nextOwnId=L+1):(L>=v&&(L=g),s.nextId=L+1);let B=P.highByte=L>=96&&h?L-96>>5:-1;O[Hn]=L,s[L-64]=P,L<g?(P.isShared=!0,s.sharedLength=L-63,i=!0,B>=0?(G[C++]=(L&31)+96,G[C++]=B):G[C++]=L):(B>=0?(G[C++]=213,G[C++]=114,G[C++]=(L&31)+96,G[C++]=B):(G[C++]=212,G[C++]=114,G[C++]=L),T&&(w+=S*T),x.length>=m&&(x.shift()[Hn]=0),x.push(O),b(P))}for(let B=0,j=P.length;B<j;B++)b(y[P[B]])},_=y=>{let P;if(y>16777216){if(y-r>cu)throw new Error("Packed buffer would be larger than maximum buffer size");P=Math.min(cu,Math.round(Math.max((y-r)*(y>67108864?1.25:2),4194304)/4096)*4096)}else P=(Math.max(y-r<<2,G.length-1)>>12)+1<<12;let A=new tl(P);return Re=new DataView(A.buffer,0,P),G.copy?G.copy(A,0,r,y):A.set(G.slice(r,y)),C-=r,r=0,Kt=A.length-10,G=A}}useBuffer(t){G=t,Re=new DataView(G.buffer,G.byteOffset,G.byteLength),C=0}};rl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,kn];ns=[{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?uu(n,16,t):pu(is?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==du&&this.structuredClone?uu(n,el.indexOf(e.name),t):pu(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function uu(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 pu(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 ng(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 ig(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 Sr(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)");rl.unshift(n.Class),ns.unshift(n)}lu(n)}var fu=new oo({useRecords:!1}),sg=fu.pack,ag=fu.pack;var{NEVER:lg,ALWAYS:cg,DECIMAL_ROUND:ug,DECIMAL_FIT:pg}=rs,mu=512,dg=1024;var hu=new oo({structuredClone:!0});Sr({Class:Ce.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ce.prototype),n}});Sr({Class:me.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,me.prototype),n}});Sr({Class:Me.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Me.prototype),n}});Sr({Class:Un.prototype.constructor,type:4,write(n){return n.id},read(n){return new Un(n)}});Sr({Class:jn.prototype.constructor,type:5,write(n){return n.data},read(n){return new jn(n)}});Sr({Class:vt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,vt.prototype),n}});Sr({Class:To.prototype.constructor,type:7,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,To.prototype),n}});function fg(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 ol(n){if(Rn(n))return n;if(Array.isArray(n))return n.map(ol);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=ol(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var ss;(r=>{function n(o){return hu.pack(o)}r.serialize=n;function t(o){return hu.unpack(o)}r.deserialize=t;function e(o){return fg(n(ol(o))).toString()}r.checksum=e})(ss||(ss={}));var gu;(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})(gu||(gu={}));var Oo;(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})(Oo||(Oo={}));var yu;(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})(yu||(yu={}));var Dr;(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})(Dr||(Dr={}));var dt;(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})(dt||(dt={}));var Dt;(l=>{l.white={...dt.white,a:1},l.transparent={...dt.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{...dt.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 dt.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})(Dt||(Dt={}));var as;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(as||(as={}));var xu;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(xu||(xu={}));var vu;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(vu||(vu={}));var Co;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Co||(Co={}));var no;(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})(no||(no={}));var ls;(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})(ls||(ls={}));var cs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(cs||(cs={}));var us;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Dt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:Dt.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:Dt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(us||(us={}));var nl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(nl||(nl={}));var il;(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})(il||(il={}));var ps;(t=>t.defaultData={...il.defaultData,...nl.defaultData,cloner:null,booleanExclude:null})(ps||(ps={}));var bu=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Su=["wrapping","image"],Zt;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,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:dt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...dt.fromHex(6710886),a:1},colorB:{...dt.fromHex(6710886),a:1},colorC:{...dt.fromHex(16777215),a:1},colorD:{...dt.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:Dt.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:Dt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Dt.fromHexAndA(0,1),contourColor:Dt.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}}}})(Zt||(Zt={}));var St;(l=>{function n(c){return!c.layers.some(a=>a.data.type==="texture"&&a.data.projection!==0||a.data.type==="depth"&&!a.data.isWorldSpace||a.data.type==="noise"||a.data.type==="displace")&&!e(c)}l.isMergable=n;function t(c){let p="";return c.layers.forEach(a=>{Object.entries(a.data).forEach(([u,d])=>{p+=`${u}${d}`,Array.isArray(d)?d.forEach(f=>p+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?p+=`${f.toFixed(4)}`:p+=`${f}`}):p+=`${d}`})}),p}l.getHash=t;function e(c){let p=0;for(let a of c.layers)"alpha"in a.data&&a.data.type!=="light"&&a.data.type!=="fresnel"&&(p+=(1-p)*a.data.alpha);return p<1}l.isTransparent=e;function r(){return{layers:new me}}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 me;return u.push({fi:0,data:Zt.defaultData("light",c),id:p}),u.push({fi:1,data:Zt.defaultData("color"),id:a}),{layers:u}}l.defaultTwoLayerData=i;function s(c,p="phong",a="layer1",u="layer2"){let d=Zt.defaultData("texture");Object.assign(d.texture,{image:c});let f=new me;return f.push({fi:0,data:d,id:a}),f.push({fi:1,data:Zt.defaultData("light",p),id:u}),{layers:f}}l.defaultTwoLayerTextureData=s})(St||(St={}));var Lo;(t=>{function n(){return{points:new me,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Lo||(Lo={}));var Mo;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Mo||(Mo={}));var Gr;(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:Lo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}t.defaultData=n})(Gr||(Gr={}));var mg=typeof global=="object"&&global&&global.Object===Object&&global,ds=mg;var hg=typeof self=="object"&&self&&self.Object===Object&&self,gg=ds||hg||Function("return this")(),Ve=gg;var yg=Ve.Symbol,at=yg;var wu=Object.prototype,xg=wu.hasOwnProperty,vg=wu.toString,Wn=at?at.toStringTag:void 0;function bg(n){var t=xg.call(n,Wn),e=n[Wn];try{n[Wn]=void 0;var r=!0}catch{}var o=vg.call(n);return r&&(t?n[Wn]=e:delete n[Wn]),o}var _u=bg;var Sg=Object.prototype,wg=Sg.toString;function _g(n){return wg.call(n)}var Tu=_g;var Tg="[object Null]",Ag="[object Undefined]",Au=at?at.toStringTag:void 0;function Ng(n){return n==null?n===void 0?Ag:Tg:Au&&Au in Object(n)?_u(n):Tu(n)}var wt=Ng;function Ig(n){return n!=null&&typeof n=="object"}var rt=Ig;var Pg="[object Symbol]";function Og(n){return typeof n=="symbol"||rt(n)&&wt(n)==Pg}var Eo=Og;function Cg(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 fs=Cg;var Lg=Array.isArray,De=Lg;var Mg=1/0,Nu=at?at.prototype:void 0,Iu=Nu?Nu.toString:void 0;function Pu(n){if(typeof n=="string")return n;if(De(n))return fs(n,Pu)+"";if(Eo(n))return Iu?Iu.call(n):"";var t=n+"";return t=="0"&&1/n==-Mg?"-0":t}var Ou=Pu;function Eg(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Fe=Eg;function Bg(n){return n}var ms=Bg;var Dg="[object AsyncFunction]",Gg="[object Function]",Rg="[object GeneratorFunction]",Vg="[object Proxy]";function Fg(n){if(!Fe(n))return!1;var t=wt(n);return t==Gg||t==Rg||t==Dg||t==Vg}var Bo=Fg;var zg=Ve["__core-js_shared__"],hs=zg;var Cu=function(){var n=/[^.]+$/.exec(hs&&hs.keys&&hs.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Ug(n){return!!Cu&&Cu in n}var Lu=Ug;var jg=Function.prototype,kg=jg.toString;function Hg(n){if(n!=null){try{return kg.call(n)}catch{}try{return n+""}catch{}}return""}var wr=Hg;var Wg=/[\\^$.*+?()[\]{}|]/g,qg=/^\[object .+?Constructor\]$/,$g=Function.prototype,Xg=Object.prototype,Yg=$g.toString,Kg=Xg.hasOwnProperty,Qg=RegExp("^"+Yg.call(Kg).replace(Wg,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Zg(n){if(!Fe(n)||Lu(n))return!1;var t=Bo(n)?Qg:qg;return t.test(wr(n))}var Mu=Zg;function Jg(n,t){return n?.[t]}var Eu=Jg;function ey(n,t){var e=Eu(n,t);return Mu(e)?e:void 0}var ft=ey;var ty=ft(Ve,"WeakMap"),gs=ty;var Bu=Object.create,ry=function(){function n(){}return function(t){if(!Fe(t))return{};if(Bu)return Bu(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Du=ry;function oy(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 Gu=oy;function ny(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var ys=ny;var iy=800,sy=16,ay=Date.now;function ly(n){var t=0,e=0;return function(){var r=ay(),o=sy-(r-e);if(e=r,o>0){if(++t>=iy)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var Ru=ly;function cy(n){return function(){return n}}var Vu=cy;var uy=function(){try{var n=ft(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Do=uy;var py=Do?function(n,t){return Do(n,"toString",{configurable:!0,enumerable:!1,value:Vu(t),writable:!0})}:ms,Fu=py;var dy=Ru(Fu),xs=dy;function fy(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var zu=fy;var my=9007199254740991,hy=/^(?:0|[1-9]\d*)$/;function gy(n,t){var e=typeof n;return t=t??my,!!t&&(e=="number"||e!="symbol"&&hy.test(n))&&n>-1&&n%1==0&&n<t}var Rr=gy;function yy(n,t,e){t=="__proto__"&&Do?Do(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Go=yy;function xy(n,t){return n===t||n!==n&&t!==t}var Vr=xy;var vy=Object.prototype,by=vy.hasOwnProperty;function Sy(n,t,e){var r=n[t];(!(by.call(n,t)&&Vr(r,e))||e===void 0&&!(t in n))&&Go(n,t,e)}var Ro=Sy;function wy(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?Go(e,l,c):Ro(e,l,c)}return e}var Nt=wy;var Uu=Math.max;function _y(n,t,e){return t=Uu(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Uu(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),Gu(n,this,l)}}var vs=_y;function Ty(n,t){return xs(vs(n,t,ms),n+"")}var ju=Ty;var Ay=9007199254740991;function Ny(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Ay}var Vo=Ny;function Iy(n){return n!=null&&Vo(n.length)&&!Bo(n)}var Fr=Iy;function Py(n,t,e){if(!Fe(e))return!1;var r=typeof t;return(r=="number"?Fr(e)&&Rr(t,e.length):r=="string"&&t in e)?Vr(e[t],n):!1}var ku=Py;function Oy(n){return ju(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&&ku(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 Hu=Oy;var Cy=Object.prototype;function Ly(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Cy;return n===e}var Fo=Ly;function My(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Wu=My;var Ey="[object Arguments]";function By(n){return rt(n)&&wt(n)==Ey}var sl=By;var qu=Object.prototype,Dy=qu.hasOwnProperty,Gy=qu.propertyIsEnumerable,Ry=sl(function(){return arguments}())?sl:function(n){return rt(n)&&Dy.call(n,"callee")&&!Gy.call(n,"callee")},_r=Ry;function Vy(){return!1}var $u=Vy;var Ku=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Xu=Ku&&typeof module=="object"&&module&&!module.nodeType&&module,Fy=Xu&&Xu.exports===Ku,Yu=Fy?Ve.Buffer:void 0,zy=Yu?Yu.isBuffer:void 0,Uy=zy||$u,zo=Uy;var jy="[object Arguments]",ky="[object Array]",Hy="[object Boolean]",Wy="[object Date]",qy="[object Error]",$y="[object Function]",Xy="[object Map]",Yy="[object Number]",Ky="[object Object]",Qy="[object RegExp]",Zy="[object Set]",Jy="[object String]",ex="[object WeakMap]",tx="[object ArrayBuffer]",rx="[object DataView]",ox="[object Float32Array]",nx="[object Float64Array]",ix="[object Int8Array]",sx="[object Int16Array]",ax="[object Int32Array]",lx="[object Uint8Array]",cx="[object Uint8ClampedArray]",ux="[object Uint16Array]",px="[object Uint32Array]",Ee={};Ee[ox]=Ee[nx]=Ee[ix]=Ee[sx]=Ee[ax]=Ee[lx]=Ee[cx]=Ee[ux]=Ee[px]=!0;Ee[jy]=Ee[ky]=Ee[tx]=Ee[Hy]=Ee[rx]=Ee[Wy]=Ee[qy]=Ee[$y]=Ee[Xy]=Ee[Yy]=Ee[Ky]=Ee[Qy]=Ee[Zy]=Ee[Jy]=Ee[ex]=!1;function dx(n){return rt(n)&&Vo(n.length)&&!!Ee[wt(n)]}var Qu=dx;function fx(n){return function(t){return n(t)}}var Uo=fx;var Zu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,qn=Zu&&typeof module=="object"&&module&&!module.nodeType&&module,mx=qn&&qn.exports===Zu,al=mx&&ds.process,hx=function(){try{var n=qn&&qn.require&&qn.require("util").types;return n||al&&al.binding&&al.binding("util")}catch{}}(),Tr=hx;var Ju=Tr&&Tr.isTypedArray,gx=Ju?Uo(Ju):Qu,bs=gx;var yx=Object.prototype,xx=yx.hasOwnProperty;function vx(n,t){var e=De(n),r=!e&&_r(n),o=!e&&!r&&zo(n),i=!e&&!r&&!o&&bs(n),s=e||r||o||i,l=s?Wu(n.length,String):[],c=l.length;for(var p in n)(t||xx.call(n,p))&&!(s&&(p=="length"||o&&(p=="offset"||p=="parent")||i&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||Rr(p,c)))&&l.push(p);return l}var Ss=vx;function bx(n,t){return function(e){return n(t(e))}}var ws=bx;var Sx=ws(Object.keys,Object),ep=Sx;var wx=Object.prototype,_x=wx.hasOwnProperty;function Tx(n){if(!Fo(n))return ep(n);var t=[];for(var e in Object(n))_x.call(n,e)&&e!="constructor"&&t.push(e);return t}var tp=Tx;function Ax(n){return Fr(n)?Ss(n):tp(n)}var jo=Ax;function Nx(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var rp=Nx;var Ix=Object.prototype,Px=Ix.hasOwnProperty;function Ox(n){if(!Fe(n))return rp(n);var t=Fo(n),e=[];for(var r in n)r=="constructor"&&(t||!Px.call(n,r))||e.push(r);return e}var op=Ox;function Cx(n){return Fr(n)?Ss(n,!0):op(n)}var Jt=Cx;var Lx=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Mx=/^\w*$/;function Ex(n,t){if(De(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Eo(n)?!0:Mx.test(n)||!Lx.test(n)||t!=null&&n in Object(t)}var np=Ex;var Bx=ft(Object,"create"),Ar=Bx;function Dx(){this.__data__=Ar?Ar(null):{},this.size=0}var ip=Dx;function Gx(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var sp=Gx;var Rx="__lodash_hash_undefined__",Vx=Object.prototype,Fx=Vx.hasOwnProperty;function zx(n){var t=this.__data__;if(Ar){var e=t[n];return e===Rx?void 0:e}return Fx.call(t,n)?t[n]:void 0}var ap=zx;var Ux=Object.prototype,jx=Ux.hasOwnProperty;function kx(n){var t=this.__data__;return Ar?t[n]!==void 0:jx.call(t,n)}var lp=kx;var Hx="__lodash_hash_undefined__";function Wx(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Ar&&t===void 0?Hx:t,this}var cp=Wx;function ko(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])}}ko.prototype.clear=ip;ko.prototype.delete=sp;ko.prototype.get=ap;ko.prototype.has=lp;ko.prototype.set=cp;var ll=ko;function qx(){this.__data__=[],this.size=0}var up=qx;function $x(n,t){for(var e=n.length;e--;)if(Vr(n[e][0],t))return e;return-1}var zr=$x;var Xx=Array.prototype,Yx=Xx.splice;function Kx(n){var t=this.__data__,e=zr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Yx.call(t,e,1),--this.size,!0}var pp=Kx;function Qx(n){var t=this.__data__,e=zr(t,n);return e<0?void 0:t[e][1]}var dp=Qx;function Zx(n){return zr(this.__data__,n)>-1}var fp=Zx;function Jx(n,t){var e=this.__data__,r=zr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var mp=Jx;function Ho(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])}}Ho.prototype.clear=up;Ho.prototype.delete=pp;Ho.prototype.get=dp;Ho.prototype.has=fp;Ho.prototype.set=mp;var Ur=Ho;var e0=ft(Ve,"Map"),jr=e0;function t0(){this.size=0,this.__data__={hash:new ll,map:new(jr||Ur),string:new ll}}var hp=t0;function r0(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var gp=r0;function o0(n,t){var e=n.__data__;return gp(t)?e[typeof t=="string"?"string":"hash"]:e.map}var kr=o0;function n0(n){var t=kr(this,n).delete(n);return this.size-=t?1:0,t}var yp=n0;function i0(n){return kr(this,n).get(n)}var xp=i0;function s0(n){return kr(this,n).has(n)}var vp=s0;function a0(n,t){var e=kr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var bp=a0;function Wo(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])}}Wo.prototype.clear=hp;Wo.prototype.delete=yp;Wo.prototype.get=xp;Wo.prototype.has=vp;Wo.prototype.set=bp;var $n=Wo;var l0="Expected a function";function cl(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(l0);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(cl.Cache||$n),e}cl.Cache=$n;var Sp=cl;var c0=500;function u0(n){var t=Sp(n,function(r){return e.size===c0&&e.clear(),r}),e=t.cache;return t}var wp=u0;var p0=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,d0=/\\(\\)?/g,f0=wp(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(p0,function(e,r,o,i){t.push(o?i.replace(d0,"$1"):r||e)}),t}),_p=f0;function m0(n){return n==null?"":Ou(n)}var Tp=m0;function h0(n,t){return De(n)?n:np(n,t)?[n]:_p(Tp(n))}var It=h0;var g0=1/0;function y0(n){if(typeof n=="string"||Eo(n))return n;var t=n+"";return t=="0"&&1/n==-g0?"-0":t}var Hr=y0;function x0(n,t){t=It(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Hr(t[e++])];return e&&e==r?n:void 0}var _s=x0;function v0(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var qo=v0;var Ap=at?at.isConcatSpreadable:void 0;function b0(n){return De(n)||_r(n)||!!(Ap&&n&&n[Ap])}var Np=b0;function Ip(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Np),o||(o=[]);++i<s;){var l=n[i];t>0&&e(l)?t>1?Ip(l,t-1,e,r,o):qo(o,l):r||(o[o.length]=l)}return o}var Pp=Ip;function S0(n){var t=n==null?0:n.length;return t?Pp(n,1):[]}var Op=S0;function w0(n){return xs(vs(n,void 0,Op),n+"")}var Ts=w0;var _0=ws(Object.getPrototypeOf,Object),$o=_0;var T0="[object Object]",A0=Function.prototype,N0=Object.prototype,Cp=A0.toString,I0=N0.hasOwnProperty,P0=Cp.call(Object);function O0(n){if(!rt(n)||wt(n)!=T0)return!1;var t=$o(n);if(t===null)return!0;var e=I0.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Cp.call(e)==P0}var As=O0;function C0(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 Lp=C0;function L0(){this.__data__=new Ur,this.size=0}var Mp=L0;function M0(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Ep=M0;function E0(n){return this.__data__.get(n)}var Bp=E0;function B0(n){return this.__data__.has(n)}var Dp=B0;var D0=200;function G0(n,t){var e=this.__data__;if(e instanceof Ur){var r=e.__data__;if(!jr||r.length<D0-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new $n(r)}return e.set(n,t),this.size=e.size,this}var Gp=G0;function Xo(n){var t=this.__data__=new Ur(n);this.size=t.size}Xo.prototype.clear=Mp;Xo.prototype.delete=Ep;Xo.prototype.get=Bp;Xo.prototype.has=Dp;Xo.prototype.set=Gp;var Ns=Xo;function R0(n,t){return n&&Nt(t,jo(t),n)}var Rp=R0;function V0(n,t){return n&&Nt(t,Jt(t),n)}var Vp=V0;var jp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fp=jp&&typeof module=="object"&&module&&!module.nodeType&&module,F0=Fp&&Fp.exports===jp,zp=F0?Ve.Buffer:void 0,Up=zp?zp.allocUnsafe:void 0;function z0(n,t){if(t)return n.slice();var e=n.length,r=Up?Up(e):new n.constructor(e);return n.copy(r),r}var Is=z0;function U0(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 kp=U0;function j0(){return[]}var Ps=j0;var k0=Object.prototype,H0=k0.propertyIsEnumerable,Hp=Object.getOwnPropertySymbols,W0=Hp?function(n){return n==null?[]:(n=Object(n),kp(Hp(n),function(t){return H0.call(n,t)}))}:Ps,Yo=W0;function q0(n,t){return Nt(n,Yo(n),t)}var Wp=q0;var $0=Object.getOwnPropertySymbols,X0=$0?function(n){for(var t=[];n;)qo(t,Yo(n)),n=$o(n);return t}:Ps,Os=X0;function Y0(n,t){return Nt(n,Os(n),t)}var qp=Y0;function K0(n,t,e){var r=t(n);return De(n)?r:qo(r,e(n))}var Cs=K0;function Q0(n){return Cs(n,jo,Yo)}var $p=Q0;function Z0(n){return Cs(n,Jt,Os)}var Ls=Z0;var J0=ft(Ve,"DataView"),Ms=J0;var ev=ft(Ve,"Promise"),Es=ev;var tv=ft(Ve,"Set"),Bs=tv;var Xp="[object Map]",rv="[object Object]",Yp="[object Promise]",Kp="[object Set]",Qp="[object WeakMap]",Zp="[object DataView]",ov=wr(Ms),nv=wr(jr),iv=wr(Es),sv=wr(Bs),av=wr(gs),io=wt;(Ms&&io(new Ms(new ArrayBuffer(1)))!=Zp||jr&&io(new jr)!=Xp||Es&&io(Es.resolve())!=Yp||Bs&&io(new Bs)!=Kp||gs&&io(new gs)!=Qp)&&(io=function(n){var t=wt(n),e=t==rv?n.constructor:void 0,r=e?wr(e):"";if(r)switch(r){case ov:return Zp;case nv:return Xp;case iv:return Yp;case sv:return Kp;case av:return Qp}return t});var Ko=io;var lv=Object.prototype,cv=lv.hasOwnProperty;function uv(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&cv.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Jp=uv;var pv=Ve.Uint8Array,ul=pv;function dv(n){var t=new n.constructor(n.byteLength);return new ul(t).set(new ul(n)),t}var Qo=dv;function fv(n,t){var e=t?Qo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var ed=fv;var mv=/\w*$/;function hv(n){var t=new n.constructor(n.source,mv.exec(n));return t.lastIndex=n.lastIndex,t}var td=hv;var rd=at?at.prototype:void 0,od=rd?rd.valueOf:void 0;function gv(n){return od?Object(od.call(n)):{}}var nd=gv;function yv(n,t){var e=t?Qo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Ds=yv;var xv="[object Boolean]",vv="[object Date]",bv="[object Map]",Sv="[object Number]",wv="[object RegExp]",_v="[object Set]",Tv="[object String]",Av="[object Symbol]",Nv="[object ArrayBuffer]",Iv="[object DataView]",Pv="[object Float32Array]",Ov="[object Float64Array]",Cv="[object Int8Array]",Lv="[object Int16Array]",Mv="[object Int32Array]",Ev="[object Uint8Array]",Bv="[object Uint8ClampedArray]",Dv="[object Uint16Array]",Gv="[object Uint32Array]";function Rv(n,t,e){var r=n.constructor;switch(t){case Nv:return Qo(n);case xv:case vv:return new r(+n);case Iv:return ed(n,e);case Pv:case Ov:case Cv:case Lv:case Mv:case Ev:case Bv:case Dv:case Gv:return Ds(n,e);case bv:return new r;case Sv:case Tv:return new r(n);case wv:return td(n);case _v:return new r;case Av:return nd(n)}}var id=Rv;function Vv(n){return typeof n.constructor=="function"&&!Fo(n)?Du($o(n)):{}}var Gs=Vv;var Fv="[object Map]";function zv(n){return rt(n)&&Ko(n)==Fv}var sd=zv;var ad=Tr&&Tr.isMap,Uv=ad?Uo(ad):sd,ld=Uv;var jv="[object Set]";function kv(n){return rt(n)&&Ko(n)==jv}var cd=kv;var ud=Tr&&Tr.isSet,Hv=ud?Uo(ud):cd,pd=Hv;var Wv=1,qv=2,$v=4,dd="[object Arguments]",Xv="[object Array]",Yv="[object Boolean]",Kv="[object Date]",Qv="[object Error]",fd="[object Function]",Zv="[object GeneratorFunction]",Jv="[object Map]",eb="[object Number]",md="[object Object]",tb="[object RegExp]",rb="[object Set]",ob="[object String]",nb="[object Symbol]",ib="[object WeakMap]",sb="[object ArrayBuffer]",ab="[object DataView]",lb="[object Float32Array]",cb="[object Float64Array]",ub="[object Int8Array]",pb="[object Int16Array]",db="[object Int32Array]",fb="[object Uint8Array]",mb="[object Uint8ClampedArray]",hb="[object Uint16Array]",gb="[object Uint32Array]",Le={};Le[dd]=Le[Xv]=Le[sb]=Le[ab]=Le[Yv]=Le[Kv]=Le[lb]=Le[cb]=Le[ub]=Le[pb]=Le[db]=Le[Jv]=Le[eb]=Le[md]=Le[tb]=Le[rb]=Le[ob]=Le[nb]=Le[fb]=Le[mb]=Le[hb]=Le[gb]=!0;Le[Qv]=Le[fd]=Le[ib]=!1;function Rs(n,t,e,r,o,i){var s,l=t&Wv,c=t&qv,p=t&$v;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!Fe(n))return n;var a=De(n);if(a){if(s=Jp(n),!l)return ys(n,s)}else{var u=Ko(n),d=u==fd||u==Zv;if(zo(n))return Is(n,l);if(u==md||u==dd||d&&!o){if(s=c||d?{}:Gs(n),!l)return c?qp(n,Vp(s,n)):Wp(n,Rp(s,n))}else{if(!Le[u])return o?n:{};s=id(n,u,l)}}i||(i=new Ns);var f=i.get(n);if(f)return f;i.set(n,s),pd(n)?n.forEach(function(g){s.add(Rs(g,t,e,g,n,i))}):ld(n)&&n.forEach(function(g,v){s.set(v,Rs(g,t,e,v,n,i))});var m=p?c?Ls:$p:c?Jt:jo,h=a?void 0:m(n);return zu(h||n,function(g,v){h&&(v=g,g=n[v]),Ro(s,v,Rs(g,t,e,v,n,i))}),s}var Vs=Rs;var yb=1,xb=4;function vb(n){return Vs(n,yb|xb)}var Xn=vb;function bb(n,t){return n!=null&&t in Object(n)}var hd=bb;function Sb(n,t,e){t=It(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=Hr(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&&Vo(o)&&Rr(s,o)&&(De(n)||_r(n)))}var gd=Sb;function wb(n,t){return n!=null&&gd(n,t,hd)}var yd=wb;function _b(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 xd=_b;var Tb=xd(),vd=Tb;function Ab(n,t,e){(e!==void 0&&!Vr(n[t],e)||e===void 0&&!(t in n))&&Go(n,t,e)}var Yn=Ab;function Nb(n){return rt(n)&&Fr(n)}var bd=Nb;function Ib(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Kn=Ib;function Pb(n){return Nt(n,Jt(n))}var Sd=Pb;function Ob(n,t,e,r,o,i,s){var l=Kn(n,e),c=Kn(t,e),p=s.get(c);if(p){Yn(n,e,p);return}var a=i?i(l,c,e+"",n,t,s):void 0,u=a===void 0;if(u){var d=De(c),f=!d&&zo(c),m=!d&&!f&&bs(c);a=c,d||f||m?De(l)?a=l:bd(l)?a=ys(l):f?(u=!1,a=Is(c,!0)):m?(u=!1,a=Ds(c,!0)):a=[]:As(c)||_r(c)?(a=l,_r(l)?a=Sd(l):(!Fe(l)||Bo(l))&&(a=Gs(c))):u=!1}u&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),Yn(n,e,a)}var wd=Ob;function _d(n,t,e,r,o){n!==t&&vd(t,function(i,s){if(o||(o=new Ns),Fe(i))wd(n,t,s,e,_d,r,o);else{var l=r?r(Kn(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),Yn(n,s,l)}},Jt)}var Td=_d;function Cb(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var Ad=Cb;function Lb(n,t){return t.length<2?n:_s(n,Lp(t,0,-1))}var Nd=Lb;var Mb=Hu(function(n,t,e){Td(n,t,e)}),so=Mb;function Eb(n,t){return t=It(t,n),n=Nd(n,t),n==null||delete n[Hr(Ad(t))]}var Id=Eb;function Bb(n){return As(n)?void 0:n}var Pd=Bb;var Db=1,Gb=2,Rb=4,Vb=Ts(function(n,t){var e={};if(n==null)return e;var r=!1;t=fs(t,function(i){return i=It(i,n),r||(r=i.length>1),i}),Nt(n,Ls(n),e),r&&(e=Vs(e,Db|Gb|Rb,Pd));for(var o=t.length;o--;)Id(e,t[o]);return e}),Zo=Vb;function Fb(n,t,e,r){if(!Fe(n))return n;t=It(t,n);for(var o=-1,i=t.length,s=i-1,l=n;l!=null&&++o<i;){var c=Hr(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=Fe(a)?a:Rr(t[o+1])?[]:{})}Ro(l,c,p),l=l[c]}return n}var Od=Fb;function zb(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=_s(n,s);e(l,s)&&Od(i,It(s,n),l)}return i}var Cd=zb;function Ub(n,t){return Cd(n,t,function(e,r){return yd(n,r)})}var Ld=Ub;var jb=Ts(function(n,t){return n==null?{}:Ld(n,t)}),Jo=jb;var Qn;(o=>{o.identity={...as.identity,hiddenMatrix:Dr.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:Oo.isEqual(i.position,s.position)?null:s.position,rotation:Oo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Oo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Dr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Qn||(Qn={}));var pl;(t=>t.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(pl||(pl={}));var Gt;(t=>t.defaultData={states:new me,events:new me,visible:!0,raycastLock:!1,physics:null,...Qn.identity})(Gt||(Gt={}));var Md;(t=>t.defaultData={type:"Empty",...Gt.defaultData})(Md||(Md={}));var ao;(t=>t.defaultData={type:"Mesh",...Gt.defaultData,...ps.defaultData})(ao||(ao={}));var Fs;(t=>t.defaultData={...Gt.defaultData,...Qn.identity,...no.defaultData})(Fs||(Fs={}));var Ed;(t=>{function n(e){return{...Gt.defaultData,...us.defaultData(e)}}t.defaultData=n})(Ed||(Ed={}));var Bd;(o=>(o.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Dr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:pl.defaultData,states:new me,events:new me,...no.defaultData},o.defaultMeshObject={name:"Rectangle",...Gt.defaultData,...ao.defaultData,geometry:Gr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},o.defaultBooleanObject={name:"Boolean",...Gt.defaultData,...ao.defaultData,geometry:Gr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},o.defaultTextObject={name:"Text",...Gt.defaultData,...ao.defaultData,geometry:Gr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(Bd||(Bd={}));var Dd;(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=Wa(i.material,s=>{if(typeof s!="string")for(let[l,c]of Object.entries(o.material.layers)){let p=s.layers.data(l);p&&so(p,c)}}).data),i.materials&&o.materials&&(i.materials=Wa(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&&so(u,a)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,Qn.merge(i,o)),Co.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(cs.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=dt.clone(s.color))}return i}e.patch=t})(Dd||(Dd={}));var en;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(en||(en={}));var zs;(t=>t.defaultData={orbitControls:en.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null})(zs||(zs={}));function lo(n,t){return Object.setPrototypeOf(n,t),n}function Gd(n){return Array.isArray(n)?n:[n]}var Us;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},lo(r,Ce.prototype)}e.defaultColors=n;function t(){return{materials:new Ce,images:new Ce,colors:new Ce,audios:new Ce,fonts:new Ce,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(Us||(Us={}));import{MathUtils as js}from"three";function Rd(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={...Jo(ut(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={...ut(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function ks(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function Hs(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function kb(n){Object.assign(n.scene.publish,{orbitControls:{...en.defaultData,...ut(n.scene.publish.orbitControls)}})}function Hb(n){Object.assign(n.scene.publish.settings,{video:{...zs.defaultData.settings.video,...ut(n.scene.publish.settings.video)}})}function Wb(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((bu.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(Su.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 qb(n){n.scene.publish.withBackground=!0}function $b(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function Xb(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 Yb(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 Kb(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 Vd(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function dl(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={...ut(t),colors:e,steps:r};Object.assign(t,o)}})}function Qb(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Fd(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&dl(r)}):"material"in e&&typeof e.material!="string"&&dl(e.material)}),Object.values(n.shared.materials).forEach(t=>dl(t))}function Zb(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 Jb(n){n.shared.audios=lo({},Ce.prototype)}function eS(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function tS(n){Object.entries(ut(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(ut(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function rS(n){n.scene.publish.settings.web.preload=!1}function zd(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function oS(n){n.shared.fonts=lo({},Ce.prototype)}function nS(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function iS(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=St.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=nS(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Gt.defaultData,...ao.defaultData,flatShading:!1,wireframe:!1,geometry:{...Gr.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:ut(o.states),events:ut(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},p=ut(n.scene.objects).parent(e);n.scene.objects.insertAfter(p??null,e,[{id:e+"new",data:c,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function sS(n){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new me,move:new me,jump:new me}});else{let i=new me;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:js.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let p={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,Jo(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let u={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},d={state:s.state,...u,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new me({fi:0,id:js.generateUUID(),data:p},{fi:1,id:js.generateUUID(),data:d})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function aS(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let s=new me,l=[];if(e.events.forEach((c,p,a)=>{if(c.type==="Audio"&&c.trigger===i){let u;l.push(p),c.interaction==="play"?u={...Jo(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(u={...Jo(c,"interaction","delay","object","playAudio"),type:"Audio"}),u&&s.push({fi:a,id:p,data:u})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(p=>p.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:js.generateUUID(),data:{type:o,actions:s}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Ud(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=Zt.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function lS(n){ks(n,Ud),Hs(n,Ud)}var jd=22;function kd(n){let t=n.schema??0;t!==jd&&(console.warn("updating from ",t,"to ",jd),t<1&&(Hs(n,Rd),ks(n,Rd),n.schema=1),t<2&&(kb(n),n.schema=2),t<3&&(Wb(n),n.schema=3),t<4&&(qb(n),n.schema=4),t<5&&($b(n),n.schema=5),t<6&&(Xb(n),n.schema=6),t<7&&(Yb(n),n.schema=7),t<8&&(Kb(n),n.schema=8),t<9&&(Fd(n),n.schema=9),t<10&&(Qb(n),n.schema=10),t<11&&(Zb(n),n.schema=11),t<12&&(Fd(n),n.schema=12),t<13&&(Jb(n),n.schema=13),t<14&&(eS(n),n.schema=14),t<15&&(tS(n),n.schema=15),t<16&&(rS(n),n.schema=16),t<17&&(Hs(n,zd),ks(n,zd),n.schema=17),t<18&&(Hs(n,Vd),ks(n,Vd),n.schema=18),t<19&&(Hb(n),n.schema=19),t<20&&(oS(n),iS(n),n.schema=20),t<21&&(sS(n),aS(n),n.schema=21),t<22&&(lS(n),n.schema=22))}var Ws;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Ws||(Ws={}));import{Object3D as uS,Vector3 as Jn,Euler as Hd,MathUtils as Wr}from"three";import{Object3D as cS}from"three";var fl=class extends cS{},qs=class extends fl{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 co=class extends uS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Jn),i=.1;this.parameters=ls.defaultData(o.toArray(),i),so(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 qs(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*Wr.DEG2RAD,i=r.end*Wr.DEG2RAD,s=o-i,l=new Hd(r.rotation[0]*Wr.DEG2RAD,r.rotation[1]*Wr.DEG2RAD,r.rotation[2]*Wr.DEG2RAD),c;switch(r.axis){case"z":c=new Jn(0,0,1);break;case"y":c=new Jn(0,1,0);break;default:case"x":c=new Jn(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 Hd(r.rotation[0]*Wr.DEG2RAD,r.rotation[1]*Wr.DEG2RAD,r.rotation[2]*Wr.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 Jn(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),so(this.parameters,e),this.update(),this}};import{HemisphereLight as V_,Scene as F_,Vector3 as z_,Fog as U_,Box3 as j_}from"three";import{Camera as t_,OrthographicCamera as r_,PerspectiveCamera as o_,Vector3 as Ht,Object3D as Rm,Quaternion as n_}from"three";import{BoxGeometry as pS}from"three";var er=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new pS(30,30,30),t};import{Camera as gS,LineSegments as yS,BufferGeometry as xS,LineBasicMaterial as vS,Color as hl,Vector3 as bS,Float32BufferAttribute as qd}from"three";import{Ray as dS,Sphere as fS,Matrix4 as mS,Vector3 as Nr}from"three";var $s=new dS,ml=new fS,Wd=new mS,tr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),ml.copy(i.boundingSphere),ml.applyMatrix4(s),e.ray.intersectsSphere(ml)===!1||(Wd.copy(s).invert(),$s.copy(e.ray).applyMatrix4(Wd),i.boundingBox!==null&&$s.intersectsBox(i.boundingBox)===!1))return;let l,c,p,a,u=i.index,d=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let v=Math.max(0,f.start),x=Math.min(u.count,f.start+f.count);for(m=v,h=x;m<h;m+=3)if(c=u.getX(m),p=u.getX(m+1),a=u.getX(m+2),l=g(n,e,$s,d,c,p,a),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let x=i.attributes.position,w=new Nr,S=new Nr,b=new Nr,I=new Nr,_=2,P=1/((n.scale.x+n.scale.y+n.scale.z)/3),A=P*P,O=Math.max(0,f.start),T=Math.min(x.count,f.start+f.count);for(let L=O,B=T-1;L<B;L+=_){if(w.fromBufferAttribute(x,L),S.fromBufferAttribute(x,L+1),$s.distanceSqToSegment(w,S,I,b)>A)continue;I.applyMatrix4(n.matrixWorld);let te=e.ray.origin.distanceTo(I);te<e.near||te>e.far||r.push({distance:te,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(v,x,w,S,b,I,_){let y=new Nr,P=new Nr,A=new Nr,O=new Nr,T=new Nr;if(y.fromBufferAttribute(S,b),P.fromBufferAttribute(S,I),A.fromBufferAttribute(S,_),w.intersectTriangle(y,P,A,!1,O)===null)return null;T.copy(O),T.applyMatrix4(v.matrixWorld);let B=x.ray.origin.distanceTo(T);return B<x.near||B>x.far?null:{faceIndex:1,distance:B,point:T.clone(),object:v}}};var Xs=new bS,Pt=new gS,gl=class extends yS{constructor(e){let r=new xS,o=new vS({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new hl(15711266),p=new hl(15711266),a=new hl(2857471);u("n1","n2",c),u("n2","n4",c),u("n4","n3",c),u("n3","n1",c),u("f1","f2",c),u("f2","f4",c),u("f4","f3",c),u("f3","f1",c),u("n1","f1",c),u("n2","f2",c),u("n3","f3",c),u("n4","f4",c),u("p","n1",p),u("p","n2",p),u("p","n3",p),u("p","n4",p),u("u1","u2",a),u("u2","u3",a),u("u3","u1",a);function u(f,m,h){d(f,h),d(m,h)}function d(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}r.setAttribute("position",new qd(i,3)),r.setAttribute("color",new qd(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;Pt.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;Rt("n1",r,e,Pt,-i,-s,l),Rt("n2",r,e,Pt,i,-s,l),Rt("n3",r,e,Pt,-i,s,l),Rt("n4",r,e,Pt,i,s,l);let c=l;Rt("f1",r,e,Pt,-i,-s,c),Rt("f2",r,e,Pt,i,-s,c),Rt("f3",r,e,Pt,-i,s,c),Rt("f4",r,e,Pt,i,s,c);let p=c,a=.5;Rt("u1",r,e,Pt,i*.7*a,s*1.1,p),Rt("u2",r,e,Pt,-i*.7*a,s*1.1,p),Rt("u3",r,e,Pt,0,s*(1.1+.9*a),p),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Rt(n,t,e,r,o,i,s){Xs.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],Xs.x,Xs.y,Xs.z)}}var Ys=class extends er(gl){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){tr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as SS}from"three";var tn=class extends er(SS){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){tr(this.object,tn.geometryHelper,e,r)}};import{AxesHelper as wS}from"three";var rn=class extends er(wS){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){tr(this.object,rn.geometryHelper,e,r)}update(){}};import{PointLightHelper as _S}from"three";var on=class extends er(_S){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){tr(this.object,on.geometryHelper,e,r)}};import{SpotLightHelper as TS,Vector3 as AS}from"three";var Ks=class extends er(TS){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){tr(this.object,Ks.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Ks._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)}}},ei=Ks;ei._vector=new AS;import{CubicBezierCurve as Qs,EllipseCurve as NS,LineCurve as Zs,LineCurve3 as IS,MathUtils as PS,QuadraticBezierCurve as xl,SplineCurve as OS,Vector2 as ot,Vector3 as Yd}from"three";var ti=1e-12,nn=class{constructor(t){this.position=new ot;this.startPosition=new ot;this.uuid=PS.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)}},Vt=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 Vt(e,new ot(...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 Vt(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 ot,r=new ot){let[o,i]=this.computeTangents();return o&&i&&($d(o,e),$d(i,r)),[e,r]}computeTangent(e=new ot){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new ot){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function $d(n,t=new ot){let e=n.length();return t.set(-n.y/e,n.x/e)}var vl=n=>n,an=new ot,Js=new ot,CS=new ot,LS=new ot,MS=new ot,ES=new ot,Kd=new Yd,Qd=new Yd;function Zd(n){let t=new ot;t.addVectors(n.v0,an.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ot;return e.addVectors(n.v2,Js.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Qs(n.v0,t,e,n.v2)}function ri(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function BS(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function DS(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function bl(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 Jd(n,t,e){return Xd(n,t)&&Xd(t,e)&&yl(n.position,t.position,e.position)}function yl(n,t,e){return an.copy(t).sub(n).cross(Js.copy(e).sub(n))===0}function ef(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 tf(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function rf(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 bl(t,n,e)>Math.PI&&(a*=-1),ri(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 Sl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Xd(n,t){return yl(n.position,n.controls[1].position,t.position)&&yl(n.position,t.controls[0].position,t.position)}function of(n,t,e,r,o=.5){let i=an.subVectors(t,n).multiplyScalar(o).add(n),s=Js.subVectors(e,t).multiplyScalar(o).add(t),l=CS.subVectors(r,e).multiplyScalar(o).add(e),c=i,p=LS.subVectors(s,i).multiplyScalar(o).add(i),a=MS.subVectors(l,s).multiplyScalar(o).add(s),u=l,d=ES.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 nf(n,t,e=12,r=!0){let o=Qd.set(0,0,0),i,s=0,l=[];for(let c=0;c<t.length;c++){let p=vl(t[c]),a=an,u=qr(p,e);l.push(u);for(let d=0;d<=u;d++)if(p instanceof Qs||p instanceof xl||p instanceof Zs){if(p.getPoint(d/u,a),o.set(a.x,a.y,0),i!==void 0&&DS(i,o))continue;i===void 0&&(i=Kd),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 sf(n,t,e,r=12,o=!0){let i=Qd.set(0,0,0),s=0,l=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let p,a=vl(t[c]),u=an,d=qr(a,r);l.push(d);for(let f=0;f<=d;f++)if(a instanceof Qs||a instanceof xl||a instanceof Zs){if(a.getPoint(f/d,u),i.set(u.x,u.y,0),p?.equals(i))continue;p===void 0?p=Kd:(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 wl(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=qr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=qr(s.curveAfter,t)),r.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=qr(n[0].roundedCurveCorner,t)*.5),r}function qr(n,t=12){return n&&n instanceof NS?t*2:n&&(n instanceof Zs||n instanceof IS)?1:n&&n instanceof OS?t*n.points.length:t}function af(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let l=vl(t[s]),c=qr(l,e),p=an;for(let a=0;a<=c;a++)if(l instanceof Qs||l instanceof xl||l instanceof Zs){if(l.getPoint(a/c,p),o!==void 0&&BS(o,p,ti))continue;o===void 0&&(o=Js),o.copy(p),n.push(p.x,p.y),i++}}return ri(n[0],n[n.length-2],ti)&&ri(n[1],n[n.length-1],ti)&&(n.pop(),n.pop()),r&&i>1&&!(ri(n[i-1],n[1],ti)&&ri(n[i-2],n[0],ti))&&(n.push(n[0],n[1]),i++),n}import{EventDispatcher as Z1,Matrix3 as J1,Vector3 as Nc}from"three";import{EventDispatcher as GS,Plane as RS,Shape as lf,Vector2 as Ir,Vector3 as VS,MathUtils as _l,LineCurve as Tl,QuadraticBezierCurve as cf,CubicBezierCurve as ea}from"three";var Al=new Ir,FS=new Ir,zS=new Ir,US=new Ir,jS=new Ir,kS=new Ir,ve=class extends lf{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new GS;this.plane=new RS(new VS(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=_l.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new ve;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Vt.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>ve.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,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){let r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=e-r;if(l<=s.points.length-1)return s.points[l];r+=s.points.length}}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=Al.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=_l.generateUUID()){let i;e instanceof Ir?i=e:i=new Ir(e,r);let s=new Vt(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 nf(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=wl(this.points,e,!1),this.roundedCurveDivisions=wl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return sf(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),af(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=qr(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(Sl(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(Al.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){Sl(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&&Jd(c,l,p);if(!l.controlsMoved()&&a>0&&!u){let d=l.curveBefore,f=l.curveAfter;if(d===void 0||f===void 0)continue;let m=l.roundedCurveBefore,h=l.roundedCurveAfter,g=d.getLength(),v=f.getLength(),x=Math.min(a,g*.499),w=Math.min(a,v*.499),S=Math.min(x,w),b=1-S/g,I=S/v,_=d.getPointAt(b,Al),y=f.getPointAt(I,FS);this._subSplitCurve(d,m,b,_,void 0),this._subSplitCurve(f,h,I,void 0,y);let P;if(this.useCubicForRoundedCorners){let A=bl(_,l.position,y)/2,O=Math.tan(A)*_.distanceTo(l.position),[T,L]=ef(_,y,O,zS,US),B=tf(T,L,l.position),[j,te]=rf(B,_,y,O,jS,kS);P=new ea(_.clone(),j.clone(),te.clone(),y.clone())}else P=new cf(_.clone(),l.position.clone(),y.clone());l.roundedCurveCorner=P,this.roundedCurves.splice(i+o,0,P),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,i,s){if(e instanceof Tl)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=of(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 ve(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],p=e.points[i+3],a=e.points[i+4],u=e.points[i+5],d=e.points[i+6],f=new Vt(_l.generateUUID(),new Ir(s,l));f.controls[0].position.set(c,p),f.controls[1].position.set(a,u),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new ve;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof ea&&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 cf&&(i[l]=Zd(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],d=l>0?i[l-1]:null,f;u instanceof ea?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof Tl&&(f=this.createPoint(u.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let p=i[i.length-1],a=!1;return p instanceof ea?p.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(p.v2),a=!0):p instanceof Tl&&p.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof lf&&(this.shapeHoles=e.holes.map(i=>{let s=new ve;return s.fromShape(i),s})),this.update(),this}};import{BufferAttribute as ra,BufferGeometry as XS}from"three";var Pe;(function(n){n[n.ODD=0]="ODD",n[n.NONZERO=1]="NONZERO",n[n.POSITIVE=2]="POSITIVE",n[n.NEGATIVE=3]="NEGATIVE",n[n.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Pe||(Pe={}));var ze;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ze||(ze={}));function ce(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){ce(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){ce(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){ce(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){ce(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}(),oi=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}(),ta=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}(),ln=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}(),uf=function(){function n(){var t=new ln,e=new oi,r=new ta(0),o=new ta(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 ta(0),r=new ta(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;ce(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;ce(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 ln,e=new ln,r=new oi,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 ln;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new oi;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 oi;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 ln;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 oi;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){ce(o.prev===i),c=o.anEdge;do ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c),ce(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ce(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ce(s.prev===l),c=s.anEdge;do ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c),ce(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ce(s.prev===l&&s.anEdge===null),p=r,p=r;(c=p.next)!==r;p=c)ce(c.Sym.next===p.Sym),ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Org!==null),ce(c.Dst!==null),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c);ce(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}(),pf=function(){function n(){this.handle=null}return n}(),df=function(){function n(){this.key=null,this.node=0}return n}(),HS=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 pf,this.handles[r]=new df;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,ce(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 pf;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new df}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;ce(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}(),Nl=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}(),ff=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),WS=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new ff,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 ff;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}(),qS=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&&ce(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ce(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 Nl;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Pe.ODD:return(e&1)!==0;case Pe.NONZERO:return e!==0;case Pe.POSITIVE:return e>0;case Pe.NEGATIVE:return e<0;case Pe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,l=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}l.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(l,o)),n.finishRegion(t,s),l=i.eUp,s=i}return l},n.addRightEdges=function(t,e,r,o,i,s){var l,c,p,a,u=!0;p=r;do ce(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,ce(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(ce(!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 ln,f,m;if(ce(!ae.vertEq(p,c)),ce(ae.edgeSign(c,t.event,s)<=0),ce(ae.edgeSign(p,t.event,l)>=0),ce(s!==t.event&&l!==t.event),ce(!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),ce(Math.min(s.t,c.t)<=d.t),ce(d.t<=Math.max(l.t,p.t)),ce(Math.min(p.s,c.s)<=d.s),ce(d.s<=Math.max(l.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=ae.vertLeq(s,l)?s:l,ae.vertLeq(f,d)&&(d.s=f.s,d.t=f.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),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(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)){ce(!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}ce(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ce(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 Nl;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);ce(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 Nl,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 WS(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||(ce(e.fixUpperEdge),ce(++r===1)),ce(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 HS(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,ce(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}(),$S=function(){function n(){this.mesh=new uf,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Pe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,l,c=[0,0,0],p=[0,0,0],a=[0,0,0],u=[0,0,0],d=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],p[g]=i,m[g]=e,c[g]=i,f[g]=e;for(e=h.next;e!==h;e=e.next)for(var v=0;v<3;++v)i=e.coords[v],i<p[v]&&(p[v]=i,m[v]=e),i>c[v]&&(c[v]=i,f[v]=e);var x=0;if(c[1]-p[1]>c[0]-p[0]&&(x=1),c[2]-p[2]>c[x]-p[x]&&(x=2),p[x]>=c[x]){t[0]=0,t[1]=0,t[2]=1;return}for(l=0,r=m[x],o=f[x],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===ze.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var p=t.vHead.next;p!==t.vHead;p=p.next)if(p.n!==-1){var u=p.n*o;this.vertices[u+0]=p.coords[0],this.vertices[u+1]=p.coords[1],o>2&&(this.vertices[u+2]=p.coords[2]),this.vertexIndices[p.n]=p.idx}for(var d=0,a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var p=i.Org;this.elements[d++]=p.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1;if(e===ze.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){o=r=l.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,p=0,a=0;i=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){s=0,o=r=l.anEdge;do this.vertices[c++]=r.Org.coords[0],this.vertices[c++]=r.Org.coords[1],e>2&&(this.vertices[c++]=r.Org.coords[2]),this.vertexIndices[p++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new uf),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=Pe.ODD),e===void 0&&(e=ze.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_(),qS.computeInterior(this,s);var l=this.mesh;return e===ze.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===ze.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,r,o),!0},n}();function uo(n){var t=n.windingRule,e=t===void 0?Pe.ODD:t,r=n.elementType,o=r===void 0?ze.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,p=n.normal,a=p===void 0?[0,0,1]:p,u=n.contours,d=u===void 0?[]:u,f=n.strict,m=f===void 0?!0:f,h=n.debug,g=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var v=new $S;n.edgeCreateCallback&&(v.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(v.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<d.length;x++)v.addContour(c||2,d[x]);return v.tesselate(e,o,s,c,a,m),{vertices:v.vertices,vertexIndices:v.vertexIndices,vertexCount:v.vertexCount,elements:v.elements,elementCount:v.elementCount,mesh:g?v.mesh:void 0}}}var YB=Pe.ODD,KB=Pe.NONZERO,QB=Pe.POSITIVE,ZB=Pe.NEGATIVE,JB=Pe.ABS_GEQ_TWO,eD=ze.POLYGONS,tD=ze.CONNECTED_POLYGONS,rD=ze.BOUNDARY_CONTOURS;var cn=class extends XS{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Pe.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:Pe.ODD,elementType:ze.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,p=!0,a,u;for(let m=0,h=i.length/2;m<h;m++){let g=m*2,v=i[g+0],x=i[g+1];if(a!==void 0&&v!==a&&(c=!1),u!==void 0&&x!==u&&(p=!1),a=v,u=x,!c&&!p)break}!c&&!p&&(l=uo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new ra(new Float32Array(d*3),3),this._normalAttribute=new ra(new Float32Array(d*3),3),this._uvAttribute=new ra(new Float32Array(d*2),2),this._indexAttribute=new ra(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,g=1/0,v=-1/0;for(let S=0,b=d;S<b;S++){let I=S*2,_=l.vertices[I+0],y=l.vertices[I+1];_<m&&(m=_),_>h&&(h=_),y<g&&(g=y),y>v&&(v=y)}let x=h-m,w=v-g;for(let S=0,b=d;S<b;S++){let I=S*2,_=l.vertices[I+0],y=l.vertices[I+1],P=(_-m)/x,A=(y-g)/w;this._positionAttribute.setXYZ(S,_,y,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,P,A)}for(let S=0,b=f;S<b;S++){let I=S*3,_=l.elements[I+0],y=l.elements[I+1],P=l.elements[I+2];this._indexAttribute.setX(I+0,_),this._indexAttribute.setX(I+1,y),this._indexAttribute.setX(I+2,P)}}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 cn(this._shape,this._curveSegments);return e.userData=Xn(this.userData),e}};import{BufferAttribute as na,BufferGeometry as YS}from"three";var oa=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*oa.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*oa.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)}},ni=oa;ni.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Il=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),un=class extends YS{constructor(e,r,o=0,i=12,s=3,l=Pe.ODD){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 c=this._shape.extractShapePointsToFlatArray([],i),p=this._shape.shapeHoles.map(y=>{let P=y.extractShapePointsToFlatArray([],i),A=[];for(let O=P.length-1;O>=1;O-=2){let T=P[O-1],L=P[O-0];A.push(T,L)}return A}),a=uo({windingRule:l,elementType:ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),u=uo({windingRule:Pe.ODD,elementType:ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...p]});if(!a)throw new Error("error generating geometry");let d=a.elementCount;if(u){a.elementCount+=u.elementCount;for(let y=0;y<u.elements.length;y++){let P=u.elements[y],A=y%2===0?a.vertexCount:0;a.elements.push(P+A)}for(let y=0;y<u.vertexIndices.length;y++){let P=u.vertexIndices[y],A=a.vertexCount;a.vertexIndices.push(P+A)}for(let y=0;y<u.vertices.length;y++){let P=u.vertices[y];a.vertices.push(P)}}let f=1/0,m=-1/0,h=1/0,g=-1/0;for(let y=0,P=a.vertexCount;y<P;y++){let A=y*2,O=a.vertices[A+0],T=a.vertices[A+1];O<f&&(f=O),O>m&&(m=O),T<h&&(h=T),T>g&&(g=T)}this._minX=f,this._minY=h,this._width=m-f,this._height=g-h;let v=a.vertexCount*2*(2+this._bevelSegments);this._buffer=new ni(v);let x=[],w=[];for(let y=a.elementCount-1;y>=0;y--){let P=y>=d,A=y*2,O=a.elements[A+0],T=a.elements[A+1],L=O+T,B={start:O,count:T,normals:[],continuous:[],concave:[]},j=O,te=L-1,ne=O+1,se=this._shape.roundedCurves.length;do{let F=j-O,M=a.vertices[te*2+0],D=a.vertices[te*2+1],E=a.vertices[j*2+0],k=a.vertices[j*2+1],Q=a.vertices[ne*2+0],H=a.vertices[ne*2+1],V=E-M,R=k-D,z=Math.sqrt(V*V+R*R);V/=z,R/=z;let Z=E-Q,re=k-H,ie=Math.sqrt(Z*Z+re*re);Z/=ie,re/=ie,B.normals[F*2+0]=-re,B.normals[F*2+1]=Z,B.concave[F]=V*re-R*Z>0;let ee=a.vertexIndices[j];if(Array.isArray(ee))B.continuous[F]=!1;else{let[J,K]=this._shape.getCurveIndexFromVertexId(ee-1,!0);if(K>0&&K<1)B.continuous[F]=!0;else{let X=K===1?J+1:J-1;X=(X+se)%se;let fe=K===1?0:1,pe=this._shape.roundedCurves[J].getTangent(K),ge=this._shape.roundedCurves[X].getTangent(fe);B.continuous[F]=pe.dot(ge)>.95}}P&&(B.normals[F*2+0]*=-1,B.normals[F*2+1]*=-1),[te,j,ne]=[j,ne,ne+1],ne>=L&&(ne-=T)}while(ne!==O+1);let U=[];U.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(O*2,L*2),vertexCount:T,vertexIndices:new Array(T).fill(!0).map((F,M)=>[M,M]),elements:[0,T],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(O*2,L*2)});for(let F=1;F<=this._bevelSegments;F++){let M=F/this._bevelSegments*Math.PI/2,D=(1-Math.cos(M))*this._bevelSize,E=[],k=[],Q=[],H=[],V=0;for(let z=0;z<T;z++){let Z=z*2,re=(z-1+T)%T*2,ie=a.vertices[B.start*2+Z+0],ee=a.vertices[B.start*2+Z+1],J=-B.normals[re+0]*D,K=-B.normals[re+1]*D,X=-B.normals[Z+0]*D,fe=-B.normals[Z+1]*D;if(B.concave[z]||!B.concave[z]&&P){let pe=Math.atan2(K,J),ge=Math.atan2(fe,X);ge>pe&&(ge-=Math.PI*2);let We=ge-pe;if(B.continuous[z]||P){let we=pe+We/2,Te=Math.cos(we)*D,Ie=Math.sin(we)*D;E[2*V+0]=ie+Te*(P?-1:1),E[2*V+1]=ee+Ie*(P?-1:1),H[V]=z,V++}else{let we=Math.max(1,Math.floor(i/4*Math.abs(We)/Math.PI));for(let Te=0;Te<=we;Te++){let Ie=pe+We*(Te/we),Tt=Math.cos(Ie)*D,Lr=Math.sin(Ie)*D;E[2*V+0]=ie+Tt,E[2*V+1]=ee+Lr,H[V]=z,V++}}}else E[2*V+0]=ie+J,E[2*V+1]=ee+K,H[V]=z,k[z]=V,V++,E[2*V+0]=ie,E[2*V+1]=ee,H[V]=z,V++,E[2*V+0]=ie+X,E[2*V+1]=ee+fe,H[V]=z,Q[z]=V,V++}let R=uo({windingRule:Pe.POSITIVE,elementType:ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[E],edgeCreateCallback:z=>{let re=z.Org.idx,ie=H[re],ee=H[(re+1)%H.length];z.idx=[ie,ee],z.Sym.idx=[ee,ie]},vertexIdCallback:z=>{let Z=z.Lprev.idx;return[Z?Z[1]:0,z.idx[0]]}});if(!R)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!R.vertexCount)break;for(let z=0;z<R.vertexIndices.length;z++){let[Z,re]=R.vertexIndices[z];if(Z===re)continue;let ie=re;re<Z&&(ie+=T);for(let ee=Z;ee<ie;ee++){let J=ee%T,K=(ee+1)%T;if(!B.continuous[J]||!B.continuous[K]){R.vertexIndices[z]=[Z,J],R.vertexIndices.splice(z+1,0,[K,re]),R.vertices.splice((z+1)*2,0,R.vertices[z*2],R.vertices[z*2+1]);break}}}U.push({bevelI:F,angle:M,size:D,boundary:R,reverseMap:H,insetPoints:E})}let W=(F,M,D)=>{let E=0,k=F.boundary.vertexIndices.length;for(;E<k&&D(F.boundary.vertexIndices[M]);)M=(M+1)%k,E++;return E},q=x.length;for(let F=1;F<U.length;F++){let M=U[F-1],D=U[F],E=M.boundary.vertexIndices.length,k=D.boundary.vertexIndices.length;if(!E||!k)break;let Q=B.concave.length,H=0,V=Il(H,T);for(;!M.boundary.vertexIndices.filter(V).length||!D.boundary.vertexIndices.filter(V).length;)H++,V=Il(H,T);let R=M.boundary.vertexIndices.findIndex(V),z=D.boundary.vertexIndices.findIndex(V);do R=(R+1)%E;while(V(M.boundary.vertexIndices[R]));do z=(z+1)%k;while(V(D.boundary.vertexIndices[z]));H=(H+1)%T;let Z=H,re=this.buildBevelVert(B,M,(R-1+E)%E),ie=this.buildBevelVert(B,D,(z-1+k)%k),ee=re,J=ie,K,X,fe=!1;do{V=Il(H,T);let pe=W(M,R,V),ge=W(D,z,V),We=fe;if(fe=!1,pe&&!ge){for(let we=0;we<pe;we++)K=this.buildBevelVert(B,M,(R+we)%E,we/(pe-1)),x.push(ee.topN,K.topP,J.topN),x.push(K.bottomP,ee.bottomN,J.bottomN),ee=K;fe=!0}else if(!pe&&ge)for(let we=0;we<ge;we++)X=this.buildBevelVert(B,D,(z+we)%k,we/(ge-1)),x.push(J.topN,ee.topP,X.topP),x.push(ee.bottomP,J.bottomN,X.bottomP),J=X;else if(pe&&ge)if(K=this.buildBevelVert(B,M,R,0),X=this.buildBevelVert(B,D,z,0),We?(x.push(ee.topN,X.topP,J.topN),x.push(ee.topN,K.topP,X.topP),x.push(X.bottomP,ee.bottomN,J.bottomN),x.push(X.bottomP,K.bottomP,ee.bottomN)):(x.push(J.topN,ee.topN,K.topP),x.push(J.topN,K.topP,X.topP),x.push(K.bottomP,ee.bottomN,J.bottomN),x.push(K.bottomP,J.bottomN,X.bottomP)),ee=K,J=X,pe===ge)for(let we=1;we<pe;we++)K=this.buildBevelVert(B,M,(R+we)%E,we/(pe-1)),X=this.buildBevelVert(B,D,(z+we)%k,we/(ge-1)),x.push(ee.topN,K.topP,J.topN),x.push(J.topN,K.topP,X.topP),x.push(K.bottomP,ee.bottomN,J.bottomN),x.push(K.bottomP,J.bottomN,X.bottomP),ee=K,J=X;else if(pe>ge){let we=pe/ge,Te=0;for(let Ie=1;Ie<pe;Ie++)K=this.buildBevelVert(B,M,(R+Ie)%E,Ie/(pe-1)),x.push(ee.topN,K.topP,J.topN),x.push(K.bottomP,ee.bottomN,J.bottomN),ee=K,Ie>(Te+1)*we&&(Te++,X=this.buildBevelVert(B,D,(z+Te)%k,Te/(ge-1)),x.push(J.topN,K.topP,X.topP),x.push(K.bottomP,J.bottomN,X.bottomP),J=X)}else{let we=ge/pe,Te=0;for(let Ie=1;Ie<ge;Ie++)X=this.buildBevelVert(B,D,(z+Ie)%k,Ie/(ge-1)),x.push(J.topN,K.topP,X.topP),x.push(K.bottomP,J.bottomN,X.bottomP),J=X,Ie>(Te+1)*we&&(Te++,K=this.buildBevelVert(B,M,(R+Te)%E,Te/(pe-1)),x.push(ee.topN,K.topP,J.topN),x.push(K.bottomP,ee.bottomN,J.bottomN),ee=K)}R=(R+pe)%E,z=(z+ge)%k,H=(H+1)%Q}while(H!==Z)}{let F=U[0];for(let M=0,D=F.boundary.vertexCount;M<D;M++){let E=this.buildBevelVert(B,F,M),k=this.buildBevelVert(B,F,(M+1)%D);x.push(k.topP,E.topN,E.bottomN),x.push(k.topP,E.bottomN,k.bottomP)}}if(P){let F=[];for(let M=x.length-1;M>=q+2;M-=3){let D=x[M-2],E=x[M-1],k=x[M-0];F.push(k,E,D)}x.splice(q,x.length-q,...F)}if(P){let F=[];for(let M=U[U.length-1].boundary.vertices.length-1;M>=1;M-=2){let D=U[U.length-1].boundary.vertices[M-1],E=U[U.length-1].boundary.vertices[M-0];F.push(D,E)}w.push(F)}if(!P){let F=U[U.length-1],M=uo({windingRule:U.length>1?Pe.POSITIVE:Pe.ODD,elementType:ze.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...w]});if(!M)throw new Error("Error generating geometry for surface");p.length===0&&Object.assign(this,{capStartIndex:x.length});for(let D=0;D<M.elementCount*3;D+=3){let E=this.buildSurfaceVert(M,M.elements[D+0]),k=this.buildSurfaceVert(M,M.elements[D+1]),Q=this.buildSurfaceVert(M,M.elements[D+2]);x.push(E.top,k.top,Q.top),x.push(Q.bottom,k.bottom,E.bottom)}}this.vertexCache={}}this._buffer.shrink();let S=new na(Uint32Array.from(x),1),b=new na(this._buffer.positions,3),I=new na(this._buffer.normals,3),_=new na(this._buffer.uvs,2);b.needsUpdate=!0,I.needsUpdate=!0,_.needsUpdate=!0,S.needsUpdate=!0,this.setAttribute("position",b),this.setAttribute("normal",I),this.setAttribute("uv",_),this.setIndex(S)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,p=this._buffer.get(2),a=p*3,u=p*2,d={top:p+0,bottom:p+1};return this._buffer.positions[a+0]=i,this._buffer.positions[a+1]=s,this._buffer.positions[a+2]=this._depth,this._buffer.normals[a+0]=0,this._buffer.normals[a+1]=0,this._buffer.normals[a+2]=1,this._buffer.uvs[u+0]=l,this._buffer.uvs[u+1]=c,this._buffer.positions[a+3]=i,this._buffer.positions[a+4]=s,this._buffer.positions[a+5]=0,this._buffer.normals[a+3]=0,this._buffer.normals[a+4]=0,this._buffer.normals[a+5]=-1,this._buffer.uvs[u+2]=l,this._buffer.uvs[u+3]=c,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=r.boundary.vertexIndices[o],p,a,u,d;l!==c?(a=l,p=c,d=!1,u=e.continuous[a]&&e.continuous[p]):(p=l,a=(p-1+e.count)%e.count,d=e.concave[p]&&r.bevelI>0,u=e.continuous[p]||d);let f=Math.cos(r.angle),m=Math.sin(r.angle),h=o*2,g=p*2,v=a*2,x=r.boundary.vertices[h+0],w=r.boundary.vertices[h+1],S=(1-m)*this._bevelSize,b=(x-this._minX)/this._width,I=(w-this._minY)/this._height,_=e.normals[g+0],y=e.normals[g+1],P=e.normals[v+0],A=e.normals[v+1];if(d){let j=P-_,te=A-y;_=_+j*(1-i),y=y+te*(1-i);let ne=Math.sqrt(_*_+y*y);_/=ne,y/=ne}let O=this._buffer.get(u?2:4),T=O*3,L=O*2,B={i:o,fi:p,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1};return this._buffer.positions[T+0]=x,this._buffer.positions[T+1]=w,this._buffer.positions[T+2]=this._depth-S,this._buffer.normals[T+0]=_*f,this._buffer.normals[T+1]=y*f,this._buffer.normals[T+2]=m,this._buffer.uvs[L+0]=b,this._buffer.uvs[L+1]=I,this._buffer.positions[T+3]=x,this._buffer.positions[T+4]=w,this._buffer.positions[T+5]=S,this._buffer.normals[T+3]=_*f,this._buffer.normals[T+4]=y*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[L+2]=I,this._buffer.uvs[L+3]=b,u||(O+=2,T+=6,L+=4,B.topP=O+0,B.bottomP=O+1,this._buffer.positions[T+0]=x,this._buffer.positions[T+1]=w,this._buffer.positions[T+2]=this._depth-S,this._buffer.normals[T+0]=P*f,this._buffer.normals[T+1]=A*f,this._buffer.normals[T+2]=m,this._buffer.uvs[L+0]=b,this._buffer.uvs[L+1]=I,this._buffer.positions[T+3]=x,this._buffer.positions[T+4]=w,this._buffer.positions[T+5]=S,this._buffer.normals[T+3]=P*f,this._buffer.normals[T+4]=A*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[L+2]=I,this._buffer.uvs[L+3]=b),this.vertexCache[s]=B,B}clone(){let e=new un(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Xn(this.userData),e}};var Je=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,windingRule:Pe.ODD},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 ve?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new ve(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new ve(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,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return t<=0?l=new cn(n.shape,o,{windingRule:s}):l=new un(n.shape,t,e,o,r,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{Mesh as K1,Matrix4 as Q1}from"three";import{ConeGeometry as ZS}from"three";import{BufferGeometry as KS,CylinderGeometry as QS,Float32BufferAttribute as Pl,Vector2 as Ft,Vector3 as ia}from"three";var hf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:p,radiusBottom:a,cornerRadius:u,cornerSegments:d,hollow:f}=n.parameters,m;return u||f?m=new ii(p,a,r,o,i,s,l,c*Math.PI/180,u,u,d,f):m=new QS(p,a,r,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function $r(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function mf(n){return new Ft(n.y,-n.x)}var ii=class extends KS{constructor(t,e,r,o,i,s,l,c,p,a,u,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(p=0,a=0);let m=[],h=[],g=[],v=[],x=0,w=r/2,S=new ia,b=new ia;f&&t==0&&(t=p),f&&e==0&&(e=a);let I=new Ft(t,w),_=new Ft(e,-w),y=null,P=null,A=null,O=null,T=I.clone().sub(_),L=0,B=0,j=0;d>0&&(L=Math.min(t,e)*(1-d),B=t-L,j=e-L);let te=I.clone();te.x-=L;let ne=Math.PI-T.angle(),se=T.angle(),U=Math.tan(se/2),W=Math.tan(ne/2),q=U+W,F=d?q:W,M=d?q:U;if(p=Math.min(p,(t-B)/F,T.length()/q),a=Math.min(a,(e-j)/M,T.length()/q),p>0){let V=p/U;y=I.clone().sub(new Ft(V,p)),d&&(A=y.clone(),A.x-=L-q*p),I.sub(T.clone().setLength(V))}if(a>0){let V=a/W;P=_.clone().sub(new Ft(V,-a)),_.add(T.clone().setLength(V)),d&&(O=P.clone(),O.x-=L-q*a,te.sub(T.clone().setLength(V)))}T=I.clone().sub(_);let D=T.length()<.5,E=[];for(let V=0;V<=o;V++){let R=[],z=V/o,Z=z*c+l,re=new Ft(Math.sin(Z),Math.cos(Z));O&&P?(k(R,z,re,ne,a,O,-1,!0),k(R,z,re,se,a,P,-1,!1)):P?(Q(R,re,P.x,0,-1),k(R,z,re,se,a,P,-1,!1)):s||Q(R,re,e,j,-1);let ie=mf(T).normalize();if($r(ie,re,S),!D)for(let ee=0;ee<=i;ee++){let J=ee/i,K=T.clone().multiplyScalar(J).add(_);$r(K,re,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),v.push(z,.5+b.y/r),R.push(x++)}if(A&&y?(k(R,z,re,ne,p,y,1,!1),k(R,z,re,se,p,A,1,!0)):y?(k(R,z,re,ne,p,y,1,!1),Q(R,re,y.x,0,1)):s||Q(R,re,t,B,1),d&&!D){let ee=mf(T).multiplyScalar(-1).normalize();$r(ee,re,S);for(let J=0;J<=i;J++){let K=J/i,X=T.clone().multiplyScalar(-K).add(te);$r(X,re,b),h.push(b.x,b.y,b.z),g.push(S.x,S.y,S.z),v.push(z,.5+b.y/r),R.push(x++)}}d&&!s&&R.push(R[0]),E.push(R)}for(let V=0;V<E.length-1;V++)for(let R=0;R<E[0].length-1;R++){if(s&&d&&R==i)continue;let z=E[V][R],Z=E[V+1][R],re=E[V+1][R+1],ie=E[V][R+1],ee=h[re*3+0],J=h[re*3+2];m.push(z,Z,ie),(ee!=0||J!=0)&&m.push(Z,re,ie)}c<Math.PI*2&&(H(-1,E[0],l),H(1,E[E.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Pl(h,3)),this.setAttribute("normal",new Pl(g,3)),this.setAttribute("uv",new Pl(v,2));function k(V,R,z,Z,re,ie,ee,J){for(let K=0;K<u+1;K++){let X=K/u,fe=ee<0?X:1-X;J&&(fe-=1),fe*=Z;let pe=new Ft(Math.sin(fe),Math.cos(fe)*ee),ge=pe.clone().multiplyScalar(re).add(ie);$r(ge,z,b),h.push(b.x,b.y,b.z),$r(pe,z,S),g.push(S.x,S.y,S.z),v.push(R,.5+b.y/r),V.push(x++)}}function Q(V,R,z,Z,re){let ie=new ia,ee=new Ft,J=[z,Z];re<0&&J.reverse();for(let K of J)ee.set(K,w*re),$r(ee,R,ie),h.push(ie.x,ie.y,ie.z),g.push(0,re,0),v.push(.5,.5),V.push(x++)}function H(V,R,z){let Z=new Ft(Math.sin(z),Math.cos(z)),re=new Ft(-Math.cos(z),Math.sin(z)),ie=new ia,ee=V<0?(X,fe,pe)=>m.push(X,fe,pe):(X,fe,pe)=>m.push(X,pe,fe),J=new Ft((t+e+B+j)/4,0);$r(J,Z,ie),h.push(ie.x,ie.y,ie.z),g.push(re.x,0,re.y),v.push(.5,.5);let K=x++;for(let X of R){let fe=h.slice(X*3,X*3+3);h.push(...fe),g.push(re.x,0,re.y);let pe=v.slice(X*2,X*2+2);v.push(...pe),x++}for(let X=K+1;X<x-1;X++)ee(K,X,X+1);ee(K,x-1,K+1)}}};var gf=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 ZS(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as JS,BufferGeometry as ew,Float32BufferAttribute as Ol,Vector3 as si}from"three";var yf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments: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 JS(t,e,r,o,i,s):p=new Ll(t,e,r,o,i,s,l,c),Object.assign(p,{userData:{...n,type:"CubeGeometry"}})}},Cl=Math.PI/2,Ll=class extends ew{constructor(t=1,e=1,r=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let p=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,t/2,e/2,r/2);let a=[],u=[],d=[],f=[],m=0,h=0;g("z","y","x",-1,-1,r,e,t,s,i,0),g("z","y","x",1,-1,r,e,-t,s,i,1),g("x","z","y",1,1,t,r,e,o,s,2),g("x","z","y",1,-1,t,r,-e,o,s,3),g("x","y","z",1,-1,t,e,r,o,i,4),g("x","y","z",-1,-1,t,e,-r,o,i,5),l>0&&(v("z","y","x",-1,-1,1,r,e,t,s,0),v("z","y","x",1,-1,-1,r,e,t,s,1),v("z","y","x",-1,1,-1,r,e,t,s,1),v("z","y","x",1,1,1,r,e,t,s,0),v("x","y","z",-1,-1,-1,t,e,r,o,0),v("x","y","z",1,-1,1,t,e,r,o,1),v("x","y","z",-1,1,1,t,e,r,o,0),v("x","y","z",1,1,-1,t,e,r,o,1),v("y","x","z",-1,-1,1,e,t,r,i,0),v("y","x","z",1,-1,-1,e,t,r,i,1),v("y","x","z",1,1,1,e,t,r,i,1),v("y","x","z",-1,1,-1,e,t,r,i,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new Ol(u,3)),this.setAttribute("normal",new Ol(d,3)),this.setAttribute("uv",new Ol(f,2));function g(w,S,b,I,_,y,P,A,O,T,L){let B=(y-2*l)/O,j=(P-2*l)/T,te=y/2-l,ne=P/2-l,se=A/2,U=O+1,W=T+1,q=0,F=0,M=new si;for(let D=0;D<W;D++){let E=D*j-ne;for(let k=0;k<U;k++){let Q=k*B-te;M[w]=Q*I,M[S]=E*_,M[b]=se,u.push(M.x,M.y,M.z),M[w]=0,M[S]=0,M[b]=A>0?1:-1,d.push(M.x,M.y,M.z),f.push(k/O),f.push(1-D/T),q+=1}}for(let D=0;D<T;D++)for(let E=0;E<O;E++){let k=m+E+U*D,Q=m+E+U*(D+1),H=m+(E+1)+U*(D+1),V=m+(E+1)+U*D;a.push(k,Q,V),a.push(Q,H,V),F+=6}p.addGroup(h,F,L),h+=F,m+=q}function v(w,S,b,I,_,y,P,A,O,T,L){let B=(P-2*l)/T,j=P/2-l,te=A/2-l,ne=O/2,se=T+1,U=0,W=0,q=new si,F=new si;for(let M=0;M<c+1;M++){let D=M/c*Cl,E=Math.sin(D)*l,k=(1-Math.cos(D))*l,Q=Math.sin(D),H=Math.cos(D);q[S]=(te+E)*_,q[b]=(ne-k)*y,F[w]=0,F[S]=Q*Math.sign(q[S]),F[b]=H*Math.sign(q[b]);for(let V=0;V<se;V++){let R=V*B-j;q[w]=R*I,u.push(q.x,q.y,q.z),d.push(F.x,F.y,F.z),f.push(V/T),f.push(0),U+=1}}for(let M=0;M<c;M++)for(let D=0;D<T;D++){let E=m+D+se*M,k=m+D+se*(M+1),Q=m+(D+1)+se*(M+1),H=m+(D+1)+se*M;a.push(E,k,H),a.push(k,Q,H),W+=6}p.addGroup(h,W,L),h+=W,m+=U}function x(w,S,b){let I=new si,_=new si(t/2,e/2,r/2);_.subScalar(l);let y=[],P=w*S*b>0?(O,T,L)=>a.push(O,T,L):(O,T,L)=>a.push(O,L,T);for(let O=0;O<=c;O++){let T=[],L=Cl*(1-O/c),B=Math.cos(L),j=Math.sin(L),te=0;for(let ne=0;ne<=O;ne++){let se=Math.cos(te),U=Math.sin(te);I.x=B*se,I.y=j,I.z=B*U;let W=_.clone().addScaledVector(I,l);u.push(w*W.x,S*W.y,b*W.z),d.push(w*I.x,S*I.y,b*I.z),f.push(0,0),T.push(m++),te+=Cl/O}y.push(T)}let A=y.length-1;for(let O=0;O<A;O++){let T=y[O],L=y[O+1],B=T.length-1;P(T[0],L[1],L[0]);for(let j=1;j<=B;j++)P(T[j-1],T[j],L[j]),P(T[j],L[j+1],L[j])}}}};import{BufferGeometry as tw,Float32BufferAttribute as Ml,Triangle as rw,Vector3 as Pr,Vector2 as El}from"three";var Xr=class extends tw{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],p=[];a(),u(),this.setAttribute("position",new Ml(l,3)),this.setAttribute("normal",new Ml(p,3)),this.setAttribute("uv",new Ml(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new Pr,h=m.clone(),g=new rw,v=i*o,x=o-v,w=s+1,S=new Pr,b=(U,W)=>S.subVectors(U,W).normalize(),I=(U,W)=>Array(U).fill(void 0).map(W),_=I(t.length/3,(U,W)=>new Pr().fromArray(t,W*3).setLength(o)),y=[],P=1e6;for(let U=0;U<_.length;U++){let W=_[U],q=[],F,M,D,E=1e10,k=-1;for(;(k=e.indexOf(U,k+1))!=-1;){let R=k-k%3;F=e[R+(k+1)%3],M=e[R+(k+2)%3],D=W.distanceToSquared(_[F]),E=Math.min(E,D),q.push([F,M,D])}E+=1e-6;let Q=[],H=0,V=q.length;for(let R=0;R<V;R++){[F,M,D]=q[H];let z=y[F]?.includes(U)==!0;D<=E&&Q.push(F+ +z*P),H=q.findIndex(Z=>Z[0]==M)}y.push(Q)}let A=[];{let U=0,W=0,q,F,M=f==3;for(let D=0;D<=s;D++){q=D*(D+1)/2,F=(D+1)*(D+2)/2;for(let E=0;E<s-D;E++)[U,W]=[q+E+D+2,F+E+D+3],A.push(q,F,...M?[W,q]:[U,F],W,U),[q,F]=[U,W];A.push(q,F,q+s+2)}}let O=m.clone(),T=m.clone(),L=m.clone(),B=m.clone(),j=m.clone(),te=[],ne=I(_.length,()=>I(f,()=>m.clone()));for(let U=0;U<_.length;U++){m.copy(_[U]).normalize(),O.copy(m).multiplyScalar(x);let W=y[U];for(let Q=0;Q<W.length;Q++){let H=W[Q],V=W[(Q+1)%f];g.setFromPointsAndIndices(_,U,H%P,V%P),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(O,ne[U][Q])}let q=[],F=[],M=[],D=new Pr;s==0&&[...ne[U]].reduce((Q,H)=>Q.add(H),D).multiplyScalar(1/f);for(let Q=0;Q<f;Q++){let H=[],V=(Q-1+f)%f,R=ne[U][V],z=ne[U][Q];m.copy(R).sub(O),h.copy(z).sub(O);let Z=O.angleTo(m),re=m.angleTo(h),ie=Math.cos(Z)*v;s==0?T.copy(D):T.copy(O).setLength(x+ie),F.push(ie);let ee=[T,R,z];for(let J=0;J<2;J++){let K=ee[J],X=ee[J+1];B.subVectors(K,O),j.subVectors(X,O),L.crossVectors(B,j).normalize();for(let fe=0;fe<w;fe++){let pe=[Z,re][J]*fe/w;m.copy(B).applyAxisAngle(L,pe).add(O),q.push(m.clone()),J&&(b(m,O),H.push([fe==0?K:m.clone(),S.clone()]))}J&&(b(X,O),H.push([X,S.clone()]))}M.push(H)}te.push(M);let E=2*w,k=2;for(let Q=0;Q<f;Q++){let H=E*Q,V=E*((Q+1)%f),R=[q[H]];for(let Z=1;Z<w;Z++){B=q[H+Z],j=q[V+Z],R.push(B);for(let re=1,ie=Z-k+1;re<=ie;re++)m.lerpVectors(B,j,re/(ie+1)),m.sub(O).setLength(F[Q]).add(O),R.push(m.clone());R.push(j)}for(let Z=0;Z<w;Z++)R.push(q[Z+w+H]);R.push(q[V+w]);let z=A.map(Z=>R[Z]);l.push(...z.map(Z=>[Z.x,Z.y,Z.z]).flat()),p.push(...z.map(Z=>(b(Z,O),[S.x,S.y,S.z])).flat())}}let se=[];for(let U=0;U<y.length;U++)for(let W=0;W<f;W++){let q=y[U][W];if(q<P){let F=y[q].findIndex(E=>E%P==U),M=te[U][W],D=te[q][F];for(let E=0;E<w;E++){let k=M[E],Q=D[w-E],H=M[E+1],V=D[w-(E+1)];[k,Q,H,H,Q,V].forEach(R=>{l.push(R[0].x,R[0].y,R[0].z),p.push(R[1].x,R[1].y,R[1].z)})}se.push(M[0][0],D[w][0],M[w][0],D[0][0])}}for(;se.length;){let U,W,q,F;[U,W]=se.splice(0,2);let M=[U];for(;U!=W;)M.push(W),q=se.indexOf(W),F=q%2,W=se.splice(q-F,2)[1-F];S.subVectors(M[0],M[1]).cross(m.subVectors(M[0],M[2])).normalize();let D=S.dot(M[0])<0;D&&S.negate();for(let E=1;E<=M.length-2;E++)[M[E+ +D],M[E+1-+D],M[0]].forEach(k=>{l.push(k.x,k.y,k.z),p.push(S.x,S.y,S.z)})}}function u(){let d=new Pr;for(let _=0;_<l.length;_+=3){d.x=l[_+0],d.y=l[_+1],d.z=l[_+2];let y=b(d)/2/Math.PI+.5,P=I(d)/Math.PI+.5;c.push(y,1-P)}let f=new Pr,m=new Pr,h=new Pr,g=new Pr,v=new El,x=new El,w=new El,S=(_,y,P,A)=>{A<0&&_.x===1&&(c[y]=_.x-1),P.x===0&&P.z===0&&(c[y]=A/2/Math.PI+.5)};for(let _=0,y=0;_<l.length;_+=9,y+=6){f.set(l[_+0],l[_+1],l[_+2]),m.set(l[_+3],l[_+4],l[_+5]),h.set(l[_+6],l[_+7],l[_+8]),v.set(c[y+0],c[y+1]),x.set(c[y+2],c[y+3]),w.set(c[y+4],c[y+5]),g.copy(f).add(m).add(h).divideScalar(3);let P=b(g);S(v,y+0,f,P),S(x,y+2,m,P),S(w,y+4,h,P)}for(let _=0;_<c.length;_+=6){let y=c[_+0],P=c[_+2],A=c[_+4],O=Math.max(y,P,A),T=Math.min(y,P,A);O>.9&&T<.1&&(y<.2&&(c[_+0]+=1),P<.2&&(c[_+2]+=1),A<.2&&(c[_+4]+=1))}function b(_){return Math.atan2(_.z,-_.x)}function I(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(t){return new Xr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as ow}from"three";var xf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,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 ai(t*.5,i,s):new ow(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},ai=class extends Xr{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 ai(t.radius,t.corner,t.cornerSides)}};var Dl=Math.PI*2;function Bl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function nw(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 vf(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 iw(n,t,e,r,o,i,s,l,c,p){let a=Math.pow(o,2),u=Math.pow(i,2),d=Math.pow(s,2),f=Math.pow(l,2),m=a*u-a*f-u*d;m<0&&(m=0),m/=a*f+u*d,m=Math.sqrt(m)*(c===p?-1:1);let h=m*o/i*l,g=m*-i/o*s,v=h+(n+e)/2,x=g+(t+r)/2,w=(s-h)/o,S=(l-g)/i,b=(-s-h)/o,I=(-l-g)/i,_=vf(1,0,w,S),y=vf(w,S,b,I);return!p&&y>0&&(y-=Dl),p&&y<0&&(y+=Dl),{centerx:v,centery:x,ang1:_,ang2:y}}function bf({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=iw(n,t,e,r,o,i,p,a,s,l),{ang1:f,ang2:m}=d,{centerx:h,centery:g}=d,v=Math.abs(m)/(Dl/4);Math.abs(1-v)<1e-7&&(v=1);let x=Math.max(Math.ceil(v),1);m/=x;for(let w=0;w<x;w++)c.push(nw(f,m)),f+=m;return c.map(w=>{let{x:S,y:b}=Bl(w[0],o,i,h,g),{x:I,y:_}=Bl(w[1],o,i,h,g),{x:y,y:P}=Bl(w[2],o,i,h,g);return{x1:S,y1:b,x2:I,y2:_,x:y,y:P}})}import{MathUtils as wf,Vector2 as _f}from"three";var Tf=Math.PI*2,Af=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 ve?n.shape:new ve,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=sw(p,a,u,o*Math.PI/180,r,i);p.isClosed=!0,p.update();let f=Je.create({shape:p,parameters:{subdivisions:d,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function sw(n,t,e,r,o,i){if(r>=Tf)return o>30||o%4===0?(lw(n,t,e,i),Math.round(o/4)):Sf(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=bf({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?aw(n,s.x,s.y,p,o,t,e,i):Sf(n,r,o,t,e,i)}function aw(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(pn(t,e));for(let p=0,a=r.length;p<a;p++){let u=r[p],d=n.points[p],f=pn(u.x,u.y);d.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return l>0?Nf(n,i,s,l):n.addPoint(pn(0,0)),c}function Sf(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(pn(p,a))}return t<Tf?i>0?Nf(n,r,o,i):n.addPoint(pn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&If(n,r,o,i)),1}function lw(n,t,e,r=0,o=0,i=0){let s=.5522847498,l=t*s,c=e*s;n.addPoint(sa(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(sa(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(sa(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(sa(o,i-e,o+l,i-e,o-l,i-e)),r>0&&If(n,t,e,r)}function pn(n,t){return new Vt(wf.generateUUID(),new _f(n,t))}function sa(n,t,e,r,o,i){let s=pn(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Nf(n,t,e,r){Pf(n,t,e,r).forEach(i=>n.addPoint(i))}function If(n,t,e,r){let o=Pf(n,t,e,r),i=new ve;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Pf(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new _f(o/t,i/e),l=n.points.map(c=>{let p=c.clone();return p.uuid=wf.generateUUID(),p}).reverse();return l.forEach(c=>{c.position.multiply(s);let p=c.controls[0].position.clone().multiply(s),a=c.controls[1].position.clone().multiply(s);c.controls[0].position.copy(a),c.controls[1].position.copy(p)}),l}import{BufferGeometry as cw,Float32BufferAttribute as Gl,Vector3 as Of}from"three";var Cf=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 li(!1,t,e,r,o,i,s,l,c,p,a,u);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},li=class extends cw{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,l=1,c=1,p=1,a=1,u=1,d=1){super();let f=t&&s===1;f&&(d=0),u>100&&(u=100);let m=()=>new Of,h=new Of,g=m(),v=m(),x=m(),w,S,b,I,_,y,P,A,O=m(),T=m(),L=m(),B=m(),j=m(),te=m(),ne=m(),se=m(),U=r-2*c+.001,W=U/s,q=Math.ceil(l*s),F=q+1,M=U/q,D=-U/2,E=a+1,k=2*Math.PI/a,Q=Math.PI/2/d,H=.01,V=Math.min((1-u/100)*c,c-H),R=c-V,z=0,Z=2,re=d*Z+Z,ie=E*re/Z,ee=ie+E*F,J=E*(F+re),[K,X,fe]=[3,3,2].map(Ge=>Array(J*Ge).fill(0)),pe=[],ge=i-c;function We(Ge,xt){let qt=Math.PI/2;y=xt*M,A=2*Math.PI*(y%W)/W+qt,y+=D,P=Math.sin(A)*ge,_=Math.cos(A)*ge,t?Ge.set(_,P,y):Ge.set(_,y,P)}We(h,-1e-10),We(g,0),O.copy(h),We(h,1);let we=h.distanceTo(g),Te=R+V,Ie=we*q+2*Te,Tt=V,Lr=Ie-Te;for(let Ge=0;Ge<=q;Ge++){We(v,Ge),se.subVectors(v,O).normalize(),O.copy(v),te.copy(v).setComponent(+t+1,0).normalize(),ne.crossVectors(se,te).normalize();let xt=Ge===0,qt=Ge===q,Ch=xt?3*Math.PI/2:Q,Lh=xt?Tt:Lr,Mh=xt?E:ee,Eh=xt?0:J-E,Bh=se.clone().multiplyScalar(xt?-R:R).add(v),Dh=se.clone().multiplyScalar(xt?-1:1).normalize();for(let xr=0;xr<E;xr++){let Ec=xr*k;if(T.addVectors(h.copy(te).multiplyScalar(c*Math.cos(Ec)),g.copy(ne).multiplyScalar(c*Math.sin(Ec))),L.copy(T).normalize(),xt||qt){f||(z=Eh+xr,[0,1,2].forEach(ct=>{K[z*3+ct]=Bh.getComponent(ct),X[z*3+ct]=Dh.getComponent(ct)}),fe[z*2]=+qt,fe[z*2+1]=xr/a),g.copy(L).multiplyScalar(V),x.addVectors(v,g);for(let ct=0;ct<d;ct++){let Ra=ct*Q+Ch;B.addVectors(h.copy(se).multiplyScalar(R*Math.sin(Ra)),g.copy(L).multiplyScalar(R*Math.cos(Ra))),j.copy(B).normalize(),g.addVectors(x,B),B.normalize(),z=Mh+ct*E+xr,[0,1,2].forEach(Hi=>{K[z*3+Hi]=g.getComponent(Hi),X[z*3+Hi]=j.getComponent(Hi)});let Gh=+xt+Math.sin(Ra);fe[z*2]=(Lh+R*Gh)/Ie,fe[z*2+1]=xr/a}}g.addVectors(v,T),z=ie+Ge*E+xr,[0,1,2].forEach(ct=>{K[z*3+ct]=g.getComponent(ct),X[z*3+ct]=L.getComponent(ct)}),fe[z*2]=(Te+Ge*we)/Ie,fe[z*2+1]=xr/a}}let yt=F+2*d+Z,So=1,[ji,ki]=f?[So,So+F-1]:[0,yt-1];for(let Ge=ji;Ge<=ki-1;Ge++){let xt=f&&Ge===ki-1;for(let qt=0;qt<E-1;qt++)w=Ge*E+qt,S=w+1,b=(xt?qt:w)+E,I=(xt?qt+1:S)+E,Ge===0?pe.push(S,I,b):Ge===yt-2?pe.push(w,S,b):pe.push(w,S,b,S,I,b)}this.setIndex(pe),this.setAttribute("position",new Gl(K,3)),this.setAttribute("normal",new Gl(X,3)),this.setAttribute("uv",new Gl(fe,2))}};import{IcosahedronGeometry as uw}from"three";var Lf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new ci(t*.5,i,s):new uw(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},ci=class extends Xr{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 ci(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as pw,Shape as dw}from"three";var Mf=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 dw;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 pw(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Vf,BufferGeometryLoader as ww,Vector3 as _w,BoxGeometry as Ff}from"three";import{BufferGeometry as xw,Vector2 as Fl,Vector3 as Rf}from"three";import{Box3 as fw,BufferAttribute as ui,BufferGeometry as Ef,Color as Df,EventDispatcher as mw,Float32BufferAttribute as dn,Matrix3 as Bf,Matrix4 as Gf,MathUtils as hw,Object3D as gw,Sphere as yw,Vector2 as Ot,Vector3 as nt}from"three";var rr=new Gf,Rl=new gw,aa=new nt,Yr=class extends mw{constructor(){super(),this.uuid=hw.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 Bf().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 rr.makeRotationX(t),this.applyMatrix4(rr),this}rotateY(t){return rr.makeRotationY(t),this.applyMatrix4(rr),this}rotateZ(t){return rr.makeRotationZ(t),this.applyMatrix4(rr),this}translate(t,e,r){return rr.makeTranslation(t,e,r),this.applyMatrix4(rr),this}scale(t,e,r){return rr.makeScale(t,e,r),this.applyMatrix4(rr),this}lookAt(t){return Rl.lookAt(t),Rl.updateMatrix(),this.applyMatrix4(Rl.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 nt().fromBufferAttribute(i,d)),l!==void 0&&e.colors.push(new Df().fromBufferAttribute(l,d));function a(d,f,m,h){let g=l===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[m].clone()],v=s===void 0?[]:[new nt().fromBufferAttribute(s,d),new nt().fromBufferAttribute(s,f),new nt().fromBufferAttribute(s,m)],x=new fn(d,f,m,v,g,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new Ot().fromBufferAttribute(c,d),new Ot().fromBufferAttribute(c,f),new Ot().fromBufferAttribute(c,m)]),p!==void 0&&e.faceVertexUvs[1].push([new Ot().fromBufferAttribute(p,d),new Ot().fromBufferAttribute(p,f),new Ot().fromBufferAttribute(p,m)])}let u=t.groups;if(u.length>0)for(let d=0;d<u.length;d++){let f=u[d],m=f.start,h=f.count;for(let g=m,v=m+h;g<v;g+=3)r!==void 0?a(r.getX(g),r.getX(g+1),r.getX(g+2),f.materialIndex):a(g,g+1,g+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)a(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)a(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(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 Gf;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 nt,e=new nt;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 nt;if(t){let r=new nt,o=new nt;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 Yr;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 nt,a={a:new nt,b:new nt,c:new nt};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 fw),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new yw),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 Bf().getNormalMatrix(e));for(let d=0,f=l.length;d<f;d++){let h=l[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=u.length;d<f;d++)a.push(u[d].clone());for(let d=0,f=p.length;d<f;d++){let m=p[d],h,g,v=m.vertexNormals,x=m.vertexColors,w=new fn(m.a+i,m.b+i,m.c+i);w.normal.copy(m.normal),o!==void 0&&w.normal.applyMatrix3(o).normalize();for(let S=0,b=v.length;S<b;S++)h=v[S].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),w.vertexNormals.push(h);w.color.copy(m.color);for(let S=0,b=x.length;S<b;S++)g=x[S],w.vertexColors.push(g.clone());w.materialIndex=m.materialIndex+r,c.push(w)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let v=m[h],x=[];for(let w=0,S=v.length;w<S;w++)x.push(v[w].clone());this.faceVertexUvs[d].push(x)}}}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 nt(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let c=0;c<e;c++)t[c]._id=c;function r(c,p){return c.materialIndex-p.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],s,l;o&&o.length===e&&(s=[]),i&&i.length===e&&(l=[]);for(let c=0;c<e;c++){let p=t[c]._id;s&&s.push(o[p]),l&&l.push(i[p])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(t[h]=m[h]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],l={},c=[],p={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],g=!0,v=!1,x=this.faceVertexUvs[0][m]!==void 0,w=h.normal.length()>0,S=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,I=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,g),_=a(_,2,v),_=a(_,3,x),_=a(_,4,w),_=a(_,5,S),_=a(_,6,b),_=a(_,7,I),r.push(_),r.push(h.a,h.b,h.c),r.push(h.materialIndex),x){let y=this.faceVertexUvs[0][m];r.push(f(y[0]),f(y[1]),f(y[2]))}if(w&&r.push(u(h.normal)),S){let y=h.vertexNormals;r.push(u(y[0]),u(y[1]),u(y[2]))}if(b&&r.push(d(h.color)),I){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function a(m,h,g){return g?m|1<<h:m&~(1<<h)}function u(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function d(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[h]}function f(m){let h=m.x.toString()+m.y.toString();return p[h]!==void 0||(p[h]=c.length/2,c.push(m.x,m.y)),p[h]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),c.length>0&&(t.data.uvs=[c]),t.data.faces=r,t}clone(){return new Yr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let v=m[h],x=[];for(let w=0,S=v.length;w<S;w++){let b=v[w];x.push(b.clone())}this.faceVertexUvs[d].push(x)}}let i=t.morphTargets;for(let d=0,f=i.length;d<f;d++){let m={};if(m.name=i[d].name,i[d].vertices!==void 0){m.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)m.normals.push(i[d].normals[h].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let d=0,f=s.length;d<f;d++){let m={};if(s[d].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,g=s[d].vertexNormals.length;h<g;h++){let v=s[d].vertexNormals[h],x={};x.a=v.a.clone(),x.b=v.b.clone(),x.c=v.c.clone(),m.vertexNormals.push(x)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)m.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(m)}let l=t.skinWeights;for(let d=0,f=l.length;d<f;d++)this.skinWeights.push(l[d].clone());let c=t.skinIndices;for(let d=0,f=c.length;d<f;d++)this.skinIndices.push(c[d].clone());let p=t.lineDistances;for(let d=0,f=p.length;d<f;d++)this.lineDistances.push(p[d]);let a=t.boundingBox;a!==null&&(this.boundingBox=a.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Vl().fromGeometry(this),e=new Ef,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new ui(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new ui(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new ui(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new ui(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new ui(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 dn(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 dn(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new dn(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 Ef,r=t.geometry;if(t.isPoints||t.isLine){let o=new dn(r.vertices.length*3,3),i=new dn(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 dn(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}};Yr.prototype.isGeometry=!0;var Vl=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 v=0;v<c;v++)p[v]={name:l[v].name,data:[]};this.morphTargets.position=p}let a=t.morphNormals,u=a.length,d;if(u>0){d=[];for(let v=0;v<u;v++)d[v]={name:a[v].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,g=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let v=0;v<e.length;v++){let x=e[v];this.vertices.push(r[x.a],r[x.b],r[x.c]);let w=x.vertexNormals;if(w.length===3)this.normals.push(w[0],w[1],w[2]);else{let b=x.normal;this.normals.push(b,b,b)}let S=x.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][v];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",v),this.uvs.push(new Ot,new Ot,new Ot))}if(s===!0){let b=o[1][v];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",v),this.uvs2.push(new Ot,new Ot,new Ot))}for(let b=0;b<c;b++){let I=l[b].vertices;p[b].data.push(I[x.a],I[x.b],I[x.c])}for(let b=0;b<u;b++){let I=a[b].vertexNormals[v];d[b].data.push(I.a,I.b,I.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),g&&this.skinWeights.push(m[x.a],m[x.b],m[x.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}},fn=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 nt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Df,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var vw=["a","b","c"];function bw(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function zl(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Ul(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 Sw(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],Ul(s.a,s.b,n,r,s,e),Ul(s.b,s.c,n,r,s,e),Ul(s.c,s.a,n,r,s,e)}function la(n,t,e,r,o){n.push(new fn(t,e,r,void 0,void 0,o))}function mn(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 xw?t=new Yr().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 Rf,r,o,i,s,l,c=t.vertices,p=t.faces,a=t.faceVertexUvs[0],u=a!==void 0&&a.length>0,d=[],f=new Map;Sw(c,p,d,f);let m=[],h,g,v,x,w,S,b;for(let H of Array.from(f.keys())){for(g=f.get(H),v=new Rf,w=3/8,S=1/8,b=g.faces.length,b!=2&&(w=.5,S=0,b!=1),v.addVectors(g.a,g.b).multiplyScalar(w),e.set(0,0,0),s=0;s<b;s++){for(x=g.faces[s],l=0;l<3&&(h=c[bw(x,vw[l])],!(h!==g.a&&h!==g.b));l++);h&&e.add(h)}e.multiplyScalar(S),v.add(e),g.newEdge=m.length,m.push(v)}let I,_,y,P,A,O,T,L=[];for(o=0,i=c.length;o<i;o++){for(O=c[o],A=d[o].edges,r=A.length,r==3?I=3/16:r>3&&(I=3/(8*r)),_=1-r*Number(I),y=I,r<=2&&(r==2?(_=3/4,y=1/8):r==1||r==0),T=O.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<r;s++)P=A[s],h=P.a!==O?P.a:P.b,e.add(h);e.multiplyScalar(Number(y)),T.add(e),L.push(T)}let B=L.concat(m),j=L.length,te,ne,se,U=[],W=[],q,F,M,D,E=new Fl,k=new Fl,Q=new Fl;for(o=0,i=p.length;o<i;o++)x=p[o],te=Number(zl(x.a,x.b,f).newEdge)+j,ne=Number(zl(x.b,x.c,f).newEdge)+j,se=Number(zl(x.c,x.a,f).newEdge)+j,la(U,te,ne,se,x.materialIndex),la(U,x.a,te,se,x.materialIndex),la(U,x.b,ne,te,x.materialIndex),la(U,x.c,se,ne,x.materialIndex),u&&(q=a[o],F=q[0],M=q[1],D=q[2],E.set(mn(F.x,M.x),mn(F.y,M.y)),k.set(mn(M.x,D.x),mn(M.y,D.y)),Q.set(mn(F.x,D.x),mn(F.y,D.y)),ca(W,E,k,Q),ca(W,F,E,Q),ca(W,M,k,E),ca(W,D,Q,k));t.vertices=B,t.faces=U,u&&(t.faceVertexUvs[0]=W)}};var Ue=new _w,zf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new Vf().copy(new Ff(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Ue),r={width:Ue.x,height:Ue.y,depth:Ue.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 Vf().copy(new Ff(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Ue)):Ue.set(s.width,s.height,s.depth),(t!==Ue.x||e!==Ue.y||r!==Ue.z)&&i.scale(Ue.x===0?1:t/Ue.x,Ue.y===0?1:e/Ue.y,Ue.z===0?1:r/Ue.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 ww(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Ue);let s=100/Ue.x;Object.assign(i.parameters,{width:100,height:Ue.y*s,depth:Ue.z*s}),t(this.build(i))})}};var Uf=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 ve?n.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5,u=0,d=0,f=2*Math.PI/r;for(let h=0;h<r;h++){let g=f*h,v=u+Math.sin(g)*p,x=d+Math.cos(g)*a;c.addPoint(c.createPoint(v,x))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Je.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as Tw,Float32BufferAttribute as jl,Vector2 as or,Vector3 as $e}from"three";var jf=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 Hl(t*.5,e,o,i,s,l,c);return p.scale(1,1,r/t),Object.assign(p,{userData:{...n,type:"PyramidGeometry"}})}};function pi(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function kl(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 Aw(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Hl=class extends Tw{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,l=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),l=Math.floor(l);let c=[],p=[],a=[],u=[],d=0,f=e/2,m=Math.PI/r,h=t*Math.cos(Math.PI/r),g=2*Math.PI/r,v=(r-2)*Math.PI/r,x=Math.PI-v,w=new $e(0,-f,0),S=new $e(0,f,0),b=new or(t,-f),I=new or(h,-f),_=new or(0,S.y).sub(I),y=new or(0,S.y).sub(b),P=new or(_.y,-_.x).normalize(),A=new or(y.y,-y.x).normalize(),T=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,T);let L;{let W=new $e(P.x,P.y,0),q=new $e(Math.cos(g)*W.x,W.y,Math.sin(g)*W.x);L=W.angleTo(q)}let B=s/Math.tan((Math.PI-_.angle())/2),j=s/Math.tan((Math.PI-L)/2),te=new $e;if(!i){p.push(w.x,w.y,w.z),a.push(0,-1,0),u.push(0,0);let W=d++,q=[],F=b.clone(),M=B/Math.cos(Math.PI/r);F.x-=M;for(let D=0;D<r;D++){let E=D/r*Math.PI*2+m,k=new or(Math.sin(E),Math.cos(E));pi(F,k,te),p.push(te.x,te.y,te.z),a.push(0,-1,0),u.push(0,0),q.push(d++)}for(let D=0;D<q.length;D++)c.push(q[D],W,q[(D+1)%q.length])}let ne=[];{let W=new $e,q=new $e,F=new $e,M=new $e,D=new $e,E=new $e;for(let k=0;k<r;k++){let Q=k/r*Math.PI*2+m,H=(k+.5)/r*Math.PI*2+m,V=(k+1)/r*Math.PI*2+m,R=new or(Math.sin(Q),Math.cos(Q)),z=new or(Math.sin(H),Math.cos(H)),Z=new or(Math.sin(V),Math.cos(V));pi(b,R,q),pi(b,Z,F),pi(P,z,W),kl(S,q,F,j,j,M),p.push(M.x,M.y,M.z),kl(q,S,F,j,B,D),p.push(D.x,D.y,D.z),kl(F,q,S,B,j,E),p.push(E.x,E.y,E.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),u.push(0,0),u.push(0,0),u.push(0,0);let re=d++,ie=d++,ee=d++;if(c.push(re,ie,ee),s>0){{let X=q.clone().add(F).multiplyScalar(.5),fe=S.clone().sub(X).normalize(),ge=w.clone().sub(X).normalize().add(fe).normalize().multiplyScalar(-1),We=E.clone().sub(D);se(X,We,ge,_.angle())}let J,K;{let X=new $e;pi(A,Z,X);let fe=E.clone().add(M).multiplyScalar(.5);fe=Aw(fe,F,S);let pe=E.clone().sub(M);[J,K]=se(fe,pe,X,L,M.y)}{let X=J,fe=X.clone().setY(0).normalize(),pe=new $e(0,-1,0),ge=fe.clone().cross(pe);U(X,fe,pe,ge)}ne.concat(K);{let X=_.angle(),fe=Math.PI-X,pe=S.clone();pe.y-=s/Math.sin(X-Math.PI/2);let ge=new $e,We=[];for(let Te=0;Te<l;Te++){let Ie=[],Tt=Math.PI/2-fe*Te/l,Lr=Math.cos(Tt),yt=Math.sin(Tt),So=H;for(let ji=0;ji<=Te;ji++){let ki=Math.cos(So),Ge=Math.sin(So);W.x=Lr*Ge,W.y=yt,W.z=Lr*ki,ge.copy(pe).addScaledVector(W,s),p.push(ge.x,ge.y,ge.z),a.push(W.x,W.y,W.z),u.push(0,0),Ie.push(d++),So+=Math.PI*2/Te/r}We.push(Ie)}K.reverse(),We.push(K);let we=We.length-1;for(let Te=0;Te<we;Te++){let Ie=We[Te],Tt=We[Te+1],Lr=Ie.length-1;c.push(Tt[1],Ie[0],Tt[0]);for(let yt=1;yt<=Lr;yt++)c.push(Ie[yt],Ie[yt-1],Tt[yt]),c.push(Tt[yt+1],Ie[yt],Tt[yt])}}}}}this.setIndex(c),this.setAttribute("position",new jl(p,3)),this.setAttribute("normal",new jl(a,3)),this.setAttribute("uv",new jl(u,2));function se(W,q,F,M,D){let E=-M/2,k=(Math.PI-M)/2,Q=q.clone().normalize().cross(F);W.addScaledVector(F,-s/Math.sin(k));let H=new $e,V=new $e,R=1,z=d,Z=[];for(let re=0;re<=l;re++){let ie=E+re/l*M;V.set(0,0,0),V.addScaledVector(Q,Math.sin(ie)),V.addScaledVector(F,Math.cos(ie));for(let ee=0;ee<=R;ee++){let J=ee/R-.5;if(H.copy(W),H.addScaledVector(q,J),H.addScaledVector(V,s),D!=null){let K=Math.max(0,H.y-D);H.addScaledVector(q,-K/q.y)}p.push(H.x,H.y,H.z),a.push(V.x,V.y,V.z),u.push(0,0),ee===0&&Z.push(d),d++}}for(let re=0;re<l;re++)for(let ie=0;ie<R;ie++){let ee=z+ie+(R+1)*re,J=ee+(R+1),K=J+1,X=ee+1;c.push(ee,J,X),c.push(J,K,X)}return[W.clone().addScaledVector(q,.5),Z]}function U(W,q,F,M){let D=Math.PI/2,E=y.angle()-D,k=[],Q=new $e,H=new $e;for(let R=0;R<=l;R++){let z=[],Z=R/l;for(let re=0;re<=R;re++){let ee=((R?re/R:0)-.5)*x,J=Math.cos(ee),K=Math.sin(ee),X=Math.atan(Math.tan(E)*J),fe=(D+X)*Z,pe=Math.cos(fe),ge=Math.sin(fe);Q.set(0,0,0),Q.addScaledVector(q,ge*J),Q.addScaledVector(F,pe),Q.addScaledVector(M,ge*K),H.copy(W).addScaledVector(Q,s),p.push(H.x,H.y,H.z),a.push(Q.x,Q.y,Q.z),u.push(0,0),z.push(d++)}k.push(z)}let V=k.length-1;for(let R=0;R<V;R++){let z=k[R],Z=k[R+1],re=z.length-1;c.push(z[0],Z[1],Z[0]);for(let ie=1;ie<=re;ie++)c.push(z[ie-1],z[ie],Z[ie]),c.push(z[ie],Z[ie+1],Z[ie])}}}};var kf=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 ve?n.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,p={x:e*.5,y:r*.5},a={x:-p.x,y:-p.y},u={x:p.x,y:p.y};function d(S,b,I){return b>e&&I>r?Math.min(S*e/b,S*r/I):b>e?S*e/b:I>r?S*r/I:S}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=u.x,g=u.y,v=a.y;t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,v)),t.addPoint(t.createPoint(m,v)),t.isClosed=!0;let x=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=f[S],S>0&&f[S]!==f[S-1]&&(x=!1);x&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let w=Je.create({shape:t,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(w,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as Nw}from"three";var Hf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,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 Nw(.5*t,o,i,s,l,c,p);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as Iw}from"three";var Wf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new Iw(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as Pw,Float32BufferAttribute as Wl,Vector3 as Ow}from"three";var qf=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 ql(t,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},ql=class extends Pw{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],p=[],a=.001;i==0&&(s=1),s=Math.max(1,Math.floor(s)),i=Math.min(i,100),o=Math.min(180-a,o),o*=Math.PI/180;let u=[],d=Math.PI/2,f=(H=0,V=0,R=0)=>new Ow(H,V,R),m=f(),h=f(),[g,v,x]=[e/2,t/2,r/2],w=-v,S=+v,[b,I,_]=[f(w,-g,+x),f(w,-g,-x),f(w,+g,-x)],y=(H,V=!1)=>Math.sin(H-Math.PI/(1+ +V)),P=(H,V=!1)=>Math.cos(H-Math.PI/(1+ +V));_.y=Math.sin(o)*e-g;let A=Math.cos(o)*e-x,O=b.z-a;o<=d?(_.z=Math.min(A,O),_.z==O&&(_.y-=(A-O)/Math.tan(d-o))):I.z=Math.min(I.z-A-x,b.z-a),m.subVectors(b,I),h.subVectors(_,I);let T=Math.min(m.length(),h.length())*i/100,L=T*Math.tan(o/2),B=T/Math.cos(o/2),j=m.clone().normalize().add(h.normalize()).setLength(B).add(I);m.set(0,y(o,!0),P(o,!0)),u.push([_,m.clone()]);let te=(Math.PI-o)/s;for(let H=0;H<=s;H++){let V=d+o+H*te;m.set(0,Math.sin(V)*L,Math.cos(V)*L),m.add(j),h.set(0,y(V),P(V)),u.push([m.clone(),h.clone()])}u.push([b,f(0,1,0)]);let ne=Math.sin(te/2)*L*2,se=u.length-1,U=u[0][0].distanceTo(u[1][0]),W=u[se-1][0].distanceTo(u[se][0]),q=U+ne*s+W;u[0].push(1);for(let H=0;H<=s;H++)u[H+1].push(1-(U+H*ne)/q);u[se].push(0);let[F,M,D]=u[0],E,k,Q;for(let H=1;H<u.length;H++)[E,k,Q]=u[H],l.push(w,F.y,F.z,w,E.y,E.z,S,F.y,F.z,S,F.y,F.z,w,E.y,E.z,S,E.y,E.z),c.push(0,M.y,M.z,0,k.y,k.z,0,M.y,M.z,0,M.y,M.z,0,k.y,k.z,0,k.y,k.z),p.push(0,D,0,Q,1,D,1,D,0,Q,1,Q),[F,M,D]=[E,k,Q];this.setAttribute("position",new Wl(l,3)),this.setAttribute("normal",new Wl(c,3)),this.setAttribute("uv",new Wl(p,2))}};var $f=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof ve?n.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}=n.parameters,a=n.shape,u=t*.5,d=e*.5,f=0,m=0,h=s*Math.PI/360/o,g=Math.PI/2*3*-1,v=u*r/100,x=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let S=0;S<o;S++){let b=h*S,I=f+Math.sin(b)*u,_=m+Math.cos(b)*d;a.addPoint(a.createPoint(I,_))}}else for(let S=0;S<o;S++){let b=f+Math.cos(g)*u,I=m+Math.sin(g)*d;a.addPoint(a.createPoint(b,I)),g+=h,b=f+Math.cos(g)*v,I=m+Math.sin(g)*x,S<=o,a.addPoint(a.createPoint(b,I)),g+=h}a.isClosed=!0;for(let S=0,b=a.points.length;S<b;S++)a.points[S].roundness=i;a.roundness=i,a.update();let w=Je.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:p}});return Object.assign(w,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as Cw}from"three";var Xf=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},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 Cw(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Yf=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.round(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=Lw(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 Lw(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 li(!0,n,t,e,r,o,i,s,l,c,p,a)}import{TorusKnotGeometry as Mw}from"three";var Kf=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 Mw(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Qf=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 ve?n.shape:new ve,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,p=t*.5,a=e*.5;l?(c.addPoint(c.createPoint(-p,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(p,-a)),c.addPoint(c.createPoint(-p,-a))),c.isClosed=!0;for(let d=0,f=c.points.length;d<f;d++)c.points[d].roundness=r;c.roundness=r,c.update();let u=Je.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferAttribute as Zf,BufferGeometry as $l}from"three";import{mergeBufferGeometries as Ew}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Jf(){let n=new $l;return n.setAttribute("position",new Zf(new Float32Array([]),3)),n.setIndex(new Zf(new Uint16Array([]),1)),n}var Bw=12;var hn=class extends $l{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.vectorShapes=[];let o=Jf();Object.entries(o.attributes).forEach(([i,s])=>{this.setAttribute(i,s)}),this.setIndex(o.index),this.updateFont(e.font,r),this.update(e)}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}async update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r||!r.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:p,textTransform:a,subdivisions:u}=e;await r.loadingPromise;let d=a===2?p.toUpperCase():a===3?p.toLowerCase():p,f=Dw(e,r,d),{shapes:m,charWidths:h,charCoords:g}=await r.generateShapes(f,e),v=o*.5,x=i*.5,w=m.map(I=>new ve().fromShape(I));this.vectorShapes=w;let S=w.map(I=>Je.create({shape:I,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Pe.NONZERO:Pe.ODD,subdivisions:u??Bw}})),b=S.length?Ew(S):Jf();b.translate(-v,x,0),this.dispose(),this.wrappedText=f,this.charCoords=g,this.charWidths=h,Object.entries(b.attributes).forEach(([I,_])=>{this.setAttribute(I,_)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=lo(new $l,hn.prototype);return e.copy(this),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function Dw(n,t,e){e=e??n.text;let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
1
|
+
var Og=Object.create;var sl=Object.defineProperty;var Cg=Object.getOwnPropertyDescriptor;var Mg=Object.getOwnPropertyNames;var Lg=Object.getPrototypeOf,Eg=Object.prototype.hasOwnProperty;var al=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Bg=(n,t)=>{for(var e in t)sl(n,e,{get:t[e],enumerable:!0})},Dg=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Mg(t))!Eg.call(n,o)&&o!==e&&sl(n,o,{get:()=>t[o],enumerable:!(r=Cg(t,o))||r.enumerable});return n};var ll=(n,t,e)=>(e=n!=null?Og(Lg(n)):{},Dg(t||!n||!n.__esModule?sl(e,"default",{value:n,enumerable:!0}):e,n));var Sf=al((Rl,vf)=>{(function(n,t){typeof Rl=="object"?vf.exports=t():typeof define=="function"&&define.amd?define(t):n.Alea=t()})(Rl,function(){"use strict";return n.importState=function(e){var r=new n;return r.importState(e),r},n;function n(){return function(e){var r=0,o=0,i=0,s=1;e.length==0&&(e=[+new Date]);var l=t();r=l(" "),o=l(" "),i=l(" ");for(var c=0;c<e.length;c++)r-=l(e[c]),r<0&&(r+=1),o-=l(e[c]),o<0&&(o+=1),i-=l(e[c]),i<0&&(i+=1);l=null;var u=function(){var a=2091639*r+s*23283064365386963e-26;return r=o,o=i,i=a-(s=a|0)};return u.next=u,u.uint32=function(){return u()*4294967296},u.fract53=function(){return u()+(u()*2097152|0)*11102230246251565e-32},u.version="Alea 0.9",u.args=e,u.exportState=function(){return[r,o,i,s]},u.importState=function(a){r=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[3]||0},u}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var s=.02519603282416938*e;e=s>>>0,s-=e,s*=e,e=s>>>0,s-=e,e+=s*4294967296}return(e>>>0)*23283064365386963e-26};return r.version="Mash 0.9",r}})});var Wh=al((tl,Hh)=>{(function(n,t){typeof tl=="object"&&typeof Hh<"u"?t(tl):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(tl,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,u,a,p,d,f,m,h,g,b,x=t[0].length,S=t.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],v=[],N=[],_=e==="f"?S:x,y=h=d=0;y<S;y++)v[y]=new Array(_).fill(0);for(y=0;y<x;y++)N[y]=new Array(x).fill(0);var I,A=new Array(x).fill(0);for(y=0;y<S;y++)for(s=0;s<x;s++)v[y][s]=t[y][s];for(y=0;y<x;y++){for(w[y]=d,m=0,c=y+1,s=y;s<S;s++)m+=Math.pow(v[s][y],2);if(m<i)d=0;else for(f=(p=v[y][y])*(d=p<0?Math.sqrt(m):-Math.sqrt(m))-m,v[y][y]=p-d,s=c;s<x;s++){for(m=0,l=y;l<S;l++)m+=v[l][y]*v[l][s];for(p=m/f,l=y;l<S;l++)v[l][s]=v[l][s]+p*v[l][y]}for(A[y]=d,m=0,s=c;s<x;s++)m+=Math.pow(v[y][s],2);if(m<i)d=0;else{for(f=(p=v[y][y+1])*(d=p<0?Math.sqrt(m):-Math.sqrt(m))-m,v[y][y+1]=p-d,s=c;s<x;s++)w[s]=v[y][s]/f;for(s=c;s<S;s++){for(m=0,l=c;l<x;l++)m+=v[s][l]*v[y][l];for(l=c;l<x;l++)v[s][l]=v[s][l]+m*w[l]}}h<(g=Math.abs(A[y])+Math.abs(w[y]))&&(h=g)}if(r)for(y=x-1;0<=y;y--){if(d!==0){for(f=v[y][y+1]*d,s=c;s<x;s++)N[s][y]=v[y][s]/f;for(s=c;s<x;s++){for(m=0,l=c;l<x;l++)m+=v[y][l]*N[l][s];for(l=c;l<x;l++)N[l][s]=N[l][s]+m*N[l][y]}}for(s=c;s<x;s++)N[y][s]=0,N[s][y]=0;N[y][y]=1,d=w[y],c=y}if(e){if(e==="f")for(y=x;y<S;y++){for(s=x;s<S;s++)v[y][s]=0;v[y][y]=1}for(y=x-1;0<=y;y--){for(c=y+1,d=A[y],s=c;s<_;s++)v[y][s]=0;if(d!==0){for(f=v[y][y]*d,s=c;s<_;s++){for(m=0,l=c;l<S;l++)m+=v[l][y]*v[l][s];for(p=m/f,l=y;l<S;l++)v[l][s]=v[l][s]+p*v[l][y]}for(s=y;s<S;s++)v[s][y]=v[s][y]/d}else for(s=y;s<S;s++)v[s][y]=0;v[y][y]=v[y][y]+1}}for(o*=h,l=x-1;0<=l;l--)for(var P=0;P<50;P++){for(I=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){I=!0;break}if(Math.abs(A[c-1])<=o)break}if(!I){for(a=0,u=c-(m=1),y=c;y<l+1&&(p=m*w[y],w[y]=a*w[y],!(Math.abs(p)<=o));y++)if(d=A[y],A[y]=Math.sqrt(p*p+d*d),a=d/(f=A[y]),m=-p/f,e)for(s=0;s<S;s++)g=v[s][u],b=v[s][y],v[s][u]=g*a+b*m,v[s][y]=-g*m+b*a}if(b=A[l],c===l){if(b<0&&(A[l]=-b,r))for(s=0;s<x;s++)N[s][l]=-N[s][l];break}for(h=A[c],p=(((g=A[l-1])-b)*(g+b)+((d=w[l-1])-(f=w[l]))*(d+f))/(2*f*g),d=Math.sqrt(p*p+1),p=((h-b)*(h+b)+f*(g/(p<0?p-d:p+d)-f))/h,y=c+(m=a=1);y<l+1;y++){if(d=w[y],g=A[y],f=m*d,d*=a,b=Math.sqrt(p*p+f*f),p=h*(a=p/(w[y-1]=b))+d*(m=f/b),d=-h*m+d*a,f=g*m,g*=a,r)for(s=0;s<x;s++)h=N[s][y-1],b=N[s][y],N[s][y-1]=h*a+b*m,N[s][y]=-h*m+b*a;if(b=Math.sqrt(p*p+f*f),p=(a=p/(A[y-1]=b))*d+(m=f/b)*g,h=-m*d+a*g,e)for(s=0;s<S;s++)g=v[s][y-1],b=v[s][y],v[s][y-1]=g*a+b*m,v[s][y]=-g*m+b*a}w[c]=0,w[l]=p,A[l]=h}for(y=0;y<x;y++)A[y]<o&&(A[y]=0);return{u:v,q:A,v:N}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var ag=al(rl=>{(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 p=this||t;if(a=parseFloat(a),p.ctx||u(),typeof a<"u"&&a>=0&&a<=1){if(p._volume=a,p._muted)return p;p.usingWebAudio&&p.masterGain.gain.setValueAtTime(a,t.ctx.currentTime);for(var d=0;d<p._howls.length;d++)if(!p._howls[d]._webAudio)for(var f=p._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=p._howls[d]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return p}return p._volume},mute:function(a){var p=this||t;p.ctx||u(),p._muted=a,p.usingWebAudio&&p.masterGain.gain.setValueAtTime(a?0:p._volume,t.ctx.currentTime);for(var d=0;d<p._howls.length;d++)if(!p._howls[d]._webAudio)for(var f=p._howls[d]._getSoundIds(),m=0;m<f.length;m++){var h=p._howls[d]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return p},stop:function(){for(var a=this||t,p=0;p<a._howls.length;p++)a._howls[p].stop();return a},unload:function(){for(var a=this||t,p=a._howls.length-1;p>=0;p--)a._howls[p].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,u()),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 p=new Audio;typeof p.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var p=new Audio;p.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||t,p=null;try{p=typeof Audio<"u"?new Audio:null}catch{return a}if(!p||typeof p.canPlayType!="function")return a;var d=p.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,g=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,b=f.match(/Version\/(.*?) /),x=g&&b&&parseInt(b[1],10)<15;return a._codecs={mp3:!!(!h&&(d||p.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,opus:!!p.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!p.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!p.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(p.canPlayType('audio/wav; codecs="1"')||p.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!p.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!p.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(p.canPlayType("audio/x-m4a;")||p.canPlayType("audio/m4a;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(p.canPlayType("audio/x-m4b;")||p.canPlayType("audio/m4b;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(p.canPlayType("audio/x-mp4;")||p.canPlayType("audio/mp4;")||p.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!x&&p.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&p.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!p.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(p.canPlayType("audio/x-flac;")||p.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 p=function(d){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),g=0;g<h.length;g++){var b=a._howls[m]._soundById(h[g]);b&&b._node&&!b._node._unlocked&&(b._node._unlocked=!0,b._node.load())}a._autoResume();var x=a.ctx.createBufferSource();x.buffer=a._scratchBuffer,x.connect(a.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),x.onended=function(){x.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",p,!0),document.removeEventListener("touchend",p,!0),document.removeEventListener("click",p,!0),document.removeEventListener("keydown",p,!0);for(var S=0;S<a._howls.length;S++)a._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",p,!0),document.addEventListener("touchend",p,!0),document.addEventListener("click",p,!0),document.addEventListener("keydown",p,!0),a}},_obtainHtml5Audio:function(){var a=this||t;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var p=new Audio().play();return p&&typeof Promise<"u"&&(p instanceof Promise||typeof p.then=="function")&&p.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var p=this||t;return a._unlocked&&p._html5AudioPool.push(a),p},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!t.usingWebAudio)){for(var p=0;p<a._howls.length;p++)if(a._howls[p]._webAudio){for(var d=0;d<a._howls[p]._sounds.length;d++)if(!a._howls[p]._sounds[d]._paused)return a}return a._suspendTimer&&clearTimeout(a._suspendTimer),a._suspendTimer=setTimeout(function(){if(!!a.autoSuspend){a._suspendTimer=null,a.state="suspending";var f=function(){a.state="suspended",a._resumeAfterSuspend&&(delete a._resumeAfterSuspend,a._autoResume())};a.ctx.suspend().then(f,f)}},3e4),a}},_autoResume:function(){var a=this;if(!(!a.ctx||typeof a.ctx.resume>"u"||!t.usingWebAudio))return a.state==="running"&&a.ctx.state!=="interrupted"&&a._suspendTimer?(clearTimeout(a._suspendTimer),a._suspendTimer=null):a.state==="suspended"||a.state==="running"&&a.ctx.state==="interrupted"?(a.ctx.resume().then(function(){a.state="running";for(var p=0;p<a._howls.length;p++)a._howls[p]._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 p=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}p.init(a)};e.prototype={init:function(a){var p=this;return t.ctx||u(),p._autoplay=a.autoplay||!1,p._format=typeof a.format!="string"?a.format:[a.format],p._html5=a.html5||!1,p._muted=a.mute||!1,p._loop=a.loop||!1,p._pool=a.pool||5,p._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,p._rate=a.rate||1,p._sprite=a.sprite||{},p._src=typeof a.src!="string"?a.src:[a.src],p._volume=a.volume!==void 0?a.volume:1,p._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},p._duration=0,p._state="unloaded",p._sounds=[],p._endTimers={},p._queue=[],p._playLock=!1,p._onend=a.onend?[{fn:a.onend}]:[],p._onfade=a.onfade?[{fn:a.onfade}]:[],p._onload=a.onload?[{fn:a.onload}]:[],p._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],p._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],p._onpause=a.onpause?[{fn:a.onpause}]:[],p._onplay=a.onplay?[{fn:a.onplay}]:[],p._onstop=a.onstop?[{fn:a.onstop}]:[],p._onmute=a.onmute?[{fn:a.onmute}]:[],p._onvolume=a.onvolume?[{fn:a.onvolume}]:[],p._onrate=a.onrate?[{fn:a.onrate}]:[],p._onseek=a.onseek?[{fn:a.onseek}]:[],p._onunlock=a.onunlock?[{fn:a.onunlock}]:[],p._onresume=[],p._webAudio=t.usingWebAudio&&!p._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(p),p._autoplay&&p._queue.push({event:"play",action:function(){p.play()}}),p._preload&&p._preload!=="none"&&p.load(),p},load:function(){var a=this,p=null;if(t.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var d=0;d<a._src.length;d++){var f,m;if(a._format&&a._format[d])f=a._format[d];else{if(m=a._src[d],typeof m!="string"){a._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(m),f||(f=/\.([^.]+)$/.exec(m.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&t.codecs(f)){p=a._src[d];break}}if(!p){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=p,a._state="loading",window.location.protocol==="https:"&&p.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new r(a),a._webAudio&&i(a),a},play:function(a,p){var d=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&d._state==="loaded"&&!d._sprite[a])return null;if(typeof a>"u"&&(a="__default",!d._playLock)){for(var m=0,h=0;h<d._sounds.length;h++)d._sounds[h]._paused&&!d._sounds[h]._ended&&(m++,f=d._sounds[h]._id);m===1?a=null:f=null}}var g=f?d._soundById(f):d._inactiveSound();if(!g)return null;if(f&&!a&&(a=g._sprite||"__default"),d._state!=="loaded"){g._sprite=a,g._ended=!1;var b=g._id;return d._queue.push({event:"play",action:function(){d.play(b)}}),b}if(f&&!g._paused)return p||d._loadQueue("play"),g._id;d._webAudio&&t._autoResume();var x=Math.max(0,g._seek>0?g._seek:d._sprite[a][0]/1e3),S=Math.max(0,(d._sprite[a][0]+d._sprite[a][1])/1e3-x),w=S*1e3/Math.abs(g._rate),v=d._sprite[a][0]/1e3,N=(d._sprite[a][0]+d._sprite[a][1])/1e3;g._sprite=a,g._ended=!1;var _=function(){g._paused=!1,g._seek=x,g._start=v,g._stop=N,g._loop=!!(g._loop||d._sprite[a][2])};if(x>=N){d._ended(g);return}var y=g._node;if(d._webAudio){var I=function(){d._playLock=!1,_(),d._refreshBuffer(g);var C=g._muted||d._muted?0:g._volume;y.gain.setValueAtTime(C,t.ctx.currentTime),g._playStart=t.ctx.currentTime,typeof y.bufferSource.start>"u"?g._loop?y.bufferSource.noteGrainOn(0,x,86400):y.bufferSource.noteGrainOn(0,x,S):g._loop?y.bufferSource.start(0,x,86400):y.bufferSource.start(0,x,S),w!==1/0&&(d._endTimers[g._id]=setTimeout(d._ended.bind(d,g),w)),p||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 A=function(){y.currentTime=x,y.muted=g._muted||d._muted||t._muted||y.muted,y.volume=g._volume*t.volume(),y.playbackRate=g._rate;try{var C=y.play();if(C&&typeof Promise<"u"&&(C instanceof Promise||typeof C.then=="function")?(d._playLock=!0,_(),C.then(function(){d._playLock=!1,y._unlocked=!0,p?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})):p||(d._playLock=!1,_(),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),w):(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(L){d._emit("playerror",g._id,L)}};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)A();else{d._playLock=!0,d._state="loading";var T=function(){d._state="loaded",A(),y.removeEventListener(t._canPlayEvent,T,!1)};y.addEventListener(t._canPlayEvent,T,!1),d._clearTimer(g._id)}}return g._id},pause:function(a){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"pause",action:function(){p.pause(a)}}),p;for(var d=p._getSoundIds(a),f=0;f<d.length;f++){p._clearTimer(d[f]);var m=p._soundById(d[f]);if(m&&!m._paused&&(m._seek=p.seek(d[f]),m._rateSeek=0,m._paused=!0,p._stopFade(d[f]),m._node))if(p._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),p._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||p._emit("pause",m?m._id:null)}return p},stop:function(a,p){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(a)}}),d;for(var f=d._getSoundIds(a),m=0;m<f.length;m++){d._clearTimer(f[m]);var h=d._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,d._stopFade(f[m]),h._node&&(d._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),d._cleanBuffer(h._node)):(!isNaN(h._node.duration)||h._node.duration===1/0)&&(h._node.currentTime=h._start||0,h._node.pause(),h._node.duration===1/0&&d._clearSound(h._node))),p||d._emit("stop",h._id))}return d},mute:function(a,p){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(a,p)}}),d;if(typeof p>"u")if(typeof a=="boolean")d._muted=a;else return d._muted;for(var f=d._getSoundIds(p),m=0;m<f.length;m++){var h=d._soundById(f[m]);h&&(h._muted=a,h._interval&&d._stopFade(h._id),d._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,t.ctx.currentTime):h._node&&(h._node.muted=t._muted?!0:a),d._emit("mute",h._id))}return d},volume:function(){var a=this,p=arguments,d,f;if(p.length===0)return a._volume;if(p.length===1||p.length===2&&typeof p[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(p[0]);h>=0?f=parseInt(p[0],10):d=parseFloat(p[0])}else p.length>=2&&(d=parseFloat(p[0]),f=parseInt(p[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,p)}}),a;typeof f>"u"&&(a._volume=d),f=a._getSoundIds(f);for(var b=0;b<f.length;b++)g=a._soundById(f[b]),g&&(g._volume=d,p[2]||a._stopFade(f[b]),a._webAudio&&g._node&&!g._muted?g._node.gain.setValueAtTime(d,t.ctx.currentTime):g._node&&!g._muted&&(g._node.volume=d*t.volume()),a._emit("volume",g._id))}else return g=f?a._soundById(f):a._sounds[0],g?g._volume:0;return a},fade:function(a,p,d,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,p,d,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),p=Math.min(Math.max(0,parseFloat(p)),1),d=parseFloat(d),m.volume(a,f);for(var h=m._getSoundIds(f),g=0;g<h.length;g++){var b=m._soundById(h[g]);if(b){if(f||m._stopFade(h[g]),m._webAudio&&!b._muted){var x=t.ctx.currentTime,S=x+d/1e3;b._volume=a,b._node.gain.setValueAtTime(a,x),b._node.gain.linearRampToValueAtTime(p,S)}m._startFadeInterval(b,a,p,d,h[g],typeof f>"u")}}return m},_startFadeInterval:function(a,p,d,f,m,h){var g=this,b=p,x=d-p,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),v=Date.now();a._fadeTo=d,a._interval=setInterval(function(){var N=(Date.now()-v)/f;v=Date.now(),b+=x*N,b=Math.round(b*100)/100,x<0?b=Math.max(d,b):b=Math.min(d,b),g._webAudio?a._volume=b:g.volume(b,a._id,!0),h&&(g._volume=b),(d<p&&b<=d||d>p&&b>=d)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,g.volume(d,a._id),g._emit("fade",a._id))},w)},_stopFade:function(a){var p=this,d=p._soundById(a);return d&&d._interval&&(p._webAudio&&d._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(d._interval),d._interval=null,p.volume(d._fadeTo,a),d._fadeTo=null,p._emit("fade",a)),p},loop:function(){var a=this,p=arguments,d,f,m;if(p.length===0)return a._loop;if(p.length===1)if(typeof p[0]=="boolean")d=p[0],a._loop=d;else return m=a._soundById(parseInt(p[0],10)),m?m._loop:!1;else p.length===2&&(d=p[0],f=parseInt(p[1],10));for(var h=a._getSoundIds(f),g=0;g<h.length;g++)m=a._soundById(h[g]),m&&(m._loop=d,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=d,d&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[g])&&(a.pause(h[g],!0),a.play(h[g],!0)))));return a},rate:function(){var a=this,p=arguments,d,f;if(p.length===0)f=a._sounds[0]._id;else if(p.length===1){var m=a._getSoundIds(),h=m.indexOf(p[0]);h>=0?f=parseInt(p[0],10):d=parseFloat(p[0])}else p.length===2&&(d=parseFloat(p[0]),f=parseInt(p[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,p)}}),a;typeof f>"u"&&(a._rate=d),f=a._getSoundIds(f);for(var b=0;b<f.length;b++)if(g=a._soundById(f[b]),g){a.playing(f[b])&&(g._rateSeek=a.seek(f[b]),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 x=a.seek(f[b]),S=(a._sprite[g._sprite][0]+a._sprite[g._sprite][1])/1e3-x,w=S*1e3/Math.abs(g._rate);(a._endTimers[f[b]]||!g._paused)&&(a._clearTimer(f[b]),a._endTimers[f[b]]=setTimeout(a._ended.bind(a,g),w)),a._emit("rate",g._id)}}else return g=a._soundById(f),g?g._rate:a._rate;return a},seek:function(){var a=this,p=arguments,d,f;if(p.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(p.length===1){var m=a._getSoundIds(),h=m.indexOf(p[0]);h>=0?f=parseInt(p[0],10):a._sounds.length&&(f=a._sounds[0]._id,d=parseFloat(p[0]))}else p.length===2&&(d=parseFloat(p[0]),f=parseInt(p[1],10));if(typeof f>"u")return 0;if(typeof d=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,p)}}),a;var g=a._soundById(f);if(g)if(typeof d=="number"&&d>=0){var b=a.playing(f);b&&a.pause(f,!0),g._seek=d,g._ended=!1,a._clearTimer(f),!a._webAudio&&g._node&&!isNaN(g._node.duration)&&(g._node.currentTime=d);var x=function(){b&&a.play(f,!0),a._emit("seek",f)};if(b&&!a._webAudio){var S=function(){a._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(a._webAudio){var w=a.playing(f)?t.ctx.currentTime-g._playStart:0,v=g._rateSeek?g._rateSeek-g._seek:0;return g._seek+(v+w*Math.abs(g._rate))}else return g._node.currentTime;return a},playing:function(a){var p=this;if(typeof a=="number"){var d=p._soundById(a);return d?!d._paused:!1}for(var f=0;f<p._sounds.length;f++)if(!p._sounds[f]._paused)return!0;return!1},duration:function(a){var p=this,d=p._duration,f=p._soundById(a);return f&&(d=p._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var a=this,p=a._sounds,d=0;d<p.length;d++)p[d]._paused||a.stop(p[d]._id),a._webAudio||(a._clearSound(p[d]._node),p[d]._node.removeEventListener("error",p[d]._errorFn,!1),p[d]._node.removeEventListener(t._canPlayEvent,p[d]._loadFn,!1),p[d]._node.removeEventListener("ended",p[d]._endFn,!1),t._releaseHtml5Audio(p[d]._node)),delete p[d]._node,a._clearTimer(p[d]._id);var f=t._howls.indexOf(a);f>=0&&t._howls.splice(f,1);var m=!0;for(d=0;d<t._howls.length;d++)if(t._howls[d]._src===a._src||a._src.indexOf(t._howls[d]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],t.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,p,d,f){var m=this,h=m["_on"+a];return typeof p=="function"&&h.push(f?{id:d,fn:p,once:f}:{id:d,fn:p}),m},off:function(a,p,d){var f=this,m=f["_on"+a],h=0;if(typeof p=="number"&&(d=p,p=null),p||d)for(h=0;h<m.length;h++){var g=d===m[h].id;if(p===m[h].fn&&g||!p&&g){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var b=Object.keys(f);for(h=0;h<b.length;h++)b[h].indexOf("_on")===0&&Array.isArray(f[b[h]])&&(f[b[h]]=[])}return f},once:function(a,p,d){var f=this;return f.on(a,p,d,1),f},_emit:function(a,p,d){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===p||a==="load")&&(setTimeout(function(g){g.call(this,p,d)}.bind(f,m[h].fn),0),m[h].once&&f.off(a,m[h].fn,m[h].id));return f._loadQueue(a),f},_loadQueue:function(a){var p=this;if(p._queue.length>0){var d=p._queue[0];d.event===a&&(p._queue.shift(),p._loadQueue()),a||d.action()}return p},_ended:function(a){var p=this,d=a._sprite;if(!p._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(p._ended.bind(p,a),100),p;var f=!!(a._loop||p._sprite[d][2]);if(p._emit("end",a._id),!p._webAudio&&f&&p.stop(a._id,!0).play(a._id),p._webAudio&&f){p._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=t.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);p._endTimers[a._id]=setTimeout(p._ended.bind(p,a),m)}return p._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,p._clearTimer(a._id),p._cleanBuffer(a._node),t._autoSuspend()),!p._webAudio&&!f&&p.stop(a._id,!0),p},_clearTimer:function(a){var p=this;if(p._endTimers[a]){if(typeof p._endTimers[a]!="function")clearTimeout(p._endTimers[a]);else{var d=p._soundById(a);d&&d._node&&d._node.removeEventListener("ended",p._endTimers[a],!1)}delete p._endTimers[a]}return p},_soundById:function(a){for(var p=this,d=0;d<p._sounds.length;d++)if(a===p._sounds[d]._id)return p._sounds[d];return null},_inactiveSound:function(){var a=this;a._drain();for(var p=0;p<a._sounds.length;p++)if(a._sounds[p]._ended)return a._sounds[p].reset();return new r(a)},_drain:function(){var a=this,p=a._pool,d=0,f=0;if(!(a._sounds.length<p)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&d++;for(f=a._sounds.length-1;f>=0;f--){if(d<=p)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),d--)}}},_getSoundIds:function(a){var p=this;if(typeof a>"u"){for(var d=[],f=0;f<p._sounds.length;f++)d.push(p._sounds[f]._id);return d}else return[a]},_refreshBuffer:function(a){var p=this;return a._node.bufferSource=t.ctx.createBufferSource(),a._node.bufferSource.buffer=o[p._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),p},_cleanBuffer:function(a){var p=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,p},_clearSound:function(a){var p=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);p||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(a){this._parent=a,this.init()};r.prototype={init:function(){var a=this,p=a._parent;return a._muted=p._muted,a._loop=p._loop,a._volume=p._volume,a._rate=p._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++t._counter,p._sounds.push(a),a.create(),a},create:function(){var a=this,p=a._parent,d=t._muted||a._muted||a._parent._muted?0:a._volume;return p._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=p._src,a._node.preload=p._preload===!0?"auto":p._preload,a._node.volume=d*t.volume(),a._node.load()),a},reset:function(){var a=this,p=a._parent;return a._muted=p._muted,a._loop=p._loop,a._volume=p._volume,a._rate=p._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,p=a._parent;p._duration=Math.ceil(a._node.duration*10)/10,Object.keys(p._sprite).length===0&&(p._sprite={__default:[0,p._duration*1e3]}),p._state!=="loaded"&&(p._state="loaded",p._emit("load"),p._loadQueue()),a._node.removeEventListener(t._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,p=a._parent;p._duration===1/0&&(p._duration=Math.ceil(a._node.duration*10)/10,p._sprite.__default[1]===1/0&&(p._sprite.__default[1]=p._duration*1e3),p._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var p=a._src;if(o[p]){a._duration=o[p].duration,c(a);return}if(/^data:[^;]+;base64,/.test(p)){for(var d=atob(p.split(",")[1]),f=new Uint8Array(d.length),m=0;m<d.length;++m)f[m]=d.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,p,!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[p],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,p){var d=function(){p._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&p._sounds.length>0?(o[p._src]=m,c(p,m)):d()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(a).then(f).catch(d):t.ctx.decodeAudioData(a,f,d)},c=function(a,p){p&&!a._duration&&(a._duration=p.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())},u=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),p=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=p?parseInt(p[1],10):null;if(a&&d&&d<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof rl<"u"&&(rl.Howler=t,rl.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 u=i._panner;u?(u.coneInnerAngle=c.coneInnerAngle,u.coneOuterAngle=c.coneOuterAngle,u.coneOuterGain=c.coneOuterGain,u.distanceModel=c.distanceModel,u.maxDistance=c.maxDistance,u.refDistance=c.refDistance,u.rolloffFactor=c.rolloffFactor,u.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)}})()});import{FileLoader as wA,Loader as _A}from"three";var Me=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,Me.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,Me.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,Me.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function Qn(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"&&Qn(r)}return Object.freeze(n)}function uu(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 Do=class extends Error{};var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Qn(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(u=>u.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,he.prototype);let r=e;return pu()||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)}return null}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((u,a)=>u.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,p)=>a.fi-p.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 Jt(0,r,r);{let i=o[0].fi;return Jt(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 Jt(l,l+r,r)}else return Jt(i.fi,s.fi,r)}}};function Jt(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 Jn(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 pu(){return typeof process<"u"}function cl(n){return typeof n!="object"||Jn(n)||ul(n)}function ei(n){return cl(n)||n instanceof he||n instanceof Ee||n instanceof Me}function ul(n){return Array.isArray(n)&&n.every(t=>typeof t!="object")}function du(n,t){for(let e of n)t(e.id,e.data)!==!0&&du(e.children,t)}function fu(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)fu(e,t)}var Ee=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ee.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Qn(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)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!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&&fu(o,r)}}traverse(e){du(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 u=i.findIndex(a=>a.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:l}}Object.setPrototypeOf(i,Ee.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)}return null}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,u=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return u=[...u,a],u.sort((d,f)=>d.fi-f.fi),e.localIndex=u.indexOf(a),{data:this.modifyArrayBy(c,u),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(u=>u.id===r);e.localIndex=s,i=[...i];let l=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...l,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Do("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),u=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(u,1)[0],p=this.modifyArrayBy(s,c);s=r,c=p.childrenArray(s);let d=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),p=p.modifyArrayBy(s,c),{data:p,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)=>uu(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 Jt(0,o,o);{let s=i[0].fi;return Jt(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 Jt(c,c+o,o)}else return Jt(s.fi,l.fi,o)}}};var Go;(t=>{function n(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=s[u],s[u]=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 u=o[c];u===void 0?delete s[c]:s[c]=u,l=!0}return l?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(Go||(Go={}));var Ro=class{unusedFun(t){}},wt=class{unusedFun(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r instanceof Ee||r instanceof he)return null;o+=1}r={...r};for(let[c,u]of Object.entries(t.props)){let a=r[c];i[c]=a,u===void 0?delete r[c]:r[c]=u}for(;o>0;)Object.keys(r).length===0?(r={...e[o-1]},delete r[t.path[o-1]]):r={...e[o-1],[t.path[o-1]]:r},o-=1;let s=Object.setPrototypeOf(r,wt.prototype),l={...t,props:i};return{data:s,actual:t,reverse:l}}},mu;(r=>{function n(o,i){return Vo(o,i)??o}r.apply=n;function t(o,i){return gu(o,i)}r.merge=t;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=Ir.zoomOnce(c,l[s]),c instanceof Ee||c instanceof he)return;s+=1}if(c===void 0)return i;if(ei(c))return;if(i.type===0)if(c&&typeof c=="object"){let u={...i.props};for(let a of Object.keys(c))delete u[a];return{...i,props:u}}else return;else if(i.type===1||i.type===4||i.type===7)if(typeof c=="object"){let u={...i.data,...c};return{...i,data:u}}else return;else return i}r.filterOp=e})(mu||(mu={}));function hu(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=Vo(o.data,t[i]);e=e||s!==void 0,s===void 0&&(s=o.data);let l=hu(o.children,t);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}});if(e)return r}function Gg(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,s=Vo(o.data,t[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Vo(n,t){if(ei(t))return t;if(n instanceof Ee){let e=hu(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return Gg(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let s=Vo(o,t[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let s=Vo(i,t[o]);r=r||s!==void 0,s===void 0&&(s=i),e[o]=s}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}else return n==null&&(ei(t)||t instanceof Ro)?t??n:n}}function gu(n,t){if(n===void 0)return t;if(t===void 0)return n;if(ei(t)||cl(n))return t;if(n instanceof Ee||n instanceof he)return Vo(n,t);if(typeof n=="object"&&typeof t=="object"){let e=new Set;if(n)for(let o of Object.keys(n))e.add(o);if(t)for(let o of Object.keys(t))e.add(o);let r={};for(let o of e){let i=gu(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}else return n}function yu(n,t){let e={cur:[],result:[],len:0};return n=ti(n,t,e)??n,[n,e.result]}function ps(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function ds(n){n&&(n.len-=1)}function Rg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function xu(n,t,e){let r=!1,o=n.map(i=>{let s=i.id,l=t[s];if(l!==void 0&&typeof l=="string"&&(r=!0,s=l,e!==null))throw new Error("not supported");let c=ti(i.data,t,ps(e,s));ds(e),r=r||c!==void 0,c===void 0&&(c=i.data);let u=xu(i.children,t,e);return u!==void 0?r=!0:u=i.children,{...i,id:s,data:c,children:u}});if(r)return o}function Vg(n,t,e){let r=!1,o=n.map(i=>{let s=i.id,l=t[s];if(l!==void 0&&typeof l=="string"&&(r=!0,s=l,e!==null))throw new Error("not supported");let c=ti(i.data,t,ps(e,s));return ds(e),r=r||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function ti(n,t,e){if(n instanceof Ee){let r=xu(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof he)return Vg(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,s)=>{let l=ti(i,t,ps(e,s));return ds(e),r=r||l!==void 0,l===void 0&&(l=i),l});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"){let r={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=t[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=ti(s,t,ps(e,i));ds(e),o=o||c!==void 0,c===void 0&&(c=s),r[i]=c}else r[i]=s;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];if(r!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");Rg(e)}return r}else return}}var bu;(t=>{function n(e,r){let o=Ir.zoom(r,e.path);if(typeof o=="object"){let i={};for(let s of Object.keys(e.props))i[s]=o[s];return{...e,props:i}}else return{...e,props:{}}}t.replaceProps=n})(bu||(bu={}));var kr;(l=>{function n(c,u){return{...c,path:c.path.slice(u)}}l.drop=n;function t(c,u){return e(c,u)?.data??c}l.applySimple=t;function e(c,u){let a=u.path;for(var p=[];;){let d;if(c instanceof wt&&u.type===0&&(d=c.runOp({...u,path:a.slice(p.length)}),d===null&&(d=void 0)),p.length===a.length&&(c instanceof Ee||c instanceof he||c instanceof Me?d=c.runOp(u):d=Go.runOp(c,u)),d!==void 0)if(d!==null){let h=d.data;for(let g=p.length-1;g>=0;g--){let b=a[g],x=p[g];if(x instanceof Ee){if(typeof b=="number")throw new Error("illegal arg");h=x.modifyById(b,h)}else if(x instanceof he){if(typeof b=="number")throw new Error("illegal arg");h=x.modifyById(b,h)}else if(x instanceof Me){if(typeof b=="number")throw new Error("illegal arg");h=x.modifyById(b,h)}else if(x instanceof wt){let S={...x,[b]:h};h=Object.setPrototypeOf(S,wt.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof b=="string"&&(b=parseInt(b),isNaN(b)))throw new Error("Invalid path");let S=h;h=[...x],h[b]=S}else h={...x,[b]:h};else return null}return{data:h,actual:{...d.actual,path:a},reverse:{...d.reverse,path:a}}}else return null;let f=a[p.length],m;if(c instanceof Ee){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof he){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else c!==null&&(m=c[f]);if(m!==void 0)p.push(c),c=m;else return null}}l.apply=e;function r(c,u){for(let a=0;a<c.length&&a<u.length;a++)if(c[a]!==u[a])return!0;return!1}l.pathDisjoint=r;function o(c,u){if(c.length!==u.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==u[a])return!1;return!0}l.pathEq=o;function i(c,u){return r(c.path,u.path)}l.commutative=i;function s(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(a=>u.props[a]!==void 0):!1}l.subsumed=s})(kr||(kr={}));var vu;(c=>{function n(){return[]}c.empty=n;function t(u,a){let p=[];for(let d of u){let[f,...m]=d.path;f===a&&p.push({...d,path:m})}return p}c.removePrefix=t;function e(u,a){return u.map(p=>({...p,path:[a,...p.path]}))}c.addPrefix=e;function r(u,a){return[...u,...a]}c.concat=r;function o(u,a){return[...u.filter(d=>!a.some(f=>kr.subsumed(d,f))),...a]}c.compress=o;function i(u,a){return u.every(p=>a.every(d=>kr.commutative(p,d)))}c.commutative=i;function s(u,a){for(let p of a){let d=l(u,p);d!==null&&(u=d.data)}return u}c.applyAll=s;function l(u,a){var p=u;let d=[],f=[];for(let m of a)try{if(m.type===3){let h=Ir.zoom(p,[...m.path,m.id]),g=kr.apply(p,{...m,type:2});if(g!==null){p=g.data;let[b,x]=yu(p,{[m.id]:h});p=b;for(let S of x){let w=S[S.length-1];S.splice(S.length-1,1),d.push({type:0,path:S,props:{[w]:h}}),f.push({type:0,path:S,props:{[w]:m.id}})}f.push(g.reverse),d.push(g.actual)}}else{let h=kr.apply(p,m);h!==null&&(d.push(h.actual),p=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Do)return null;throw h}return{data:p,actual:d,reverse:f.reverse()}}c.apply=l})(vu||(vu={}));var Su=Symbol(),ri=Symbol(),fo=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof ms);){let s=o._path,l=o._current;if(s!==""&&i.splice(0,0,s),o=o._parent,o===null)return;o.update(s,l)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[ri];r&&r(),delete this._children[t]}}}},dl=class extends fo{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,Go.runOp(this._current,t),t.path)}},fl=class extends fo{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,Me.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},wu={get(n,t){if(t===ri)return()=>{n._parent=null};if(t===Su)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=hs(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]}}},Fg={...wu,set(n,t,e){let r={type:0,props:{[t]:dt(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}},zg={...wu,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}},Fo=class extends fo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ri]=()=>{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=hs(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)}},fs=class extends fo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r,this[ri]=()=>{this._parent=null}}feedOp(t){let{path:e,...r}=t;this.reportOp(r,kr.apply(this._current,t),e)}},zo=class extends fo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ri]=()=>{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,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(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=hs(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 pl(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Ir.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var ms=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){pl(this.ts,e,t),pl(this.actual,r,t),pl(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function hs(n,t,e){return e instanceof Ee?new Fo(n,t,e):e instanceof he?new zo(n,t,e):e instanceof wt?new fs(n,t,e):e instanceof Me?new Proxy(new fl(n,t,e),zg):e!==null&&typeof e=="object"?Jn(e)||ul(e)?e:new Proxy(new dl(n,t,e),Fg):e}function ml(n){let t=new ms(n);return[hs(t,"",n),t]}function hl(n,t){let[e,r]=ml(n);return t(e),r.result()}function dt(n){if(n instanceof Fo)return n._current;if(n instanceof zo)return n._current;if(n instanceof fs)return n._current;if(n!==null&&typeof n=="object"){let t=n[Su];return t!==void 0?t:n}else return n}var Ir;(o=>{function n(i,s){if(s.length===i.length)for(var l=0;l<i.length;){if(i[l]!==s[l])return!1;l+=1}else return!1;return!0}o.equal=n;function t(i,s,l){let c=r(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...s};return Object.keys(c).forEach(a=>{delete u[a]}),u}else return s}o.removeOverridden=t;function e(i,s){if((i instanceof Ee||i instanceof Fo)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof zo)&&typeof s=="string")return i.data(s);if(typeof s=="number"&&Array.isArray(i))return i[s];if(typeof s=="string"&&typeof i=="object"&&i!==null)return i[s]}o.zoomOnce=e;function r(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=r})(Ir||(Ir={}));var gs=class{},oi=class extends gs{constructor(e){super();this.id=e}},ni=class extends gs{constructor(e){super();this.data=e}};var yl;try{yl=new TextDecoder}catch{}var ne,Wr,O=0;var Cu=[],xl=Cu,bl=0,ft={},Se,Hr,Pt=0,er=0,_t,Pr,at=[],Ne,_u={useRecords:!1,mapsAsObjects:!0},ii=class{},Sl=new ii;Sl.name="MessagePack 0xC1";var jo=!1,tr=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(ne)return Du(()=>(xs(),this?this.unpack(t,e):tr.prototype.unpack.call(_u,t,e)));Wr=e>-1?e:t.length,O=0,bl=0,er=0,Hr=null,xl=Cu,_t=null,ne=t;try{Ne=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ne=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 tr){if(ft=this,this.structures)return Se=this.structures,ys();(!Se||Se.length>0)&&(Se=[])}else ft=_u,(!Se||Se.length>0)&&(Se=[]);return ys()}unpackMultiple(t,e){let r,o=0;try{jo=!0;let i=t.length,s=this?this.unpack(t,i):Ss.unpack(t,i);if(e){for(e(s);O<i;)if(o=O,e(ys())===!1)return}else{for(r=[s];O<i;)o=O,r.push(ys());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{jo=!1,xs()}}_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 ys(){try{if(!ft.trusted&&!jo){let t=Se.sharedLength||0;t<Se.length&&(Se.length=t)}let n=De();if(O==Wr)Se.restoreStructures&&Tu(),Se=null,ne=null,Pr&&(Pr=null);else if(O>Wr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!jo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Se.restoreStructures&&Tu(),xs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Tu(){for(let n in Se.restoreStructures)Se[n]=Se.restoreStructures[n];Se.restoreStructures=null}function De(){let n=ne[O++];if(n<160)if(n<128){if(n<64)return n;{let t=Se[n&63]||ft.getStructures&&Mu()[n&63];return t?(t.read||(t.read=wl(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,ft.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Eu()]=De();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(De(),De());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=De();return t}else if(n<192){let t=n-160;if(er>=O)return Hr.slice(O-Pt,(O+=t)-Pt);if(er==0&&Wr<140){let e=t<16?_l(t):Lu(t);if(e!=null)return e}return vl(t)}else{let t;switch(n){case 192:return null;case 193:return _t?(t=De(),t>0?_t[1].slice(_t.position1,_t.position1+=t):_t[0].slice(_t.position0,_t.position0-=t)):Sl;case 194:return!1;case 195:return!0;case 196:return gl(ne[O++]);case 197:return t=Ne.getUint16(O),O+=2,gl(t);case 198:return t=Ne.getUint32(O),O+=4,gl(t);case 199:return mo(ne[O++]);case 200:return t=Ne.getUint16(O),O+=2,mo(t);case 201:return t=Ne.getUint32(O),O+=4,mo(t);case 202:if(t=Ne.getFloat32(O),ft.useFloat32>2){let e=vs[(ne[O]&127)<<1|ne[O+1]>>7];return O+=4,(e*t+(t>0?.5:-.5)>>0)/e}return O+=4,t;case 203:return t=Ne.getFloat64(O),O+=8,t;case 204:return ne[O++];case 205:return t=Ne.getUint16(O),O+=2,t;case 206:return t=Ne.getUint32(O),O+=4,t;case 207:return ft.int64AsNumber?(t=Ne.getUint32(O)*4294967296,t+=Ne.getUint32(O+4)):t=Ne.getBigUint64(O),O+=8,t;case 208:return Ne.getInt8(O++);case 209:return t=Ne.getInt16(O),O+=2,t;case 210:return t=Ne.getInt32(O),O+=4,t;case 211:return ft.int64AsNumber?(t=Ne.getInt32(O)*4294967296,t+=Ne.getUint32(O+4)):t=Ne.getBigInt64(O),O+=8,t;case 212:if(t=ne[O++],t==114)return Ou(ne[O++]&63);{let e=at[t];if(e)return e.read?(O++,e.read(De())):e.noBuffer?(O++,e()):e(ne.subarray(O,++O));throw new Error("Unknown extension "+t)}case 213:return t=ne[O],t==114?(O++,Ou(ne[O++]&63,ne[O++])):mo(2);case 214:return mo(4);case 215:return mo(8);case 216:return mo(16);case 217:return t=ne[O++],er>=O?Hr.slice(O-Pt,(O+=t)-Pt):Ug(t);case 218:return t=Ne.getUint16(O),O+=2,er>=O?Hr.slice(O-Pt,(O+=t)-Pt):kg(t);case 219:return t=Ne.getUint32(O),O+=4,er>=O?Hr.slice(O-Pt,(O+=t)-Pt):Hg(t);case 220:return t=Ne.getUint16(O),O+=2,Nu(t);case 221:return t=Ne.getUint32(O),O+=4,Nu(t);case 222:return t=Ne.getUint16(O),O+=2,Iu(t);case 223:return t=Ne.getUint32(O),O+=4,Iu(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 jg=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function wl(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>jg.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(De);return n.highByte===0&&(n.read=Au(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=De()}return r}return e.count=0,n.highByte===0?Au(t,e):e}var Au=(n,t)=>function(){let e=ne[O++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Se[r]||Mu()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=wl(o,n)),o.read()};function Mu(){let n=Du(()=>(ne=null,ft.getStructures()));return Se=ft._mergeStructures(n,Se)}var vl=bs,Ug=bs,kg=bs,Hg=bs;function bs(n){let t;if(n<16&&(t=_l(n)))return t;if(n>64&&yl)return yl.decode(ne.subarray(O,O+=n));let e=O+n,r=[];for(t="";O<e;){let o=ne[O++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=ne[O++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[O++]&63,s=ne[O++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[O++]&63,s=ne[O++]&63,l=ne[O++]&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+=Ye.apply(String,r),r.length=0)}return r.length>0&&(t+=Ye.apply(String,r)),t}function Nu(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=De();return t}function Iu(n){if(ft.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Eu()]=De();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(De(),De());return t}}var Ye=String.fromCharCode;function Lu(n){let t=O,e=new Array(n);for(let r=0;r<n;r++){let o=ne[O++];if((o&128)>0){O=t;return}e[r]=o}return Ye.apply(String,e)}function _l(n){if(n<4)if(n<2){if(n===0)return"";{let t=ne[O++];if((t&128)>1){O-=1;return}return Ye(t)}}else{let t=ne[O++],e=ne[O++];if((t&128)>0||(e&128)>0){O-=2;return}if(n<3)return Ye(t,e);let r=ne[O++];if((r&128)>0){O-=3;return}return Ye(t,e,r)}else{let t=ne[O++],e=ne[O++],r=ne[O++],o=ne[O++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){O-=4;return}if(n<6){if(n===4)return Ye(t,e,r,o);{let i=ne[O++];if((i&128)>0){O-=5;return}return Ye(t,e,r,o,i)}}else if(n<8){let i=ne[O++],s=ne[O++];if((i&128)>0||(s&128)>0){O-=6;return}if(n<7)return Ye(t,e,r,o,i,s);let l=ne[O++];if((l&128)>0){O-=7;return}return Ye(t,e,r,o,i,s,l)}else{let i=ne[O++],s=ne[O++],l=ne[O++],c=ne[O++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){O-=8;return}if(n<10){if(n===8)return Ye(t,e,r,o,i,s,l,c);{let u=ne[O++];if((u&128)>0){O-=9;return}return Ye(t,e,r,o,i,s,l,c,u)}}else if(n<12){let u=ne[O++],a=ne[O++];if((u&128)>0||(a&128)>0){O-=10;return}if(n<11)return Ye(t,e,r,o,i,s,l,c,u,a);let p=ne[O++];if((p&128)>0){O-=11;return}return Ye(t,e,r,o,i,s,l,c,u,a,p)}else{let u=ne[O++],a=ne[O++],p=ne[O++],d=ne[O++];if((u&128)>0||(a&128)>0||(p&128)>0||(d&128)>0){O-=12;return}if(n<14){if(n===12)return Ye(t,e,r,o,i,s,l,c,u,a,p,d);{let f=ne[O++];if((f&128)>0){O-=13;return}return Ye(t,e,r,o,i,s,l,c,u,a,p,d,f)}}else{let f=ne[O++],m=ne[O++];if((f&128)>0||(m&128)>0){O-=14;return}if(n<15)return Ye(t,e,r,o,i,s,l,c,u,a,p,d,f,m);let h=ne[O++];if((h&128)>0){O-=15;return}return Ye(t,e,r,o,i,s,l,c,u,a,p,d,f,m,h)}}}}}function gl(n){return ft.copyBuffers?Uint8Array.prototype.slice.call(ne,O,O+=n):ne.subarray(O,O+=n)}function mo(n){let t=ne[O++];if(at[t])return at[t](ne.subarray(O,O+=n));throw new Error("Unknown extension type "+t)}var Pu=new Array(4096);function Eu(){let n=ne[O++];if(n>=160&&n<192){if(n=n-160,er>=O)return Hr.slice(O-Pt,(O+=n)-Pt);if(!(er==0&&Wr<180))return vl(n)}else return O--,De();let t=(n<<5^(n>1?Ne.getUint16(O):n>0?ne[O]:0))&4095,e=Pu[t],r=O,o=O+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=ne[r++],i!=e[s++]){r=1879048192;break}if(r===o)return O=r,e.string;o-=3,r=O}for(e=[],Pu[t]=e,e.bytes=n;r<o;)i=Ne.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=ne[r++],e.push(i);let l=n<16?_l(n):Lu(n);return l!=null?e.string=l:e.string=vl(n)}var Ou=(n,t)=>{var e=De();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=wl(e,r),e.read()},Bu=typeof self=="object"?self:global;at[0]=()=>{};at[0].noBuffer=!0;at[101]=()=>{let n=De();return(Bu[n[0]]||Error)(n[1])};at[105]=n=>{let t=Ne.getUint32(O-4);Pr||(Pr=new Map);let e=ne[O],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Pr.set(t,o);let i=De();return o.used?Object.assign(r,i):(o.target=i,i)};at[112]=n=>{let t=Ne.getUint32(O-4),e=Pr.get(t);return e.used=!0,e.target};at[115]=()=>new Set(De());var Tl=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");at[116]=n=>{let t=n[0],e=Tl[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Bu[e](Uint8Array.prototype.slice.call(n,1).buffer)};at[120]=()=>{let n=De();return new RegExp(n[0],n[1])};at[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=O;O+=t-4,_t=[De(),De()],_t.position0=0,_t.position1=0;let r=O;O=e;try{return De()}finally{O=r}};at[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 Du(n){let t=Wr,e=O,r=bl,o=Pt,i=er,s=Hr,l=xl,c=Pr,u=_t,a=new Uint8Array(ne.slice(0,Wr)),p=Se,d=Se.slice(0,Se.length),f=ft,m=jo,h=n();return Wr=t,O=e,bl=r,Pt=o,er=i,Hr=s,xl=l,Pr=c,_t=u,ne=a,jo=m,Se=p,Se.splice(0,Se.length,...d),ft=f,Ne=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function xs(){ne=null,Pr=null,Se=null}function Gu(n){n.unpack?at[n.type]=n.unpack:at[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 Ss=new tr({useRecords:!1}),Wg=Ss.unpack,qg=Ss.unpackMultiple,$g=Ss.unpack,ws={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Yg=new Float32Array(1),ON=new Uint8Array(Yg.buffer,0,4);var _s;try{_s=new TextEncoder}catch{}var Ts,Nl,As=typeof Buffer<"u",Al=As?Buffer.allocUnsafeSlow:Uint8Array,zu=As?Buffer:Uint8Array,Ru=As?4294967296:2144337920,R,Ve,M=0,rr,or=null,Xg=/[\u0080-\uFFFF]/,si=Symbol("record-id"),ho=class extends tr{constructor(t){super(t),this.offset=0;let e,r,o,i,s,l,c=0,u=zu.prototype.utf8Write?function(y,I,A){return R.utf8Write(y,I,A)}:_s&&_s.encodeInto?function(y,I){return _s.encodeInto(y,R.subarray(I)).written}:!1,a=this;t||(t={});let p=t&&t.sequential,d=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=d?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=t.maxOwnStructures;m==null&&(m=d?32:64),p&&!t.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,g=f+64,b=f+m+64;if(b>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],S=0,w=0;this.pack=this.encode=function(y,I){if(R||(R=new Al(8192),Ve=new DataView(R.buffer,0,8192),M=0),rr=R.length-10,rr-M<2048?(R=new Al(R.length),Ve=new DataView(R.buffer,0,R.length),rr=R.length-10,M=0):M=M+7&2147483640,r=M,l=a.structuredClone?new Map:null,a.bundleStrings?(or=["",""],R[M++]=214,R[M++]=98,or.position=M-r,M+=4):or=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let A=o.sharedLength||0;if(A>f)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let P=0;P<A;P++){let T=o[P];if(!T)continue;let C,L=o.transitions;for(let j=0,Y=T.length;j<Y;j++){let te=T[j];C=L[te],C||(C=L[te]=Object.create(null)),L=C}L[si]=P+64}c=A}p||(o.nextId=A+64)}i&&(i=!1),s=o||[];try{if(v(y),or){Ve.setUint32(or.position+r,M-or.position-r);let A=or;or=null,v(A[0]),v(A[1])}if(a.offset=M,l&&l.idsToInsert){M+=l.idsToInsert.length*6,M>rr&&_(M),a.offset=M;let A=Zg(R.subarray(r,M),l.idsToInsert);return l=null,A}return I&Uu?(R.start=r,R.end=M,R):R.subarray(r,M)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!p){for(let A=0,P=x.length;A<P;A++)x[A][si]=0;x=[]}if(i&&a.saveStructures){let A=o.sharedLength||f;o.length>A&&(o=o.slice(0,A));let P=R.subarray(r,M);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(y)):(c=A,P)}}I&ny&&(M=r)}};let v=y=>{M>rr&&(R=_(M));var I=typeof y,A;if(I==="string"){let P=y.length;if(or&&P>=8&&P<4096){let L=Xg.test(y);or[L?0:1]+=y,R[M++]=193,v(L?-P:P);return}let T;P<32?T=1:P<256?T=2:P<65536?T=3:T=5;let C=P*3;if(M+C>rr&&(R=_(M+C)),P<64||!u){let L,j,Y,te=M+T;for(L=0;L<P;L++)j=y.charCodeAt(L),j<128?R[te++]=j:j<2048?(R[te++]=j>>6|192,R[te++]=j&63|128):(j&64512)===55296&&((Y=y.charCodeAt(L+1))&64512)===56320?(j=65536+((j&1023)<<10)+(Y&1023),L++,R[te++]=j>>18|240,R[te++]=j>>12&63|128,R[te++]=j>>6&63|128,R[te++]=j&63|128):(R[te++]=j>>12|224,R[te++]=j>>6&63|128,R[te++]=j&63|128);A=te-M-T}else A=u(y,M+T,C);A<32?R[M++]=160|A:A<256?(T<2&&R.copyWithin(M+2,M+1,M+1+A),R[M++]=217,R[M++]=A):A<65536?(T<3&&R.copyWithin(M+3,M+2,M+2+A),R[M++]=218,R[M++]=A>>8,R[M++]=A&255):(T<5&&R.copyWithin(M+5,M+3,M+3+A),R[M++]=219,Ve.setUint32(M,A),M+=4),M+=A}else if(I==="number")if(y>>>0===y)y<64?R[M++]=y:y<256?(R[M++]=204,R[M++]=y):y<65536?(R[M++]=205,R[M++]=y>>8,R[M++]=y&255):(R[M++]=206,Ve.setUint32(M,y),M+=4);else if(y>>0===y)y>=-32?R[M++]=256+y:y>=-128?(R[M++]=208,R[M++]=y+256):y>=-32768?(R[M++]=209,Ve.setInt16(M,y),M+=2):(R[M++]=210,Ve.setInt32(M,y),M+=4);else{let P;if((P=this.useFloat32)>0&&y<4294967296&&y>=-2147483648){R[M++]=202,Ve.setFloat32(M,y);let T;if(P<4||(T=y*vs[(R[M]&127)<<1|R[M+1]>>7])>>0===T){M+=4;return}else M--}R[M++]=203,Ve.setFloat64(M,y),M+=8}else if(I==="object")if(!y)R[M++]=192;else{if(l){let T=l.get(y);if(T){if(!T.id){let C=l.idsToInsert||(l.idsToInsert=[]);T.id=C.push(T)}R[M++]=214,R[M++]=112,Ve.setUint32(M,T.id),M+=4;return}else l.set(y,{offset:M-r})}let P=y.constructor;if(P===Object)N(y,!0);else if(P===Array){A=y.length,A<16?R[M++]=144|A:A<65536?(R[M++]=220,R[M++]=A>>8,R[M++]=A&255):(R[M++]=221,Ve.setUint32(M,A),M+=4);for(let T=0;T<A;T++)v(y[T])}else if(P===Map){A=y.size,A<16?R[M++]=128|A:A<65536?(R[M++]=222,R[M++]=A>>8,R[M++]=A&255):(R[M++]=223,Ve.setUint32(M,A),M+=4);for(let[T,C]of y)v(T),v(C)}else{for(let T=0,C=Ts.length;T<C;T++){let L=Nl[T];if(y instanceof L){let j=Ts[T];if(j.write){j.type&&(R[M++]=212,R[M++]=j.type,R[M++]=0),v(j.write.call(this,y));return}let Y=R,te=Ve,ie=M;R=null;let U;try{U=j.pack.call(this,y,W=>(R=Y,Y=null,M+=W,M>rr&&_(M),{target:R,targetView:Ve,position:M-W}),v)}finally{Y&&(R=Y,Ve=te,M=ie,rr=R.length-10)}U&&(U.length+M>rr&&_(U.length+M),M=Kg(U,R,M,j.type));return}}N(y,!y.hasOwnProperty)}}else if(I==="boolean")R[M++]=y?195:194;else if(I==="bigint"){if(y<BigInt(1)<<BigInt(63)&&y>=-(BigInt(1)<<BigInt(63)))R[M++]=211,Ve.setBigInt64(M,y);else if(y<BigInt(1)<<BigInt(64)&&y>0)R[M++]=207,Ve.setBigUint64(M,y);else if(this.largeBigIntToFloat)R[M++]=203,Ve.setFloat64(M,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");M+=8}else if(I==="undefined")this.encodeUndefinedAsNil?R[M++]=192:(R[M++]=212,R[M++]=0,R[M++]=0);else if(I==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},N=this.useRecords===!1?this.variableMapSize?y=>{let I=Object.keys(y),A=I.length;A<16?R[M++]=128|A:A<65536?(R[M++]=222,R[M++]=A>>8,R[M++]=A&255):(R[M++]=223,Ve.setUint32(M,A),M+=4);let P;for(let T=0;T<A;T++)v(P=I[T]),v(y[P])}:(y,I)=>{R[M++]=222;let A=M-r;M+=2;let P=0;for(let T in y)(I||y.hasOwnProperty(T))&&(v(T),v(y[T]),P++);R[A+++r]=P>>8,R[A+r]=P&255}:y=>{let I=Object.keys(y),A,P=s.transitions||(s.transitions=Object.create(null)),T=0;for(let L=0,j=I.length;L<j;L++){let Y=I[L];A=P[Y],A||(A=P[Y]=Object.create(null),T++),P=A}let C=P[si];if(C)C>=96&&h?(R[M++]=((C-=96)&31)+96,R[M++]=C>>5):R[M++]=C;else{C=s.nextId,C||(C=64),C<g&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(C=s.nextOwnId,C<b||(C=g),s.nextOwnId=C+1):(C>=b&&(C=g),s.nextId=C+1);let L=I.highByte=C>=96&&h?C-96>>5:-1;P[si]=C,s[C-64]=I,C<g?(I.isShared=!0,s.sharedLength=C-63,i=!0,L>=0?(R[M++]=(C&31)+96,R[M++]=L):R[M++]=C):(L>=0?(R[M++]=213,R[M++]=114,R[M++]=(C&31)+96,R[M++]=L):(R[M++]=212,R[M++]=114,R[M++]=C),T&&(S+=w*T),x.length>=m&&(x.shift()[si]=0),x.push(P),v(I))}for(let L=0,j=I.length;L<j;L++)v(y[I[L]])},_=y=>{let I;if(y>16777216){if(y-r>Ru)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(Ru,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 A=new Al(I);return Ve=new DataView(A.buffer,0,I),R.copy?R.copy(A,0,r,y):A.set(R.slice(r,y)),M-=r,r=0,rr=A.length-10,R=A}}useBuffer(t){R=t,Ve=new DataView(R.buffer,R.byteOffset,R.byteLength),M=0}};Nl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ii];Ts=[{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?Vu(n,16,t):Fu(As?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==zu&&this.structuredClone?Vu(n,Tl.indexOf(e.name),t):Fu(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Vu(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 Fu(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 Kg(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 Zg(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 Or(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)");Nl.unshift(n.Class),Ts.unshift(n)}Gu(n)}var ju=new ho({useRecords:!1}),Qg=ju.pack,Jg=ju.pack;var{NEVER:ey,ALWAYS:ty,DECIMAL_ROUND:ry,DECIMAL_FIT:oy}=ws,Uu=512,ny=1024;var ku=new ho({structuredClone:!0});Or({Class:Me.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Me.prototype),n}});Or({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Or({Class:Ee.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ee.prototype),n}});Or({Class:oi.prototype.constructor,type:4,write(n){return n.id},read(n){return new oi(n)}});Or({Class:ni.prototype.constructor,type:5,write(n){return n.data},read(n){return new ni(n)}});Or({Class:wt.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,wt.prototype),n}});Or({Class:Ro.prototype.constructor,type:7,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ro.prototype),n}});function iy(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 Il(n){if(Jn(n))return n;if(Array.isArray(n))return n.map(Il);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=Il(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var Ns;(r=>{function n(o){return ku.pack(o)}r.serialize=n;function t(o){return ku.unpack(o)}r.deserialize=t;function e(o){return iy(n(Il(o))).toString()}r.checksum=e})(Ns||(Ns={}));var Hu;(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})(Hu||(Hu={}));var Uo;(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})(Uo||(Uo={}));var Wu;(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})(Wu||(Wu={}));var qr;(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,u=s.length;c<u;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})(qr||(qr={}));var mt;(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(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}c.toRgb255a1=r;function o(u){return{r:u.r,g:u.g,b:u.b}}c.clone=o;function i(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}c.fromHex=i;function s(u,a){return u.r===a.r&&u.g===a.g&&u.b===a.b}c.equals=s;function l(u,a,p){return{r:u.r+(a.r-u.r)*p,g:u.g+(a.g-u.g)*p,b:u.b+(a.b-u.b)*p}}c.lerp=l})(mt||(mt={}));var zt;(l=>{l.white={...mt.white,a:1},l.transparent={...mt.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,u){return{...mt.fromHex(c),a:u}}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,u){return mt.equals(c,u)&&c.a===u.a}l.equals=i;function s(c,u,a){return{r:c.r+(u.r-c.r)*a,g:c.g+(u.g-c.g)*a,b:c.b+(u.b-c.b)*a,a:c.a+(u.a-c.a)*a}}l.lerp=s})(zt||(zt={}));var Is;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Is||(Is={}));var qu;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(qu||(qu={}));var $u;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})($u||($u={}));var ko;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(ko||(ko={}));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 yo;(e=>{function n(r,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[r[0]+r[0]*o,0,0]},grid:{count:[2,2,2],size:r.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function t(r,o){let i={...r};if(sy.forEach(s=>{Object.assign(i,{[s]:o[s]??r[s]})}),i.radial={...r.radial},o.radial){let s=r.radial,l=o.radial;ay.forEach(c=>{Object.assign(i.radial,{[c]:l[c]??s[c]})})}if(i.linear={...r.linear},o.linear){let s=r.linear,l=o.linear;ly.forEach(c=>{Object.assign(i.linear,{[c]:l[c]??s[c]})})}if(i.grid={...r.grid},o.grid){let s=r.grid,l=o.grid;cy.forEach(c=>{Object.assign(i.grid,{[c]:l[c]??s[c]})})}if(i.toObject={...r.toObject},o.toObject){let s=r.toObject,l=o.toObject;uy.forEach(c=>{Object.assign(i.toObject,{[c]:l[c]??s[c]})})}if(i.randomnessObject={...r.randomnessObject},o.randomnessObject){let s=r.randomnessObject,l=o.randomnessObject;py.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=t})(yo||(yo={}));var Yu;(t=>t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}})(Yu||(Yu={}));var sy=["count"],ay=["radius","start","end","position","scale","rotation"],ly=["position","scale","rotation"],cy=["count","size"],uy=["count","position","scale","rotation"],py=["strength","scale","rotation","position","movement","seed","freqScale"];var Ps;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Ps||(Ps={}));var Os;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:zt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(r==="SpotLight")return{type:r,color:zt.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:zt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Os||(Os={}));var Pl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(Pl||(Pl={}));var Ol;(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})(Ol||(Ol={}));var Cs;(t=>t.defaultData={...Ol.defaultData,...Pl.defaultData,cloner:null,booleanExclude:null})(Cs||(Cs={}));var Xu=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Ku=["wrapping","image"],nr;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,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:mt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...mt.fromHex(6710886),a:1},colorB:{...mt.fromHex(6710886),a:1},colorC:{...mt.fromHex(16777215),a:1},colorD:{...mt.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:zt.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:zt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:zt.fromHexAndA(0,1),contourColor:zt.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}}}})(nr||(nr={}));var Tt;(l=>{function n(c){return!c.layers.some(a=>a.data.type==="texture"&&a.data.projection!==0||a.data.type==="depth"&&!a.data.isWorldSpace||a.data.type==="noise"||a.data.type==="displace")&&!e(c)}l.isMergable=n;function t(c){let u="";return c.layers.forEach(a=>{Object.entries(a.data).forEach(([p,d])=>{u+=`${p}${d}`,Array.isArray(d)?d.forEach(f=>u+=`${f}`):typeof d=="object"?Object.values(d).forEach(f=>{typeof f=="number"?u+=`${f.toFixed(4)}`:u+=`${f}`}):u+=`${d}`})}),u}l.getHash=t;function e(c){let u=0;for(let a of c.layers)"alpha"in a.data&&a.data.type!=="light"&&a.data.type!=="fresnel"&&(u+=(1-u)*a.data.alpha);return u<1}l.isTransparent=e;function r(){return{layers:new he}}l.defaultEmptyData=r;function o(c="layer1",u="layer2"){return i("phong",c,u)}l.defaultData=o;function i(c,u="layer1",a="layer2"){let p=new he;return p.push({fi:0,data:nr.defaultData("light",c),id:u}),p.push({fi:1,data:nr.defaultData("color"),id:a}),{layers:p}}l.defaultTwoLayerData=i;function s(c,u="phong",a="layer1",p="layer2"){let d=nr.defaultData("texture");Object.assign(d.texture,{image:c});let f=new he;return f.push({fi:0,data:d,id:a}),f.push({fi:1,data:nr.defaultData("light",u),id:p}),{layers:f}}l.defaultTwoLayerTextureData=s})(Tt||(Tt={}));var Ho;(t=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Ho||(Ho={}));var Wo;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(Wo||(Wo={}));var $r;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Ho.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}t.defaultData=n})($r||($r={}));var dy=typeof global=="object"&&global&&global.Object===Object&&global,Ms=dy;var fy=typeof self=="object"&&self&&self.Object===Object&&self,my=Ms||fy||Function("return this")(),ze=my;var hy=ze.Symbol,lt=hy;var Zu=Object.prototype,gy=Zu.hasOwnProperty,yy=Zu.toString,ai=lt?lt.toStringTag:void 0;function xy(n){var t=gy.call(n,ai),e=n[ai];try{n[ai]=void 0;var r=!0}catch{}var o=yy.call(n);return r&&(t?n[ai]=e:delete n[ai]),o}var Qu=xy;var by=Object.prototype,vy=by.toString;function Sy(n){return vy.call(n)}var Ju=Sy;var wy="[object Null]",_y="[object Undefined]",ep=lt?lt.toStringTag:void 0;function Ty(n){return n==null?n===void 0?_y:wy:ep&&ep in Object(n)?Qu(n):Ju(n)}var At=Ty;function Ay(n){return n!=null&&typeof n=="object"}var ot=Ay;var Ny="[object Symbol]";function Iy(n){return typeof n=="symbol"||ot(n)&&At(n)==Ny}var qo=Iy;function Py(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 Ls=Py;var Oy=Array.isArray,Ge=Oy;var Cy=1/0,tp=lt?lt.prototype:void 0,rp=tp?tp.toString:void 0;function op(n){if(typeof n=="string")return n;if(Ge(n))return Ls(n,op)+"";if(qo(n))return rp?rp.call(n):"";var t=n+"";return t=="0"&&1/n==-Cy?"-0":t}var np=op;function My(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var je=My;function Ly(n){return n}var Es=Ly;var Ey="[object AsyncFunction]",By="[object Function]",Dy="[object GeneratorFunction]",Gy="[object Proxy]";function Ry(n){if(!je(n))return!1;var t=At(n);return t==By||t==Dy||t==Ey||t==Gy}var $o=Ry;var Vy=ze["__core-js_shared__"],Bs=Vy;var ip=function(){var n=/[^.]+$/.exec(Bs&&Bs.keys&&Bs.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Fy(n){return!!ip&&ip in n}var sp=Fy;var zy=Function.prototype,jy=zy.toString;function Uy(n){if(n!=null){try{return jy.call(n)}catch{}try{return n+""}catch{}}return""}var Cr=Uy;var ky=/[\\^$.*+?()[\]{}|]/g,Hy=/^\[object .+?Constructor\]$/,Wy=Function.prototype,qy=Object.prototype,$y=Wy.toString,Yy=qy.hasOwnProperty,Xy=RegExp("^"+$y.call(Yy).replace(ky,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Ky(n){if(!je(n)||sp(n))return!1;var t=$o(n)?Xy:Hy;return t.test(Cr(n))}var ap=Ky;function Zy(n,t){return n?.[t]}var lp=Zy;function Qy(n,t){var e=lp(n,t);return ap(e)?e:void 0}var ht=Qy;var Jy=ht(ze,"WeakMap"),Ds=Jy;var cp=Object.create,e0=function(){function n(){}return function(t){if(!je(t))return{};if(cp)return cp(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),up=e0;function t0(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 pp=t0;function r0(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Gs=r0;var o0=800,n0=16,i0=Date.now;function s0(n){var t=0,e=0;return function(){var r=i0(),o=n0-(r-e);if(e=r,o>0){if(++t>=o0)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var dp=s0;function a0(n){return function(){return n}}var fp=a0;var l0=function(){try{var n=ht(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Yo=l0;var c0=Yo?function(n,t){return Yo(n,"toString",{configurable:!0,enumerable:!1,value:fp(t),writable:!0})}:Es,mp=c0;var u0=dp(mp),Rs=u0;function p0(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var hp=p0;var d0=9007199254740991,f0=/^(?:0|[1-9]\d*)$/;function m0(n,t){var e=typeof n;return t=t??d0,!!t&&(e=="number"||e!="symbol"&&f0.test(n))&&n>-1&&n%1==0&&n<t}var Yr=m0;function h0(n,t,e){t=="__proto__"&&Yo?Yo(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Xo=h0;function g0(n,t){return n===t||n!==n&&t!==t}var Xr=g0;var y0=Object.prototype,x0=y0.hasOwnProperty;function b0(n,t,e){var r=n[t];(!(x0.call(n,t)&&Xr(r,e))||e===void 0&&!(t in n))&&Xo(n,t,e)}var Ko=b0;function v0(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?Xo(e,l,c):Ko(e,l,c)}return e}var Ot=v0;var gp=Math.max;function S0(n,t,e){return t=gp(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=gp(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),pp(n,this,l)}}var Vs=S0;function w0(n,t){return Rs(Vs(n,t,Es),n+"")}var yp=w0;var _0=9007199254740991;function T0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=_0}var Zo=T0;function A0(n){return n!=null&&Zo(n.length)&&!$o(n)}var Kr=A0;function N0(n,t,e){if(!je(e))return!1;var r=typeof t;return(r=="number"?Kr(e)&&Yr(t,e.length):r=="string"&&t in e)?Xr(e[t],n):!1}var xp=N0;function I0(n){return yp(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&&xp(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 bp=I0;var P0=Object.prototype;function O0(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||P0;return n===e}var Qo=O0;function C0(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var vp=C0;var M0="[object Arguments]";function L0(n){return ot(n)&&At(n)==M0}var Cl=L0;var Sp=Object.prototype,E0=Sp.hasOwnProperty,B0=Sp.propertyIsEnumerable,D0=Cl(function(){return arguments}())?Cl:function(n){return ot(n)&&E0.call(n,"callee")&&!B0.call(n,"callee")},Mr=D0;function G0(){return!1}var wp=G0;var Ap=typeof exports=="object"&&exports&&!exports.nodeType&&exports,_p=Ap&&typeof module=="object"&&module&&!module.nodeType&&module,R0=_p&&_p.exports===Ap,Tp=R0?ze.Buffer:void 0,V0=Tp?Tp.isBuffer:void 0,F0=V0||wp,Jo=F0;var z0="[object Arguments]",j0="[object Array]",U0="[object Boolean]",k0="[object Date]",H0="[object Error]",W0="[object Function]",q0="[object Map]",$0="[object Number]",Y0="[object Object]",X0="[object RegExp]",K0="[object Set]",Z0="[object String]",Q0="[object WeakMap]",J0="[object ArrayBuffer]",ex="[object DataView]",tx="[object Float32Array]",rx="[object Float64Array]",ox="[object Int8Array]",nx="[object Int16Array]",ix="[object Int32Array]",sx="[object Uint8Array]",ax="[object Uint8ClampedArray]",lx="[object Uint16Array]",cx="[object Uint32Array]",Be={};Be[tx]=Be[rx]=Be[ox]=Be[nx]=Be[ix]=Be[sx]=Be[ax]=Be[lx]=Be[cx]=!0;Be[z0]=Be[j0]=Be[J0]=Be[U0]=Be[ex]=Be[k0]=Be[H0]=Be[W0]=Be[q0]=Be[$0]=Be[Y0]=Be[X0]=Be[K0]=Be[Z0]=Be[Q0]=!1;function ux(n){return ot(n)&&Zo(n.length)&&!!Be[At(n)]}var Np=ux;function px(n){return function(t){return n(t)}}var en=px;var Ip=typeof exports=="object"&&exports&&!exports.nodeType&&exports,li=Ip&&typeof module=="object"&&module&&!module.nodeType&&module,dx=li&&li.exports===Ip,Ml=dx&&Ms.process,fx=function(){try{var n=li&&li.require&&li.require("util").types;return n||Ml&&Ml.binding&&Ml.binding("util")}catch{}}(),Lr=fx;var Pp=Lr&&Lr.isTypedArray,mx=Pp?en(Pp):Np,Fs=mx;var hx=Object.prototype,gx=hx.hasOwnProperty;function yx(n,t){var e=Ge(n),r=!e&&Mr(n),o=!e&&!r&&Jo(n),i=!e&&!r&&!o&&Fs(n),s=e||r||o||i,l=s?vp(n.length,String):[],c=l.length;for(var u in n)(t||gx.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Yr(u,c)))&&l.push(u);return l}var zs=yx;function xx(n,t){return function(e){return n(t(e))}}var js=xx;var bx=js(Object.keys,Object),Op=bx;var vx=Object.prototype,Sx=vx.hasOwnProperty;function wx(n){if(!Qo(n))return Op(n);var t=[];for(var e in Object(n))Sx.call(n,e)&&e!="constructor"&&t.push(e);return t}var Cp=wx;function _x(n){return Kr(n)?zs(n):Cp(n)}var tn=_x;function Tx(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Mp=Tx;var Ax=Object.prototype,Nx=Ax.hasOwnProperty;function Ix(n){if(!je(n))return Mp(n);var t=Qo(n),e=[];for(var r in n)r=="constructor"&&(t||!Nx.call(n,r))||e.push(r);return e}var Lp=Ix;function Px(n){return Kr(n)?zs(n,!0):Lp(n)}var ir=Px;var Ox=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Cx=/^\w*$/;function Mx(n,t){if(Ge(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||qo(n)?!0:Cx.test(n)||!Ox.test(n)||t!=null&&n in Object(t)}var Ep=Mx;var Lx=ht(Object,"create"),Er=Lx;function Ex(){this.__data__=Er?Er(null):{},this.size=0}var Bp=Ex;function Bx(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Dp=Bx;var Dx="__lodash_hash_undefined__",Gx=Object.prototype,Rx=Gx.hasOwnProperty;function Vx(n){var t=this.__data__;if(Er){var e=t[n];return e===Dx?void 0:e}return Rx.call(t,n)?t[n]:void 0}var Gp=Vx;var Fx=Object.prototype,zx=Fx.hasOwnProperty;function jx(n){var t=this.__data__;return Er?t[n]!==void 0:zx.call(t,n)}var Rp=jx;var Ux="__lodash_hash_undefined__";function kx(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Er&&t===void 0?Ux:t,this}var Vp=kx;function rn(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])}}rn.prototype.clear=Bp;rn.prototype.delete=Dp;rn.prototype.get=Gp;rn.prototype.has=Rp;rn.prototype.set=Vp;var Ll=rn;function Hx(){this.__data__=[],this.size=0}var Fp=Hx;function Wx(n,t){for(var e=n.length;e--;)if(Xr(n[e][0],t))return e;return-1}var Zr=Wx;var qx=Array.prototype,$x=qx.splice;function Yx(n){var t=this.__data__,e=Zr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():$x.call(t,e,1),--this.size,!0}var zp=Yx;function Xx(n){var t=this.__data__,e=Zr(t,n);return e<0?void 0:t[e][1]}var jp=Xx;function Kx(n){return Zr(this.__data__,n)>-1}var Up=Kx;function Zx(n,t){var e=this.__data__,r=Zr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var kp=Zx;function on(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])}}on.prototype.clear=Fp;on.prototype.delete=zp;on.prototype.get=jp;on.prototype.has=Up;on.prototype.set=kp;var Qr=on;var Qx=ht(ze,"Map"),Jr=Qx;function Jx(){this.size=0,this.__data__={hash:new Ll,map:new(Jr||Qr),string:new Ll}}var Hp=Jx;function eb(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Wp=eb;function tb(n,t){var e=n.__data__;return Wp(t)?e[typeof t=="string"?"string":"hash"]:e.map}var eo=tb;function rb(n){var t=eo(this,n).delete(n);return this.size-=t?1:0,t}var qp=rb;function ob(n){return eo(this,n).get(n)}var $p=ob;function nb(n){return eo(this,n).has(n)}var Yp=nb;function ib(n,t){var e=eo(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var Xp=ib;function nn(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])}}nn.prototype.clear=Hp;nn.prototype.delete=qp;nn.prototype.get=$p;nn.prototype.has=Yp;nn.prototype.set=Xp;var ci=nn;var sb="Expected a function";function El(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(sb);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(El.Cache||ci),e}El.Cache=ci;var Kp=El;var ab=500;function lb(n){var t=Kp(n,function(r){return e.size===ab&&e.clear(),r}),e=t.cache;return t}var Zp=lb;var cb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ub=/\\(\\)?/g,pb=Zp(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(cb,function(e,r,o,i){t.push(o?i.replace(ub,"$1"):r||e)}),t}),Qp=pb;function db(n){return n==null?"":np(n)}var Jp=db;function fb(n,t){return Ge(n)?n:Ep(n,t)?[n]:Qp(Jp(n))}var Ct=fb;var mb=1/0;function hb(n){if(typeof n=="string"||qo(n))return n;var t=n+"";return t=="0"&&1/n==-mb?"-0":t}var to=hb;function gb(n,t){t=Ct(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[to(t[e++])];return e&&e==r?n:void 0}var Us=gb;function yb(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var sn=yb;var ed=lt?lt.isConcatSpreadable:void 0;function xb(n){return Ge(n)||Mr(n)||!!(ed&&n&&n[ed])}var td=xb;function rd(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=td),o||(o=[]);++i<s;){var l=n[i];t>0&&e(l)?t>1?rd(l,t-1,e,r,o):sn(o,l):r||(o[o.length]=l)}return o}var od=rd;function bb(n){var t=n==null?0:n.length;return t?od(n,1):[]}var nd=bb;function vb(n){return Rs(Vs(n,void 0,nd),n+"")}var ks=vb;var Sb=js(Object.getPrototypeOf,Object),an=Sb;var wb="[object Object]",_b=Function.prototype,Tb=Object.prototype,id=_b.toString,Ab=Tb.hasOwnProperty,Nb=id.call(Object);function Ib(n){if(!ot(n)||At(n)!=wb)return!1;var t=an(n);if(t===null)return!0;var e=Ab.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&id.call(e)==Nb}var Hs=Ib;function Pb(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 sd=Pb;function Ob(){this.__data__=new Qr,this.size=0}var ad=Ob;function Cb(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var ld=Cb;function Mb(n){return this.__data__.get(n)}var cd=Mb;function Lb(n){return this.__data__.has(n)}var ud=Lb;var Eb=200;function Bb(n,t){var e=this.__data__;if(e instanceof Qr){var r=e.__data__;if(!Jr||r.length<Eb-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new ci(r)}return e.set(n,t),this.size=e.size,this}var pd=Bb;function ln(n){var t=this.__data__=new Qr(n);this.size=t.size}ln.prototype.clear=ad;ln.prototype.delete=ld;ln.prototype.get=cd;ln.prototype.has=ud;ln.prototype.set=pd;var Ws=ln;function Db(n,t){return n&&Ot(t,tn(t),n)}var dd=Db;function Gb(n,t){return n&&Ot(t,ir(t),n)}var fd=Gb;var yd=typeof exports=="object"&&exports&&!exports.nodeType&&exports,md=yd&&typeof module=="object"&&module&&!module.nodeType&&module,Rb=md&&md.exports===yd,hd=Rb?ze.Buffer:void 0,gd=hd?hd.allocUnsafe:void 0;function Vb(n,t){if(t)return n.slice();var e=n.length,r=gd?gd(e):new n.constructor(e);return n.copy(r),r}var qs=Vb;function Fb(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 xd=Fb;function zb(){return[]}var $s=zb;var jb=Object.prototype,Ub=jb.propertyIsEnumerable,bd=Object.getOwnPropertySymbols,kb=bd?function(n){return n==null?[]:(n=Object(n),xd(bd(n),function(t){return Ub.call(n,t)}))}:$s,cn=kb;function Hb(n,t){return Ot(n,cn(n),t)}var vd=Hb;var Wb=Object.getOwnPropertySymbols,qb=Wb?function(n){for(var t=[];n;)sn(t,cn(n)),n=an(n);return t}:$s,Ys=qb;function $b(n,t){return Ot(n,Ys(n),t)}var Sd=$b;function Yb(n,t,e){var r=t(n);return Ge(n)?r:sn(r,e(n))}var Xs=Yb;function Xb(n){return Xs(n,tn,cn)}var wd=Xb;function Kb(n){return Xs(n,ir,Ys)}var Ks=Kb;var Zb=ht(ze,"DataView"),Zs=Zb;var Qb=ht(ze,"Promise"),Qs=Qb;var Jb=ht(ze,"Set"),Js=Jb;var _d="[object Map]",ev="[object Object]",Td="[object Promise]",Ad="[object Set]",Nd="[object WeakMap]",Id="[object DataView]",tv=Cr(Zs),rv=Cr(Jr),ov=Cr(Qs),nv=Cr(Js),iv=Cr(Ds),xo=At;(Zs&&xo(new Zs(new ArrayBuffer(1)))!=Id||Jr&&xo(new Jr)!=_d||Qs&&xo(Qs.resolve())!=Td||Js&&xo(new Js)!=Ad||Ds&&xo(new Ds)!=Nd)&&(xo=function(n){var t=At(n),e=t==ev?n.constructor:void 0,r=e?Cr(e):"";if(r)switch(r){case tv:return Id;case rv:return _d;case ov:return Td;case nv:return Ad;case iv:return Nd}return t});var un=xo;var sv=Object.prototype,av=sv.hasOwnProperty;function lv(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&av.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Pd=lv;var cv=ze.Uint8Array,Bl=cv;function uv(n){var t=new n.constructor(n.byteLength);return new Bl(t).set(new Bl(n)),t}var pn=uv;function pv(n,t){var e=t?pn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Od=pv;var dv=/\w*$/;function fv(n){var t=new n.constructor(n.source,dv.exec(n));return t.lastIndex=n.lastIndex,t}var Cd=fv;var Md=lt?lt.prototype:void 0,Ld=Md?Md.valueOf:void 0;function mv(n){return Ld?Object(Ld.call(n)):{}}var Ed=mv;function hv(n,t){var e=t?pn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var ea=hv;var gv="[object Boolean]",yv="[object Date]",xv="[object Map]",bv="[object Number]",vv="[object RegExp]",Sv="[object Set]",wv="[object String]",_v="[object Symbol]",Tv="[object ArrayBuffer]",Av="[object DataView]",Nv="[object Float32Array]",Iv="[object Float64Array]",Pv="[object Int8Array]",Ov="[object Int16Array]",Cv="[object Int32Array]",Mv="[object Uint8Array]",Lv="[object Uint8ClampedArray]",Ev="[object Uint16Array]",Bv="[object Uint32Array]";function Dv(n,t,e){var r=n.constructor;switch(t){case Tv:return pn(n);case gv:case yv:return new r(+n);case Av:return Od(n,e);case Nv:case Iv:case Pv:case Ov:case Cv:case Mv:case Lv:case Ev:case Bv:return ea(n,e);case xv:return new r;case bv:case wv:return new r(n);case vv:return Cd(n);case Sv:return new r;case _v:return Ed(n)}}var Bd=Dv;function Gv(n){return typeof n.constructor=="function"&&!Qo(n)?up(an(n)):{}}var ta=Gv;var Rv="[object Map]";function Vv(n){return ot(n)&&un(n)==Rv}var Dd=Vv;var Gd=Lr&&Lr.isMap,Fv=Gd?en(Gd):Dd,Rd=Fv;var zv="[object Set]";function jv(n){return ot(n)&&un(n)==zv}var Vd=jv;var Fd=Lr&&Lr.isSet,Uv=Fd?en(Fd):Vd,zd=Uv;var kv=1,Hv=2,Wv=4,jd="[object Arguments]",qv="[object Array]",$v="[object Boolean]",Yv="[object Date]",Xv="[object Error]",Ud="[object Function]",Kv="[object GeneratorFunction]",Zv="[object Map]",Qv="[object Number]",kd="[object Object]",Jv="[object RegExp]",eS="[object Set]",tS="[object String]",rS="[object Symbol]",oS="[object WeakMap]",nS="[object ArrayBuffer]",iS="[object DataView]",sS="[object Float32Array]",aS="[object Float64Array]",lS="[object Int8Array]",cS="[object Int16Array]",uS="[object Int32Array]",pS="[object Uint8Array]",dS="[object Uint8ClampedArray]",fS="[object Uint16Array]",mS="[object Uint32Array]",Le={};Le[jd]=Le[qv]=Le[nS]=Le[iS]=Le[$v]=Le[Yv]=Le[sS]=Le[aS]=Le[lS]=Le[cS]=Le[uS]=Le[Zv]=Le[Qv]=Le[kd]=Le[Jv]=Le[eS]=Le[tS]=Le[rS]=Le[pS]=Le[dS]=Le[fS]=Le[mS]=!0;Le[Xv]=Le[Ud]=Le[oS]=!1;function ra(n,t,e,r,o,i){var s,l=t&kv,c=t&Hv,u=t&Wv;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!je(n))return n;var a=Ge(n);if(a){if(s=Pd(n),!l)return Gs(n,s)}else{var p=un(n),d=p==Ud||p==Kv;if(Jo(n))return qs(n,l);if(p==kd||p==jd||d&&!o){if(s=c||d?{}:ta(n),!l)return c?Sd(n,fd(s,n)):vd(n,dd(s,n))}else{if(!Le[p])return o?n:{};s=Bd(n,p,l)}}i||(i=new Ws);var f=i.get(n);if(f)return f;i.set(n,s),zd(n)?n.forEach(function(g){s.add(ra(g,t,e,g,n,i))}):Rd(n)&&n.forEach(function(g,b){s.set(b,ra(g,t,e,b,n,i))});var m=u?c?Ks:wd:c?ir:tn,h=a?void 0:m(n);return hp(h||n,function(g,b){h&&(b=g,g=n[b]),Ko(s,b,ra(g,t,e,b,n,i))}),s}var oa=ra;var hS=1,gS=4;function yS(n){return oa(n,hS|gS)}var ui=yS;function xS(n,t){return n!=null&&t in Object(n)}var Hd=xS;function bS(n,t,e){t=Ct(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var s=to(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&&Zo(o)&&Yr(s,o)&&(Ge(n)||Mr(n)))}var Wd=bS;function vS(n,t){return n!=null&&Wd(n,t,Hd)}var qd=vS;function SS(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 $d=SS;var wS=$d(),Yd=wS;function _S(n,t,e){(e!==void 0&&!Xr(n[t],e)||e===void 0&&!(t in n))&&Xo(n,t,e)}var pi=_S;function TS(n){return ot(n)&&Kr(n)}var Xd=TS;function AS(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var di=AS;function NS(n){return Ot(n,ir(n))}var Kd=NS;function IS(n,t,e,r,o,i,s){var l=di(n,e),c=di(t,e),u=s.get(c);if(u){pi(n,e,u);return}var a=i?i(l,c,e+"",n,t,s):void 0,p=a===void 0;if(p){var d=Ge(c),f=!d&&Jo(c),m=!d&&!f&&Fs(c);a=c,d||f||m?Ge(l)?a=l:Xd(l)?a=Gs(l):f?(p=!1,a=qs(c,!0)):m?(p=!1,a=ea(c,!0)):a=[]:Hs(c)||Mr(c)?(a=l,Mr(l)?a=Kd(l):(!je(l)||$o(l))&&(a=ta(c))):p=!1}p&&(s.set(c,a),o(a,c,r,i,s),s.delete(c)),pi(n,e,a)}var Zd=IS;function Qd(n,t,e,r,o){n!==t&&Yd(t,function(i,s){if(o||(o=new Ws),je(i))Zd(n,t,s,e,Qd,r,o);else{var l=r?r(di(n,s),i,s+"",n,t,o):void 0;l===void 0&&(l=i),pi(n,s,l)}},ir)}var Jd=Qd;function PS(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var ef=PS;function OS(n,t){return t.length<2?n:Us(n,sd(t,0,-1))}var tf=OS;var CS=bp(function(n,t,e){Jd(n,t,e)}),bo=CS;function MS(n,t){return t=Ct(t,n),n=tf(n,t),n==null||delete n[to(ef(t))]}var rf=MS;function LS(n){return Hs(n)?void 0:n}var of=LS;var ES=1,BS=2,DS=4,GS=ks(function(n,t){var e={};if(n==null)return e;var r=!1;t=Ls(t,function(i){return i=Ct(i,n),r||(r=i.length>1),i}),Ot(n,Ks(n),e),r&&(e=oa(e,ES|BS|DS,of));for(var o=t.length;o--;)rf(e,t[o]);return e}),dn=GS;function RS(n,t,e,r){if(!je(n))return n;t=Ct(t,n);for(var o=-1,i=t.length,s=i-1,l=n;l!=null&&++o<i;){var c=to(t[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];u=r?r(a,c,l):void 0,u===void 0&&(u=je(a)?a:Yr(t[o+1])?[]:{})}Ko(l,c,u),l=l[c]}return n}var nf=RS;function VS(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var s=t[r],l=Us(n,s);e(l,s)&&nf(i,Ct(s,n),l)}return i}var sf=VS;function FS(n,t){return sf(n,t,function(e,r){return qd(n,r)})}var af=FS;var zS=ks(function(n,t){return n==null?{}:af(n,t)}),fn=zS;var fi;(o=>{o.identity={...Is.identity,hiddenMatrix:qr.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:Uo.isEqual(i.position,s.position)?null:s.position,rotation:Uo.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Uo.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:qr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(fi||(fi={}));var Dl;(t=>t.defaultData={fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(Dl||(Dl={}));var jt;(t=>t.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,physics:null,...fi.identity})(jt||(jt={}));var lf;(t=>t.defaultData={type:"Empty",cloner:null,...jt.defaultData})(lf||(lf={}));var vo;(t=>t.defaultData={type:"Mesh",...jt.defaultData,...Cs.defaultData})(vo||(vo={}));var na;(t=>t.defaultData={...jt.defaultData,...fi.identity,...go.defaultData})(na||(na={}));var cf;(t=>{function n(e){return{...jt.defaultData,...Os.defaultData(e)}}t.defaultData=n})(cf||(cf={}));var uf;(o=>(o.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:qr.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Dl.defaultData,states:new he,events:new he,...go.defaultData},o.defaultMeshObject={name:"Rectangle",...jt.defaultData,...vo.defaultData,geometry:$r.defaultData("RectangleGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},o.defaultBooleanObject={name:"Boolean",...jt.defaultData,...vo.defaultData,geometry:$r.defaultData("BooleanGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")},o.defaultTextObject={name:"Text",...jt.defaultData,...vo.defaultData,geometry:$r.defaultData("TextGeometry"),material:Tt.defaultTwoLayerData("phong","layer1","layer2")}))(uf||(uf={}));var pf;(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=hl(i.material,s=>{if(typeof s!="string")for(let[l,c]of Object.entries(o.material.layers)){let u=s.layers.data(l);u&&bo(u,c)}}).data),i.materials&&o.materials&&(i.materials=hl(i.materials,s=>{for(let l=0;l<i.materials.length;l++){let c=o.materials[l];if(typeof c!="string")for(let[u,a]of Object.entries(c.layers)){let p=s[l]?.layers?.data(u);p&&bo(p,a)}}}).data),i}e.patchMaterialState=n;function t(r,o){if(o===void 0)return r;let i={...r};if(Object.assign(i,fi.merge(i,o)),ko.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),i.cloner&&"cloner"in o&&Object.assign(i,{cloner:yo.merge(i.cloner,o.cloner)});else if(r.type==="Empty")i.cloner&&"cloner"in o&&Object.assign(i,{cloner:yo.merge(i.cloner,o.cloner)});else if(Ps.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=mt.clone(s.color))}return i}e.patch=t})(pf||(pf={}));var mn;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(mn||(mn={}));var ia;(t=>t.defaultData={orbitControls:mn.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:1,stopMode:"manual",duration:5e3},web:{compress:!0,preset:1,preload:!0}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null})(ia||(ia={}));function So(n,t){return Object.setPrototypeOf(n,t),n}function df(n){return Array.isArray(n)?n:[n]}var sa;(e=>{function n(){let r={};return r["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},So(r,Me.prototype)}e.defaultColors=n;function t(){return{materials:new Me,images:new Me,colors:new Me,audios:new Me,fonts:new Me,penumbraSize:[.5,.5,.5]}}e.emptyData=t})(sa||(sa={}));import{MathUtils as aa}from"three";function ff(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={...fn(dt(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={...dt(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function la(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function ca(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach(o=>{typeof o!="string"&&t(o)}):"material"in r&&typeof r.material!="string"&&t(r.material)})}function jS(n){Object.assign(n.scene.publish,{orbitControls:{...mn.defaultData,...dt(n.scene.publish.orbitControls)}})}function US(n){Object.assign(n.scene.publish.settings,{video:{...ia.defaultData.settings.video,...dt(n.scene.publish.settings.video)}})}function kS(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((Xu.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[s,l]of Object.entries(i))(Ku.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 HS(n){n.scene.publish.withBackground=!0}function WS(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1}}function qS(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 $S(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 YS(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 mf(n){n.layers===void 0&&Object.assign(n,Tt.defaultTwoLayerData("lambert"))}function Gl(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={...dt(t),colors:e,steps:r};Object.assign(t,o)}})}function XS(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function hf(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&Gl(r)}):"material"in e&&typeof e.material!="string"&&Gl(e.material)}),Object.values(n.shared.materials).forEach(t=>Gl(t))}function KS(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 ZS(n){n.shared.audios=So({},Me.prototype)}function QS(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function JS(n){Object.entries(dt(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(dt(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function e1(n){n.scene.publish.settings.web.preload=!1}function gf(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function t1(n){n.shared.fonts=So({},Me.prototype)}function r1(n){return n.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function o1(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=Tt.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=r1(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...jt.defaultData,...vo.defaultData,flatShading:!1,wireframe:!1,geometry:{...$r.defaultData("TextGeometry"),width:o.width,height:o.height,font:l,depth:0,horizontalAlign:o.horizontalAlign,verticalAlign:o.verticalAlign,fontSize:o.fontSize*1.40625,lineHeight:o.lineHeight/1.40625,letterSpacing:o.letterSpacing-1,text:o.text,textTransform:o.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:i,states:dt(o.states),events:dt(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=dt(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function n1(n){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new he,move:new he,jump:new he}});else{let i=new he;Object.assign(o,{actions:i}),(o.type==="MouseDown"||o.type==="MouseUp"||o.type==="KeyDown"||o.type==="KeyUp")&&"url"in o&&i.push({fi:0,id:aa.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},a={easing:s.easing,duration:s.duration};s.easing===6?Object.assign(a,fn(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let p={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},d={state:s.state,...p,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:aa.generateUUID(),data:u},{fi:1,id:aa.generateUUID(),data:d})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function i1(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let s=new he,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let p;l.push(u),c.interaction==="play"?p={...fn(c,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in c?c.after:void 0,toggle:"after"in c?c.toggle:void 0,type:"Audio"}:(c.interaction==="pause"||c.interaction==="stop")&&(p={...fn(c,"interaction","delay","object","playAudio"),type:"Audio"}),p&&s.push({fi:a,id:u,data:p})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:aa.generateUUID(),data:{type:o,actions:s}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function yf(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=nr.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function s1(n){la(n,yf),ca(n,yf)}function a1(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function l1(n){n.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}var xf=24;function bf(n){let t=n.schema??0;t!==xf&&(console.warn("updating from ",t,"to ",xf),t<1&&(ca(n,ff),la(n,ff),n.schema=1),t<2&&(jS(n),n.schema=2),t<3&&(kS(n),n.schema=3),t<4&&(HS(n),n.schema=4),t<5&&(WS(n),n.schema=5),t<6&&(qS(n),n.schema=6),t<7&&($S(n),n.schema=7),t<8&&(YS(n),n.schema=8),t<9&&(hf(n),n.schema=9),t<10&&(XS(n),n.schema=10),t<11&&(KS(n),n.schema=11),t<12&&(hf(n),n.schema=12),t<13&&(ZS(n),n.schema=13),t<14&&(QS(n),n.schema=14),t<15&&(JS(n),n.schema=15),t<16&&(e1(n),n.schema=16),t<17&&(ca(n,gf),la(n,gf),n.schema=17),t<18&&(ca(n,mf),la(n,mf),n.schema=18),t<19&&(US(n),n.schema=19),t<20&&(t1(n),o1(n),n.schema=20),t<21&&(n1(n),i1(n),n.schema=21),t<22&&(s1(n),n.schema=22),t<23&&(a1(n),n.schema=23),t<24&&(l1(n),n.schema=24))}var ua;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(ua||(ua={}));var bn=ll(Sf());import{Object3D as M1,Vector3 as gt,Euler as Hl,MathUtils as jf,Matrix4 as vi}from"three";var c1=.5*(Math.sqrt(3)-1),hi=(3-Math.sqrt(3))/6,u1=1/3,sr=1/6,KB=(Math.sqrt(5)-1)/4,ZB=(5-Math.sqrt(5))/20,gi=n=>Math.floor(n)|0,wf=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),Vl=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function pa(n=Math.random){let t=Tf(n),e=new Float64Array(t).map(o=>wf[o%12*2]),r=new Float64Array(t).map(o=>wf[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*c1,p=gi(i+a),d=gi(s+a),f=(p+d)*hi,m=p-f,h=d-f,g=i-m,b=s-h,x,S;g>b?(x=1,S=0):(x=0,S=1);let w=g-x+hi,v=b-S+hi,N=g-1+2*hi,_=b-1+2*hi,y=p&255,I=d&255,A=.5-g*g-b*b;if(A>=0){let C=y+t[I],L=e[C],j=r[C];A*=A,l=A*A*(L*g+j*b)}let P=.5-w*w-v*v;if(P>=0){let C=y+x+t[I+S],L=e[C],j=r[C];P*=P,c=P*P*(L*w+j*v)}let T=.5-N*N-_*_;if(T>=0){let C=y+1+t[I+1],L=e[C],j=r[C];T*=T,u=T*T*(L*N+j*_)}return 70*(l+c+u)}}function _f(n=Math.random){let t=Tf(n),e=new Float64Array(t).map(i=>Vl[i%12*3]),r=new Float64Array(t).map(i=>Vl[i%12*3+1]),o=new Float64Array(t).map(i=>Vl[i%12*3+2]);return function(s,l,c){let u,a,p,d,f=(s+l+c)*u1,m=gi(s+f),h=gi(l+f),g=gi(c+f),b=(m+h+g)*sr,x=m-b,S=h-b,w=g-b,v=s-x,N=l-S,_=c-w,y,I,A,P,T,C;v>=N?N>=_?(y=1,I=0,A=0,P=1,T=1,C=0):v>=_?(y=1,I=0,A=0,P=1,T=0,C=1):(y=0,I=0,A=1,P=1,T=0,C=1):N<_?(y=0,I=0,A=1,P=0,T=1,C=1):v<_?(y=0,I=1,A=0,P=0,T=1,C=1):(y=0,I=1,A=0,P=1,T=1,C=0);let L=v-y+sr,j=N-I+sr,Y=_-A+sr,te=v-P+2*sr,ie=N-T+2*sr,U=_-C+2*sr,W=v-1+3*sr,q=N-1+3*sr,F=_-1+3*sr,E=m&255,D=h&255,B=g&255,k=.6-v*v-N*N-_*_;if(k<0)u=0;else{let G=E+t[D+t[B]];k*=k,u=k*k*(e[G]*v+r[G]*N+o[G]*_)}let $=.6-L*L-j*j-Y*Y;if($<0)a=0;else{let G=E+y+t[D+I+t[B+A]];$*=$,a=$*$*(e[G]*L+r[G]*j+o[G]*Y)}let H=.6-te*te-ie*ie-U*U;if(H<0)p=0;else{let G=E+P+t[D+T+t[B+C]];H*=H,p=H*H*(e[G]*te+r[G]*ie+o[G]*U)}let V=.6-W*W-q*q-F*F;if(V<0)d=0;else{let G=E+1+t[D+1+t[B+1]];V*=V,d=V*V*(e[G]*W+r[G]*q+o[G]*F)}return 32*(u+a+p+d)}}function Tf(n){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(n()*(256-r)),i=e[r];e[r]=e[o],e[o]=i}for(let r=256;r<512;r++)e[r]=e[r-256];return e}import{Triangle as p1}from"three";var Ut=new p1,da=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let i=1;Ut.a.fromBufferAttribute(t,o),Ut.b.fromBufferAttribute(t,o+1),Ut.c.fromBufferAttribute(t,o+2),i*=Ut.getArea(),e[o/3]=i}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,i=-1;for(;r<=o;){let s=Math.ceil((r+o)/2);if(s===0||e[s-1]<=t&&e[s]>t){i=s;break}else t<e[s]?o=s-1:r=s+1}return i}sampleFace(t,e,r){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Ut.a.fromBufferAttribute(this.positionAttribute,t*3),Ut.b.fromBufferAttribute(this.positionAttribute,t*3+1),Ut.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(Ut.a,o).addScaledVector(Ut.b,i).addScaledVector(Ut.c,1-(o+i)),Ut.getNormal(r),this}};import{Matrix4 as v1,Object3D as S1}from"three";import{Matrix4 as Lf}from"three";import{Object3D as m1,Matrix4 as h1}from"three";import{HemisphereLight as Af}from"three";function Xe(n,t){return t.color(n)}var Fl=n=>"isEntity"in n,ar=n=>"isAbstractMesh"in n,lr=n=>n!==null&&n.objectType==="BooleanObject",Nf=n=>n.objectType==="CombinedCamera";var fa=n=>"objectHelper"in n;function d1(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??qr.identity)),e&&(n.updateMatrix(),lr(n.parent)&&ar(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 f1(n,t){d1(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function If(n,t,e){f1(n,t),t.color!==void 0&&(n.color=Xe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Af)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Af)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function Pf(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 ma=n=>class extends n{hasEntityChild(){return this.children.some(e=>Fl(e))}isDescendantOf(e){e instanceof m1&&(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 h1().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Fl(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};import{Box3 as Cf,Line3 as g1,Matrix4 as zl,Vector3 as Lt}from"three";var hn=new Cf,Mt=new Lt,cr=new Lt,gn=new zl,Mf=[new Lt(-1,1,1),new Lt(-1,-1,1),new Lt(1,-1,1),new Lt(1,1,1),new Lt(-1,1,-1),new Lt(-1,-1,-1),new Lt(1,-1,-1),new Lt(1,1,-1)],y1=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],x1=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function b1(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,l=-1/0,c=-1/0,u=-1/0;for(let a=e;a<r;a++){let p=t.getX(a),d=t.getY(a),f=t.getZ(a);p<o&&(o=p),d<i&&(i=d),f<s&&(s=f),p>l&&(l=p),d>c&&(c=d),f>u&&(u=f)}return n.min.set(o,i,s),n.max.set(l,c,u),n}var Of=(n,t,e)=>{if(ar(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position"),i=n.geometry.userData.type;i==="SubdivGeometry"?Mt.copy(n.originalGeometry.boundingSphere.center):i==="TextGeometry"||Wo.is2DParametricMesh(i)?Mt.set(0,0,r.depth*.5):i==="ConeGeometry"||i==="CubeGeometry"||i==="CylinderGeometry"||i==="DodecahedronGeometry"||i==="HelixGeometry"||i==="IcosahedronGeometry"||i==="PyramidGeometry"||i==="SphereGeometry"||i==="PlaneGeometry"||i==="BackdropGeometry"||i==="TorusGeometry"||i==="TorusKnotGeometry"?Mt.set(0,0,0):o!==void 0&&(b1(hn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),hn.getCenter(Mt)),n.forceComputeSize?hn.getSize(cr).multiplyScalar(.5):cr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(fa(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");hn.setFromArray(r.array),hn.getCenter(Mt),hn.getSize(cr).multiplyScalar(.5)}else Mt.setScalar(0),cr.setScalar(0);gn.copy(t).multiply(n.matrixWorld),cr.x===0&&cr.y===0&&cr.z===0?e.push(new Lt(Mt.x,Mt.y,Mt.z).applyMatrix4(gn)):Mf.forEach(r=>{e.push(r.clone().multiply(cr).add(Mt).applyMatrix4(gn))})},yi=class extends Cf{constructor(){super(...arguments);this.matrix=new zl;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 zl().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&&Of(s,r,i)}):Of(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(gn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(cr).multiplyScalar(.5),this.getCenter(Mt),gn.copy(this.matrix).setPosition(Mt),this.vertices=Mf.map(e=>e.clone().multiply(cr).applyMatrix4(gn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=y1.map(([e,r])=>new g1(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Lt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=x1.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Et=n=>"isEntity"in n,Ef=n=>"isAbstractMesh"in n,Bt=n=>class extends ma(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Lf;this._singleBBox=new yi;this._recursiveBBox=new yi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1;this.currentState=null;this.currentTransitionAction=null}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=>{Et(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)Et(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)Et(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.dispatchEvent({type:"updateMatrix"})}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)Et(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Lf,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)Et(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 dn(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 dn(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 jl=class extends S1{},w1=n=>n.type==="Mesh",ur=class extends jl{constructor(e){super();this.object=e;this.hiddenMatrix=new v1;this.uuidOrigin=e.uuid,this.matrixAutoUpdate=!0;for(let r of this.object.children)if(Et(r)){let o=new ur(r);o.visible=!0,this.add(o),o.matrixAutoUpdate=!1,o.matrix=r.matrix.clone(),o.matrix.premultiply(r.hiddenMatrix)}}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return w1(this.object)}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(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,e=!0);for(let r of this.children)r.updateMatrixWorld(e)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(e){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}};var _1,yn=new Promise(n=>{_1=n});import{Triangle as T1,Vector3 as _o}from"three";var Bf=-1,A1=1,Df={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Gf={polygon_center:0,edge:1,vertex:2},xi=(n,t)=>(e,r)=>!t||e===0||n===0?0:n*r/100,me=(n,t)=>{let e=Math.abs(t),r=e*-1;return(n-Bf)*(e-r)/(A1-Bf)+r};function Rf(n){let t=[],e={};for(var r=0,o=n.length;r<o;r++){var i=JSON.stringify(n[r].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(t.push(n[r]),e[i]=!0)}return t}var N1=new _o,ha=new _o,I1=new _o,P1=new _o;function xn(n,t){let e=I1.fromArray(n),r=P1.fromArray(t);ha.copy(r).sub(e);let o=ha.length();return ha.normalize().multiplyScalar(o*.5),N1.copy(e).add(ha).toArray()}var Dt=new T1,ga=new _o,ya=new _o,wo=new _o;function Vf(n){let t=[];for(let e=0;e<=n.index.count;e++)if(ga.fromArray(n.index.array,e*3),Dt.setFromAttributeAndIndices(n.attributes.position,ga.x,ga.y,ga.z),Dt.getNormal(ya),Dt.getMidpoint(wo),!(isNaN(wo.x)||isNaN(wo.y)||isNaN(wo.z))){let{a:r,b:o,c:i}=Dt,s=r.toArray(),l=o.toArray(),c=i.toArray(),u=r.distanceTo(o),a=o.distanceTo(i),p=i.distanceTo(r),d=xn(s,l),f=xn(l,c),m=xn(c,s),h=[u,a,p],g=Math.max(...h),b=h.filter(w=>Math.round(w)===Math.round(g)).length>1,x=[],S=Dt.getMidpoint(wo).toArray();g===u&&!b&&(x=[f,m,m],S=d),g===a&&!b&&(x=[d,m,m],S=f),g===p&&!b&&(x=[d,f,f],S=m),b&&(x=[d,f,m]),t.push({vertices:[s,l,c],faceCenters:x,midpoint:S,norm:Dt.getNormal(ya).toArray()})}return t}function Ff(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){Dt.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Dt.getNormal(ya),Dt.getMidpoint(wo);let o=Dt.a.toArray(),i=Dt.b.toArray(),s=Dt.c.toArray();t.push({vertices:[o,i,s],faceCenters:[xn(o,i),xn(i,s),xn(s,o)],midpoint:wo.toArray(),norm:ya.toArray()})}return t}var O1=4,C1=.5,Ul=n=>.5*(1-Math.cos(n*Math.PI)),kl=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let b=0;b<4095+1;b++)this.perlin[b]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),i=Math.floor(e),s=Math.floor(r),l=t-o,c=e-i,u=r-s,a,p,d=0,f=.5,m,h,g;for(let b=0;b<O1;b++){let x=o+(i<<4)+(s<<8);a=Ul(l),p=Ul(c),m=this.perlin[x&4095],m+=a*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=a*(this.perlin[x+16+1&4095]-h),m+=p*(h-m),x+=256,h=this.perlin[x&4095],h+=a*(this.perlin[x+1&4095]-h),g=this.perlin[x+16&4095],g+=a*(this.perlin[x+16+1&4095]-g),h+=p*(g-h),m+=Ul(u)*(h-m),d+=m*f,f*=C1,o<<=1,l*=2,i<<=1,c*=2,s<<=1,u*=2,l>=1&&(o++,l--),c>=1&&(i++,c--),u>=1&&(s++,u--)}return d}noiseSeed(t){let e=(()=>{let s,l;return{setSeed(c){l=s=(c??Math.random()*4294967296)>>>0},getSeed(){return s},rand(){return l=(1664525*l+1013904223)%4294967296,l/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},zf=kl;var ct=1e-4,pr,Hf,Wf,qf,Uf=new gt,kf=new gt;yn.then(n=>{pr=n,Hf=[pr.get_face_center,pr.get_edge_midpoint,pr.get_vertex_position],Wf=[pr.get_face_normal,pr.get_edge_normal,pr.get_vertex_normal],qf=[pr.face_count,pr.edge_count,pr.vertex_count]});var L1=new vi,E1=new vi,ro=new gt,To=new gt,bi=new gt,Wl=new gt,B1=new gt,D1=new gt;var Br=new zf,Dr=class extends M1{constructor(e,r={}){super();this.objectForSample=void 0;this.object=e;let o=e.recursiveBBox.getSize(new gt),i=.1;this.parameters=yo.defaultData(o.toArray(),i),bo(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);break;case"toObject":this._updateToObject(this.parameters)}this.parameters.type==="toObject"?this.objectForSample&&this.objectForSample.children.forEach(e=>e.updateMatrix()):this.children.forEach(e=>e.updateMatrix())}_updateCount(e){let r;if(e!==void 0?r=e:r=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(r=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,s=this.children.length;i<s;++i)this.remove(this.children[0]);let o=[...this.objectForSample.children].filter(i=>i instanceof ur&&i.uuidOrigin===this.object.uuid);if(o.length===r)return;if(o.length<r)for(let i=0,s=r-o.length;i<s;++i){let l=new ur(this.object);l.visible=!0,this.objectForSample.add(l),this.parameters.hideBase&&this.setHideBase(!0)}else for(let i=0,s=o.length-r;i<s;++i)this.objectForSample.remove(o[i])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,i=r-this.children.length;o<i;++o){let s=new ur(this.object);s.visible=!0,this.add(s),this.parameters.hideBase&&this.setHideBase(!0)}else for(let o=0,i=this.children.length-r;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let r=e.radial,o=r.start*jf.DEG2RAD,i=r.end*jf.DEG2RAD,s=o-i,l=new Hl(r.rotation[0],r.rotation[1],r.rotation[2]),c;switch(r.axis){case"z":c=new gt(0,0,1);break;case"y":c=new gt(0,1,0);break;default:case"x":c=new gt(1,0,0);break}let u=e.randomnessObject,a=u.noiseType==="perlin";Br.noiseSeed(u.seed);let p=pa((0,bn.default)(u.seed)),d=xi(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,g=a?Br.noise(h):p(h,h);m.scale.x=r.scale[0]+d(f,me(g,u.scale[0]))||ct,m.scale.y=r.scale[1]+d(f,me(g,u.scale[1]))||ct,m.scale.z=r.scale[2]+d(f,me(g,u.scale[2]))||ct,m.position.setScalar(0);let b=s/e.count*f-o;switch(r.axis){case"x":m.rotation.set(0,b,0);break;case"y":m.rotation.set(0,0,b);break;case"z":m.rotation.set(b,0,0);break}m.translateOnAxis(c,r.radius),m.position.x+=r.position[0]+d(f,me(g,u.position[0])),m.position.y+=r.position[1]+d(f,me(g,u.position[1])),m.position.z+=r.position[2]+d(f,me(g,u.position[2]));let x=d(f,me(g,u.rotation[0])),S=d(f,me(g,u.rotation[1])),w=d(f,me(g,u.rotation[2]));r.alignment===!0?(m.rotation.x+=l.x+x,m.rotation.y+=l.y+S,m.rotation.z+=l.z+w):m.rotation.set(l.x+x,l.y+S,l.z+w)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Hl(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject,s=i.noiseType==="perlin";Br.noiseSeed(i.seed);let l=pa((0,bn.default)(i.seed)),c=xi(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let p=u*(i.freqScale/10)+i.movement,d=s?Br.noise(p):l(p,p),f=c(u,me(d,i.rotation[0])),m=c(u,me(d,i.rotation[1])),h=c(u,me(d,i.rotation[2]));a.scale.x=1+(r.scale[0]-1)*u+c(u,me(d,i.scale[0]))||ct,a.scale.y=1+(r.scale[1]-1)*u+c(u,me(d,i.scale[1]))||ct,a.scale.z=1+(r.scale[2]-1)*u+c(u,me(d,i.scale[2]))||ct,a.rotation.x=o.x*u+f,a.rotation.y=o.y*u+m,a.rotation.z=o.z*u+h,a.position.x=r.position[0]*u+c(u,me(d,i.position[0])),a.position.y=r.position[1]*u+c(u,me(d,i.position[1])),a.position.z=r.position[2]*u+c(u,me(d,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject,s=xi(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";Br.noiseSeed(i.seed);let c=_f((0,bn.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},a=new gt(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let p=0;p<o.count[0];p++)for(let d=0;d<o.count[1];d++)for(let f=0;f<o.count[2];f++){let m=[(p+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=l?Br.noise(...m):c(...m),g=this.children[r++];g.scale.x=1+s(r,me(h,i.scale[0]))||ct,g.scale.y=1+s(r,me(h,i.scale[1]))||ct,g.scale.z=1+s(r,me(h,i.scale[2]))||ct;let b=s(r,me(h,i.rotation[0])),x=s(r,me(h,i.rotation[1])),S=s(r,me(h,i.rotation[2]));g.rotation.set(b,x,S),g.position.x=o.size[0]*p-a.x+s(r,me(h,i.position[0])),g.position.y=o.size[1]*d-a.y+s(r,me(h,i.position[1])),g.position.z=o.size[2]*f-a.z+s(r,me(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let a=0;a<o.count[1];a++)for(let p=0;p<o.count[2];p++){let d=[(u+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement],f=l?Br.noise(...d):c(...d),m=this.children[r++];m.scale.x=1+s(r,me(f,i.scale[0]))||ct,m.scale.y=1+s(r,me(f,i.scale[1]))||ct,m.scale.z=1+s(r,me(f,i.scale[2]))||ct;let h=s(r,me(f,i.rotation[0])),g=s(r,me(f,i.rotation[1])),b=s(r,me(f,i.rotation[2]));m.rotation.set(h,g,b),m.position.x=o.size[0]*u+s(r,me(f,i.position[0])),m.position.y=-o.size[1]*a+s(r,me(f,i.position[1])),m.position.z=-o.size[2]*p+s(r,me(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Hl(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject,s=i.noiseType==="perlin";Br.noiseSeed(i.seed);let l=pa((0,bn.default)(i.seed)),c=xi(i.strength,this.parameters.randomness);if(!r.object){for(let[,b]of this.children.entries())b.position.set(0,0,0),b.scale.setScalar(1),b.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;let u=this.getSubdivData(),a=[],p=b=>{let x=b.length,S=b.map(N=>N[0]).reduce((N,_)=>N+_,0),w=b.map(N=>N[1]).reduce((N,_)=>N+_,0),v=b.map(N=>N[2]).reduce((N,_)=>N+_,0);return[S/x,w/x,v/x]},d=b=>Math.round(b*1e6)/1e6;u.forEach(b=>{let x=u.filter(S=>d(b.pos[0])===d(S.pos[0])&&d(b.pos[1])===d(S.pos[1])&&d(b.pos[2])===d(S.pos[2]));x.length>1?a.push({pos:b.pos,norm:p(x.map(S=>S.norm))}):a.push(b)});let f=Rf(a);if(u.length>0){let b=Math.round(f.length*r.count/100);this._updateCount(b)}this.objectForSample.updateMatrixWorld();let m=new da(this.objectForSample).build(),h=Df[r.axis],g=this.objectForSample.children.filter(b=>b instanceof ur&&b.uuidOrigin===this.object.uuid);m.setRandomGenerator((0,bn.default)(this.object.uuid+r.seed));for(let[b,x]of g.entries()){let S=b*(i.freqScale/10)+i.movement,w=s?Br.noise(S):l(S,S),v=c(b,me(w,i.rotation[0])),N=c(b,me(w,i.rotation[1])),_=c(b,me(w,i.rotation[2]));r.spreadType==="random"?m.sample(bi,Wl):(f.length&&(bi.fromArray(f[b].pos),Wl.fromArray(f[b].norm)),this.objectForSample.objectType==="SubdivObject"&&bi.applyMatrix4(L1.copy(this.objectForSample.matrixWorld).invert())),bi.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(bi),ro.fromArray(h);let y=r.align==="normal"?Wl:this.object.getWorldDirection(D1),I=To.fromArray(r.position);To.x+=To.x+c(b,me(w,i.position[0])),To.y+=To.y+c(b,me(w,i.position[1])),To.z+=To.z+c(b,me(w,i.position[2]));let A=Math.acos(y.dot(ro)),P=B1.crossVectors(ro,y).normalize(),T=E1.makeRotationAxis(P,A),C=y.clone().cross(this.object.up).normalize(),L=C.clone().cross(y).normalize(),j=new vi().makeBasis(C,y,L),Y=new gt(ro.y,ro.z,ro.x).normalize(),te=Y.clone().cross(ro).normalize(),ie=new vi().makeBasis(Y,ro,te).invert(),U=new vi().multiplyMatrices(j,ie);x.rotation.setFromRotationMatrix(U),I.applyMatrix4(T),x.position.add(I),x.rotation.x=x.rotation.x+o.x+v,x.rotation.y=x.rotation.y+o.y+N,x.rotation.z=x.rotation.z+o.z+_,x.scale.setScalar(1),x.scale.x=x.scale.x+r.scale[0]+c(b,me(w,i.scale[0]))||ct,x.scale.y=x.scale.y+r.scale[1]+c(b,me(w,i.scale[1]))||ct,x.scale.z=x.scale.z+r.scale[2]+c(b,me(w,i.scale[2]))||ct,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}setObjectForSample(e){this.objectForSample=e}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample.objectType==="SubdivObject"){let r=this.objectForSample,o=Gf[e],i=qf[o],s=Hf[o],l=Wf[o],c=[],u=i(r.subdivPointer);for(let a=0;a<=u-1;a++){let p=s(r.subdivPointer,a),d=l(r.subdivPointer,a);Uf.fromArray(p).applyMatrix4(r.matrixWorld),kf.fromArray(d),c.push({pos:Uf.toArray(),norm:kf.toArray()})}return c}else return(this.objectForSample.geometry.index?Vf(this.objectForSample.geometry):Ff(this.objectForSample.geometry)).map((o,i)=>e==="polygon_center"?{pos:o.midpoint,norm:o.norm}:e==="vertex"?[{pos:o.vertices[0],norm:o.norm},{pos:o.vertices[1],norm:o.norm},{pos:o.vertices[2],norm:o.norm}]:e==="edge"?[{pos:o.faceCenters[0],norm:o.norm},{pos:o.faceCenters[1],norm:o.norm},{pos:o.faceCenters[2],norm:o.norm}]:[]).flat()}removeSampleObjectClones(){if(this.objectForSample)for(var e=this.objectForSample.children.length-1;e>=0;e--){let r=this.objectForSample.children[e];r instanceof ur&&r.uuidOrigin===this.object.uuid&&this.objectForSample.remove(r)}}fromClonerState(e){if(!e)return this;e.hideBase!==void 0&&this.setHideBase(e.hideBase);let r=e.hasOwnProperty("type");return e.toObject?.hasOwnProperty("object")&&!!this.parameters.toObject.object&&!e.toObject.object&&(this.removeSampleObjectClones(),this.setObjectForSample(void 0)),this.parameters.type==="toObject"&&(r?e.type!=="toObject":!1)&&(this.removeSampleObjectClones(),this.setObjectForSample(void 0)),bo(this.parameters,e),this.update(),this}};import{HemisphereLight as tA,Scene as rA,Vector3 as oA,Fog as nA,Box3 as iA}from"three";import{Camera as bT,OrthographicCamera as vT,PerspectiveCamera as ST,Vector3 as Kt,Object3D as Oh,Quaternion as wT}from"three";import{BoxGeometry as G1}from"three";var dr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new G1(30,30,30),t};import{Camera as j1,LineSegments as U1,BufferGeometry as k1,LineBasicMaterial as H1,Color as $l,Vector3 as W1,Float32BufferAttribute as Yf}from"three";import{Ray as R1,Sphere as V1,Matrix4 as F1,Vector3 as Gr}from"three";var xa=new R1,ql=new V1,$f=new F1,fr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),ql.copy(i.boundingSphere),ql.applyMatrix4(s),e.ray.intersectsSphere(ql)===!1||($f.copy(s).invert(),xa.copy(e.ray).applyMatrix4($f),i.boundingBox!==null&&xa.intersectsBox(i.boundingBox)===!1))return;let l,c,u,a,p=i.index,d=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let b=Math.max(0,f.start),x=Math.min(p.count,f.start+f.count);for(m=b,h=x;m<h;m+=3)if(c=p.getX(m),u=p.getX(m+1),a=p.getX(m+2),l=g(n,e,xa,d,c,u,a),l){l.faceIndex=Math.floor(m/3),r.push(l);return}}else{let x=i.attributes.position,S=new Gr,w=new Gr,v=new Gr,N=new Gr,_=2,I=1/((n.scale.x+n.scale.y+n.scale.z)/3),A=I*I,P=Math.max(0,f.start),T=Math.min(x.count,f.start+f.count);for(let C=P,L=T-1;C<L;C+=_){if(S.fromBufferAttribute(x,C),w.fromBufferAttribute(x,C+1),xa.distanceSqToSegment(S,w,N,v)>A)continue;N.applyMatrix4(n.matrixWorld);let Y=e.ray.origin.distanceTo(N);Y<e.near||Y>e.far||r.push({distance:Y,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function g(b,x,S,w,v,N,_){let y=new Gr,I=new Gr,A=new Gr,P=new Gr,T=new Gr;if(y.fromBufferAttribute(w,v),I.fromBufferAttribute(w,N),A.fromBufferAttribute(w,_),S.intersectTriangle(y,I,A,!1,P)===null)return null;T.copy(P),T.applyMatrix4(b.matrixWorld);let L=x.ray.origin.distanceTo(T);return L<x.near||L>x.far?null:{faceIndex:1,distance:L,point:T.clone(),object:b}}};var ba=new W1,Gt=new j1,Yl=class extends U1{constructor(e){let r=new k1,o=new H1({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new $l(15711266),u=new $l(15711266),a=new $l(2857471);p("n1","n2",c),p("n2","n4",c),p("n4","n3",c),p("n3","n1",c),p("f1","f2",c),p("f2","f4",c),p("f4","f3",c),p("f3","f1",c),p("n1","f1",c),p("n2","f2",c),p("n3","f3",c),p("n4","f4",c),p("p","n1",u),p("p","n2",u),p("p","n3",u),p("p","n4",u),p("u1","u2",a),p("u2","u3",a),p("u3","u1",a);function p(f,m,h){d(f,h),d(m,h)}function d(f,m){i.push(0,0,0),s.push(m.r,m.g,m.b),l[f]===void 0&&(l[f]=[]),l[f].push(i.length/3-1)}r.setAttribute("position",new Yf(i,3)),r.setAttribute("color",new Yf(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;Gt.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;kt("n1",r,e,Gt,-i,-s,l),kt("n2",r,e,Gt,i,-s,l),kt("n3",r,e,Gt,-i,s,l),kt("n4",r,e,Gt,i,s,l);let c=l;kt("f1",r,e,Gt,-i,-s,c),kt("f2",r,e,Gt,i,-s,c),kt("f3",r,e,Gt,-i,s,c),kt("f4",r,e,Gt,i,s,c);let u=c,a=.5;kt("u1",r,e,Gt,i*.7*a,s*1.1,u),kt("u2",r,e,Gt,-i*.7*a,s*1.1,u),kt("u3",r,e,Gt,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function kt(n,t,e,r,o,i,s){ba.set(o,i,s).unproject(r);let l=t[n];if(l!==void 0){let c=e.getAttribute("position");for(let u=0,a=l.length;u<a;u++)c.setXYZ(l[u],ba.x,ba.y,ba.z)}}var va=class extends dr(Yl){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){fr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as q1}from"three";var vn=class extends dr(q1){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,vn.geometryHelper,e,r)}};import{AxesHelper as $1}from"three";var Sn=class extends dr($1){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){fr(this.object,Sn.geometryHelper,e,r)}update(){}};import{PointLightHelper as Y1}from"three";var wn=class extends dr(Y1){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,wn.geometryHelper,e,r)}};import{SpotLightHelper as X1,Vector3 as K1}from"three";var Sa=class extends dr(X1){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){fr(this.object,Sa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Sa._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)}}},Si=Sa;Si._vector=new K1;import{CubicBezierCurve as wa,EllipseCurve as Z1,LineCurve as _a,LineCurve3 as Q1,MathUtils as J1,QuadraticBezierCurve as Kl,SplineCurve as ew,Vector2 as nt,Vector3 as Zf}from"three";var wi=1e-12,_n=class{constructor(t){this.position=new nt;this.startPosition=new nt;this.uuid=J1.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 _n(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Tn=class extends _n{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Tn(this.parent).copy(this)}},Ht=class extends _n{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Tn(this),new Tn(this))}static create(e,r){let o=new Ht(e,new nt(...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 Ht(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 nt,r=new nt){let[o,i]=this.computeTangents();return o&&i&&(Xf(o,e),Xf(i,r)),[e,r]}computeTangent(e=new nt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new nt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Xf(n,t=new nt){let e=n.length();return t.set(-n.y/e,n.x/e)}var Zl=n=>n,An=new nt,Ta=new nt,tw=new nt,rw=new nt,ow=new nt,nw=new nt,Qf=new Zf,Jf=new Zf;function em(n){let t=new nt;t.addVectors(n.v0,An.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new nt;return e.addVectors(n.v2,Ta.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new wa(n.v0,t,e,n.v2)}function _i(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function iw(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function sw(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Ql(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 tm(n,t,e){return Kf(n,t)&&Kf(t,e)&&Xl(n.position,t.position,e.position)}function Xl(n,t,e){return An.copy(t).sub(n).cross(Ta.copy(e).sub(n))===0}function rm(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,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(l+c,s+u),o.set(l-c,s-u),[r,o]}function om(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function nm(n,t,e,r,o,i){let s=t.x-n.x,l=t.y-n.y,c=e.x-n.x,u=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+u)*(l+u)),p;return Ql(t,n,e)>Math.PI&&(a*=-1),_i(u,l)?p=(l+u)*(r/a-.5)*8/3/(s-c):p=(s+c)*(r/a-.5)*8/3/(u-l),o.set(t.x-p*l,t.y+p*s),i.set(e.x+p*u,e.y-p*c),[o,i]}function Jl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Kf(n,t){return Xl(n.position,n.controls[1].position,t.position)&&Xl(n.position,t.controls[0].position,t.position)}function im(n,t,e,r,o=.5){let i=An.subVectors(t,n).multiplyScalar(o).add(n),s=Ta.subVectors(e,t).multiplyScalar(o).add(t),l=tw.subVectors(r,e).multiplyScalar(o).add(e),c=i,u=rw.subVectors(s,i).multiplyScalar(o).add(i),a=ow.subVectors(l,s).multiplyScalar(o).add(s),p=l,d=nw.subVectors(a,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,d.x,d.y,a.x,a.y,p.x,p.y,r.x,r.y]}function sm(n,t,e=12,r=!0){let o=Jf.set(0,0,0),i,s=0,l=[];for(let c=0;c<t.length;c++){let u=Zl(t[c]),a=An,p=oo(u,e);l.push(p);for(let d=0;d<=p;d++)if(u instanceof wa||u instanceof Kl||u instanceof _a){if(u.getPoint(d/p,a),o.set(a.x,a.y,0),i!==void 0&&sw(i,o))continue;i===void 0&&(i=Qf),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 am(n,t,e,r=12,o=!0){let i=Jf.set(0,0,0),s=0,l=[];for(let c=0;c<t.length;c++){if(e[c]===!1)continue;let u,a=Zl(t[c]),p=An,d=oo(a,r);l.push(d);for(let f=0;f<=d;f++)if(a instanceof wa||a instanceof Kl||a instanceof _a){if(a.getPoint(f/d,p),i.set(p.x,p.y,0),u?.equals(i))continue;u===void 0?u=Qf:(n.setXYZ(s,u.x,u.y,u.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),u.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 ec(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=oo(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=oo(s.curveAfter,t)),r.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=oo(n[0].roundedCurveCorner,t)*.5),r}function oo(n,t=12){return n&&n instanceof Z1?t*2:n&&(n instanceof _a||n instanceof Q1)?1:n&&n instanceof ew?t*n.points.length:t}function lm(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let l=Zl(t[s]),c=oo(l,e),u=An;for(let a=0;a<=c;a++)if(l instanceof wa||l instanceof Kl||l instanceof _a){if(l.getPoint(a/c,u),o!==void 0&&iw(o,u,wi))continue;o===void 0&&(o=Ta),o.copy(u),n.push(u.x,u.y),i++}}return _i(n[0],n[n.length-2],wi)&&_i(n[1],n[n.length-1],wi)&&(n.pop(),n.pop()),r&&i>1&&!(_i(n[i-1],n[1],wi)&&_i(n[i-2],n[0],wi))&&(n.push(n[0],n[1]),i++),n}import{EventDispatcher as gT,Matrix3 as yT,Vector3 as ru}from"three";import{EventDispatcher as aw,Plane as lw,Shape as cm,Vector2 as Rr,Vector3 as cw,MathUtils as tc,LineCurve as rc,QuadraticBezierCurve as um,CubicBezierCurve as Aa}from"three";var oc=new Rr,uw=new Rr,pw=new Rr,dw=new Rr,fw=new Rr,mw=new Rr,ve=class extends cm{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new aw;this.plane=new lw(new cw(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=tc.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new ve;return i.isClosed=e.isClosed,i.points=e.points.map(s=>Ht.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>ve.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],u=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=u;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){let r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=e-r;if(l<=s.points.length-1)return s.points[l];r+=s.points.length}}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=oc.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=tc.generateUUID()){let i;e instanceof Rr?i=e:i=new Rr(e,r);let s=new Ht(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 sm(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=ec(this.points,e,!1),this.roundedCurveDivisions=ec(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return am(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),lm(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=oo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;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(Jl(i,s)){let p=i.position.distanceTo(s.position);return i.position.distanceTo(oc.set(o.x,o.y))/p}let u=0;for(let p=0;p<e;p++)u+=l[p];return(r-u)/c}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){Jl(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],u=this.points[i+1]??this.points[0],a=l.roundness,p=c&&u&&tm(c,l,u);if(!l.controlsMoved()&&a>0&&!p){let d=l.curveBefore,f=l.curveAfter;if(d===void 0||f===void 0)continue;let m=l.roundedCurveBefore,h=l.roundedCurveAfter,g=d.getLength(),b=f.getLength(),x=Math.min(a,g*.499),S=Math.min(a,b*.499),w=Math.min(x,S),v=1-w/g,N=w/b,_=d.getPointAt(v,oc),y=f.getPointAt(N,uw);this._subSplitCurve(d,m,v,_,void 0),this._subSplitCurve(f,h,N,void 0,y);let I;if(this.useCubicForRoundedCorners){let A=Ql(_,l.position,y)/2,P=Math.tan(A)*_.distanceTo(l.position),[T,C]=rm(_,y,P,pw,dw),L=om(T,C,l.position),[j,Y]=nm(L,_,y,P,fw,mw);I=new Aa(_.clone(),j.clone(),Y.clone(),y.clone())}else I=new um(_.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 rc)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let l=e,c=r,u=l.getUtoTmapping(o,0),a=im(l.v0,l.v1,l.v2,l.v3,u);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 ve(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],u=e.points[i+3],a=e.points[i+4],p=e.points[i+5],d=e.points[i+6],f=new Ht(tc.generateUUID(),new Rr(s,l));f.controls[0].position.set(c,u),f.controls[1].position.set(a,p),f.roundness=d,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new ve;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof Aa&&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 um&&(i[l]=em(i[l]));for(l=0,c=i.length;l<c;l++){let p=i[l],d=l>0?i[l-1]:null,f;p instanceof Aa?(f=this.createPoint(p.v0),f.controls[1].position.copy(p.v1)):p instanceof rc&&(f=this.createPoint(p.v1)),f!==void 0&&(d!==null&&r(f,d),s.push(f))}let u=i[i.length-1],a=!1;return u instanceof Aa?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof rc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof cm&&(this.shapeHoles=e.holes.map(i=>{let s=new ve;return s.fromShape(i),s})),this.update(),this}};import{BufferAttribute as Ia,BufferGeometry as bw}from"three";var Oe;(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"})(Oe||(Oe={}));var Ue;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ue||(Ue={}));function ce(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){ce(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){ce(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){ce(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){ce(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}(),Ti=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}(),Na=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}(),Nn=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}(),pm=function(){function n(){var t=new Nn,e=new Ti,r=new Na(0),o=new Na(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 Na(0),r=new Na(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;ce(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;ce(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 Nn,e=new Nn,r=new Ti,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 Nn;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new Ti;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 Ti;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 Nn;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 Ti;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,u;for(i=t,i=t;(o=i.next)!==t;i=o){ce(o.prev===i),c=o.anEdge;do ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c),ce(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ce(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ce(s.prev===l),c=s.anEdge;do ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c),ce(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ce(s.prev===l&&s.anEdge===null),u=r,u=r;(c=u.next)!==r;u=c)ce(c.Sym.next===u.Sym),ce(c.Sym!==c),ce(c.Sym.Sym===c),ce(c.Org!==null),ce(c.Dst!==null),ce(c.Lnext.Onext.Sym===c),ce(c.Onext.Sym.Lnext===c);ce(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),dm=function(){function n(){this.handle=null}return n}(),fm=function(){function n(){this.key=null,this.node=0}return n}(),hw=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 dm,this.handles[r]=new fm;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,ce(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 dm;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new fm}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;ce(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}(),nc=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}(),mm=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),gw=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new mm,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 mm;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}(),yw=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&&ce(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ce(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 nc;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 Oe.ODD:return(e&1)!==0;case Oe.NONZERO:return e!==0;case Oe.POSITIVE:return e>0;case Oe.NEGATIVE:return e<0;case Oe.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,u,a,p=!0;u=r;do ce(ae.vertLeq(u.Org,u.Dst)),n.addRegionBelow(t,e,u.Sym),u=u.Onext;while(u!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),u=l.eUp.Sym,u.Org===a.Org;)u.Onext!==a&&(t.mesh.splice(u.Oprev,u),t.mesh.splice(a.Oprev,u)),l.windingNumber=c.windingNumber-u.winding,l.inside=n.isWindingInside(t,l.windingNumber),c.dirty=!0,!p&&n.checkForRightSplice(t,c)&&(n.addWinding(u,a),n.deleteRegion(t,c),t.mesh.delete(a)),p=!1,c=l,a=u;c.dirty=!0,ce(c.windingNumber-u.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(ce(!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,u=i.Dst,a,p,d=new Nn,f,m;if(ce(!ae.vertEq(u,c)),ce(ae.edgeSign(c,t.event,s)<=0),ce(ae.edgeSign(u,t.event,l)>=0),ce(s!==t.event&&l!==t.event),ce(!e.fixUpperEdge&&!r.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),p=Math.max(l.t,u.t),a>p))return!1;if(ae.vertLeq(s,l)){if(ae.edgeSign(u,s,l)>0)return!1}else if(ae.edgeSign(c,l,s)<0)return!1;return n.debugEvent(t),ae.intersect(c,s,u,l,d),ce(Math.min(s.t,c.t)<=d.t),ce(d.t<=Math.max(l.t,u.t)),ce(Math.min(u.s,c.s)<=d.s),ce(d.s<=Math.max(l.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),f=ae.vertLeq(s,l)?s:l,ae.vertLeq(f,d)&&(d.s=f.s,d.t=f.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(u,t.event)&&ae.edgeSign(u,t.event,d)<=0?u===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):c===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,m,!0),!0):(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(u,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,u),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,u=!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),u=!0),ae.vertEq(c.Org,t.event)&&(t.mesh.splice(r,c.Oprev),r=n.finishLeftRegions(t,s,null),u=!0),u){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)){ce(!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}ce(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ce(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,u=new nc;if(u.eUp=e.anEdge.Sym,r=t.dict.search(u).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);ce(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 nc,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 gw(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||(ce(e.fixUpperEdge),ce(++r===1)),ce(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 hw(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,ce(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}(),xw=function(){function n(){this.mesh=new pm,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=Oe.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],u=[0,0,0],a=[0,0,0],p=[0,0,0],d=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var g=0;g<3;++g)i=e.coords[g],u[g]=i,m[g]=e,c[g]=i,f[g]=e;for(e=h.next;e!==h;e=e.next)for(var b=0;b<3;++b)i=e.coords[b],i<u[b]&&(u[b]=i,m[b]=e),i>c[b]&&(c[b]=i,f[b]=e);var x=0;if(c[1]-u[1]>c[0]-u[0]&&(x=1),c[2]-u[2]>c[x]-u[x]&&(x=2),u[x]>=c[x]){t[0]=0,t[1]=0,t[2]=1;return}for(l=0,r=m[x],o=f[x],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)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=a[1]*p[2]-a[2]*p[1],d[1]=a[2]*p[0]-a[0]*p[2],d[2]=a[0]*p[1]-a[1]*p[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,u=t.next;u!==t;u=u.next)c?(this.bmin[0]=this.bmax[0]=u.s,this.bmin[1]=this.bmax[1]=u.t,c=!1):(u.s<this.bmin[0]&&(this.bmin[0]=u.s),u.s>this.bmax[0]&&(this.bmax[0]=u.s),u.t<this.bmin[1]&&(this.bmin[1]=u.t),u.t>this.bmax[1]&&(this.bmax[1]=u.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 u=t.vHead.next;u!==t.vHead;u=u.next)u.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 u=i.Org;u.n===-1&&(u.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===Ue.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 u=t.vHead.next;u!==t.vHead;u=u.next)if(u.n!==-1){var p=u.n*o;this.vertices[p+0]=u.coords[0],this.vertices[p+1]=u.coords[1],o>2&&(this.vertices[p+2]=u.coords[2]),this.vertexIndices[u.n]=u.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 u=i.Org;this.elements[d++]=u.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<r;++f)this.elements[d++]=-1;if(e===Ue.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<r;++m)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=t.fHead.next;l!==t.fHead;l=l.next)if(!!l.inside){o=r=l.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var c=0,u=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[u++]=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 pm),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=Oe.ODD),e===void 0&&(e=Ue.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_(),yw.computeInterior(this,s);var l=this.mesh;return e===Ue.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===Ue.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,r,o),!0},n}();function Ao(n){var t=n.windingRule,e=t===void 0?Oe.ODD:t,r=n.elementType,o=r===void 0?Ue.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,u=n.normal,a=u===void 0?[0,0,1]:u,p=n.contours,d=p===void 0?[]:p,f=n.strict,m=f===void 0?!0:f,h=n.debug,g=h===void 0?!1:h;if(!d&&m)throw new Error("Contours can't be empty");if(!!d){var b=new xw;n.edgeCreateCallback&&(b.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(b.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<d.length;x++)b.addContour(c||2,d[x]);return b.tesselate(e,o,s,c,a,m),{vertices:b.vertices,vertexIndices:b.vertexIndices,vertexCount:b.vertexCount,elements:b.elements,elementCount:b.elementCount,mesh:g?b.mesh:void 0}}}var xR=Oe.ODD,bR=Oe.NONZERO,vR=Oe.POSITIVE,SR=Oe.NEGATIVE,wR=Oe.ABS_GEQ_TWO,_R=Ue.POLYGONS,TR=Ue.CONNECTED_POLYGONS,AR=Ue.BOUNDARY_CONTOURS;var In=class extends bw{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Oe.ODD;this.elementType=Ue.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Oe.ODD,elementType:Ue.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),l,c=!0,u=!0,a,p;for(let m=0,h=i.length/2;m<h;m++){let g=m*2,b=i[g+0],x=i[g+1];if(a!==void 0&&b!==a&&(c=!1),p!==void 0&&x!==p&&(u=!1),a=b,p=x,!c&&!u)break}!c&&!u&&(l=Ao({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new Ia(new Float32Array(d*3),3),this._normalAttribute=new Ia(new Float32Array(d*3),3),this._uvAttribute=new Ia(new Float32Array(d*2),2),this._indexAttribute=new Ia(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,g=1/0,b=-1/0;for(let w=0,v=d;w<v;w++){let N=w*2,_=l.vertices[N+0],y=l.vertices[N+1];_<m&&(m=_),_>h&&(h=_),y<g&&(g=y),y>b&&(b=y)}let x=h-m,S=b-g;for(let w=0,v=d;w<v;w++){let N=w*2,_=l.vertices[N+0],y=l.vertices[N+1],I=(_-m)/x,A=(y-g)/S;this._positionAttribute.setXYZ(w,_,y,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,I,A)}for(let w=0,v=f;w<v;w++){let N=w*3,_=l.elements[N+0],y=l.elements[N+1],I=l.elements[N+2];this._indexAttribute.setX(N+0,_),this._indexAttribute.setX(N+1,y),this._indexAttribute.setX(N+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 In(this._shape,this._curveSegments);return e.userData=ui(this.userData),e}};import{BufferAttribute as Oa,BufferGeometry as vw}from"three";var Pa=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*Pa.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*Pa.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 u=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)),u.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=u,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)}},Ai=Pa;Ai.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var ic=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Pn=class extends vw{constructor(e,r,o=0,i=12,s=3,l=Oe.ODD){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 c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(y=>{let I=y.extractShapePointsToFlatArray([],i),A=[];for(let P=I.length-1;P>=1;P-=2){let T=I[P-1],C=I[P-0];A.push(T,C)}return A}),a=Ao({windingRule:l,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]}),p=Ao({windingRule:Oe.ODD,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]});if(!a)throw new Error("error generating geometry");let d=a.elementCount;if(p){a.elementCount+=p.elementCount;for(let y=0;y<p.elements.length;y++){let I=p.elements[y],A=y%2===0?a.vertexCount:0;a.elements.push(I+A)}for(let y=0;y<p.vertexIndices.length;y++){let I=p.vertexIndices[y],A=a.vertexCount;a.vertexIndices.push(I+A)}for(let y=0;y<p.vertices.length;y++){let I=p.vertices[y];a.vertices.push(I)}}let f=1/0,m=-1/0,h=1/0,g=-1/0;for(let y=0,I=a.vertexCount;y<I;y++){let A=y*2,P=a.vertices[A+0],T=a.vertices[A+1];P<f&&(f=P),P>m&&(m=P),T<h&&(h=T),T>g&&(g=T)}this._minX=f,this._minY=h,this._width=m-f,this._height=g-h;let b=a.vertexCount*2*(2+this._bevelSegments);this._buffer=new Ai(b);let x=[],S=[];for(let y=a.elementCount-1;y>=0;y--){let I=y>=d,A=y*2,P=a.elements[A+0],T=a.elements[A+1],C=P+T,L={start:P,count:T,normals:[],continuous:[],concave:[]},j=P,Y=C-1,te=P+1,ie=this._shape.roundedCurves.length;do{let F=j-P,E=a.vertices[Y*2+0],D=a.vertices[Y*2+1],B=a.vertices[j*2+0],k=a.vertices[j*2+1],$=a.vertices[te*2+0],H=a.vertices[te*2+1],V=B-E,G=k-D,z=Math.sqrt(V*V+G*G);V/=z,G/=z;let J=B-$,oe=k-H,se=Math.sqrt(J*J+oe*oe);J/=se,oe/=se,L.normals[F*2+0]=-oe,L.normals[F*2+1]=J,L.concave[F]=V*oe-G*J>0;let re=a.vertexIndices[j];if(Array.isArray(re))L.continuous[F]=!1;else{let[ee,Q]=this._shape.getCurveIndexFromVertexId(re-1,!0);if(Q>0&&Q<1)L.continuous[F]=!0;else{let K=Q===1?ee+1:ee-1;K=(K+ie)%ie;let fe=Q===1?0:1,pe=this._shape.roundedCurves[ee].getTangent(Q),ye=this._shape.roundedCurves[K].getTangent(fe);L.continuous[F]=pe.dot(ye)>.95}}I&&(L.normals[F*2+0]*=-1,L.normals[F*2+1]*=-1),[Y,j,te]=[j,te,te+1],te>=C&&(te-=T)}while(te!==P+1);let U=[];U.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,C*2),vertexCount:T,vertexIndices:new Array(T).fill(!0).map((F,E)=>[E,E]),elements:[0,T],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,C*2)});for(let F=1;F<=this._bevelSegments;F++){let E=F/this._bevelSegments*Math.PI/2,D=(1-Math.cos(E))*this._bevelSize,B=[],k=[],$=[],H=[],V=0;for(let z=0;z<T;z++){let J=z*2,oe=(z-1+T)%T*2,se=a.vertices[L.start*2+J+0],re=a.vertices[L.start*2+J+1],ee=-L.normals[oe+0]*D,Q=-L.normals[oe+1]*D,K=-L.normals[J+0]*D,fe=-L.normals[J+1]*D;if(L.concave[z]||!L.concave[z]&&I){let pe=Math.atan2(Q,ee),ye=Math.atan2(fe,K);ye>pe&&(ye-=Math.PI*2);let $e=ye-pe;if(L.continuous[z]||I){let _e=pe+$e/2,Ae=Math.cos(_e)*D,Pe=Math.sin(_e)*D;B[2*V+0]=se+Ae*(I?-1:1),B[2*V+1]=re+Pe*(I?-1:1),H[V]=z,V++}else{let _e=Math.max(1,Math.floor(i/4*Math.abs($e)/Math.PI));for(let Ae=0;Ae<=_e;Ae++){let Pe=pe+$e*(Ae/_e),It=Math.cos(Pe)*D,Ur=Math.sin(Pe)*D;B[2*V+0]=se+It,B[2*V+1]=re+Ur,H[V]=z,V++}}}else B[2*V+0]=se+ee,B[2*V+1]=re+Q,H[V]=z,k[z]=V,V++,B[2*V+0]=se,B[2*V+1]=re,H[V]=z,V++,B[2*V+0]=se+K,B[2*V+1]=re+fe,H[V]=z,$[z]=V,V++}let G=Ao({windingRule:Oe.POSITIVE,elementType:Ue.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[B],edgeCreateCallback:z=>{let oe=z.Org.idx,se=H[oe],re=H[(oe+1)%H.length];z.idx=[se,re],z.Sym.idx=[re,se]},vertexIdCallback:z=>{let J=z.Lprev.idx;return[J?J[1]:0,z.idx[0]]}});if(!G)throw console.log("Error"),new Error(`error generating bevel geometry for ${F}'th loop`);if(!G.vertexCount)break;for(let z=0;z<G.vertexIndices.length;z++){let[J,oe]=G.vertexIndices[z];if(J===oe)continue;let se=oe;oe<J&&(se+=T);for(let re=J;re<se;re++){let ee=re%T,Q=(re+1)%T;if(!L.continuous[ee]||!L.continuous[Q]){G.vertexIndices[z]=[J,ee],G.vertexIndices.splice(z+1,0,[Q,oe]),G.vertices.splice((z+1)*2,0,G.vertices[z*2],G.vertices[z*2+1]);break}}}U.push({bevelI:F,angle:E,size:D,boundary:G,reverseMap:H,insetPoints:B})}let W=(F,E,D)=>{let B=0,k=F.boundary.vertexIndices.length;for(;B<k&&D(F.boundary.vertexIndices[E]);)E=(E+1)%k,B++;return B},q=x.length;for(let F=1;F<U.length;F++){let E=U[F-1],D=U[F],B=E.boundary.vertexIndices.length,k=D.boundary.vertexIndices.length;if(!B||!k)break;let $=L.concave.length,H=0,V=ic(H,T);for(;!E.boundary.vertexIndices.filter(V).length||!D.boundary.vertexIndices.filter(V).length;)H++,V=ic(H,T);let G=E.boundary.vertexIndices.findIndex(V),z=D.boundary.vertexIndices.findIndex(V);do G=(G+1)%B;while(V(E.boundary.vertexIndices[G]));do z=(z+1)%k;while(V(D.boundary.vertexIndices[z]));H=(H+1)%T;let J=H,oe=this.buildBevelVert(L,E,(G-1+B)%B),se=this.buildBevelVert(L,D,(z-1+k)%k),re=oe,ee=se,Q,K,fe=!1;do{V=ic(H,T);let pe=W(E,G,V),ye=W(D,z,V),$e=fe;if(fe=!1,pe&&!ye){for(let _e=0;_e<pe;_e++)Q=this.buildBevelVert(L,E,(G+_e)%B,_e/(pe-1)),x.push(re.topN,Q.topP,ee.topN),x.push(Q.bottomP,re.bottomN,ee.bottomN),re=Q;fe=!0}else if(!pe&&ye)for(let _e=0;_e<ye;_e++)K=this.buildBevelVert(L,D,(z+_e)%k,_e/(ye-1)),x.push(ee.topN,re.topP,K.topP),x.push(re.bottomP,ee.bottomN,K.bottomP),ee=K;else if(pe&&ye)if(Q=this.buildBevelVert(L,E,G,0),K=this.buildBevelVert(L,D,z,0),$e?(x.push(re.topN,K.topP,ee.topN),x.push(re.topN,Q.topP,K.topP),x.push(K.bottomP,re.bottomN,ee.bottomN),x.push(K.bottomP,Q.bottomP,re.bottomN)):(x.push(ee.topN,re.topN,Q.topP),x.push(ee.topN,Q.topP,K.topP),x.push(Q.bottomP,re.bottomN,ee.bottomN),x.push(Q.bottomP,ee.bottomN,K.bottomP)),re=Q,ee=K,pe===ye)for(let _e=1;_e<pe;_e++)Q=this.buildBevelVert(L,E,(G+_e)%B,_e/(pe-1)),K=this.buildBevelVert(L,D,(z+_e)%k,_e/(ye-1)),x.push(re.topN,Q.topP,ee.topN),x.push(ee.topN,Q.topP,K.topP),x.push(Q.bottomP,re.bottomN,ee.bottomN),x.push(Q.bottomP,ee.bottomN,K.bottomP),re=Q,ee=K;else if(pe>ye){let _e=pe/ye,Ae=0;for(let Pe=1;Pe<pe;Pe++)Q=this.buildBevelVert(L,E,(G+Pe)%B,Pe/(pe-1)),x.push(re.topN,Q.topP,ee.topN),x.push(Q.bottomP,re.bottomN,ee.bottomN),re=Q,Pe>(Ae+1)*_e&&(Ae++,K=this.buildBevelVert(L,D,(z+Ae)%k,Ae/(ye-1)),x.push(ee.topN,Q.topP,K.topP),x.push(Q.bottomP,ee.bottomN,K.bottomP),ee=K)}else{let _e=ye/pe,Ae=0;for(let Pe=1;Pe<ye;Pe++)K=this.buildBevelVert(L,D,(z+Pe)%k,Pe/(ye-1)),x.push(ee.topN,Q.topP,K.topP),x.push(Q.bottomP,ee.bottomN,K.bottomP),ee=K,Pe>(Ae+1)*_e&&(Ae++,Q=this.buildBevelVert(L,E,(G+Ae)%B,Ae/(pe-1)),x.push(re.topN,Q.topP,ee.topN),x.push(Q.bottomP,re.bottomN,ee.bottomN),re=Q)}G=(G+pe)%B,z=(z+ye)%k,H=(H+1)%$}while(H!==J)}{let F=U[0];for(let E=0,D=F.boundary.vertexCount;E<D;E++){let B=this.buildBevelVert(L,F,E),k=this.buildBevelVert(L,F,(E+1)%D);x.push(k.topP,B.topN,B.bottomN),x.push(k.topP,B.bottomN,k.bottomP)}}if(I){let F=[];for(let E=x.length-1;E>=q+2;E-=3){let D=x[E-2],B=x[E-1],k=x[E-0];F.push(k,B,D)}x.splice(q,x.length-q,...F)}if(I){let F=[];for(let E=U[U.length-1].boundary.vertices.length-1;E>=1;E-=2){let D=U[U.length-1].boundary.vertices[E-1],B=U[U.length-1].boundary.vertices[E-0];F.push(D,B)}S.push(F)}if(!I){let F=U[U.length-1],E=Ao({windingRule:U.length>1?Oe.POSITIVE:Oe.ODD,elementType:Ue.POLYGONS,vertexSize:2,strict:!0,contours:[F.insetPoints,...S]});if(!E)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:x.length});for(let D=0;D<E.elementCount*3;D+=3){let B=this.buildSurfaceVert(E,E.elements[D+0]),k=this.buildSurfaceVert(E,E.elements[D+1]),$=this.buildSurfaceVert(E,E.elements[D+2]);x.push(B.top,k.top,$.top),x.push($.bottom,k.bottom,B.bottom)}}this.vertexCache={}}this._buffer.shrink();let w=new Oa(Uint32Array.from(x),1),v=new Oa(this._buffer.positions,3),N=new Oa(this._buffer.normals,3),_=new Oa(this._buffer.uvs,2);v.needsUpdate=!0,N.needsUpdate=!0,_.needsUpdate=!0,w.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",N),this.setAttribute("uv",_),this.setIndex(w)}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,u=this._buffer.get(2),a=u*3,p=u*2,d={top:u+0,bottom:u+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[p+0]=l,this._buffer.uvs[p+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[p+2]=l,this._buffer.uvs[p+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],u,a,p,d;l!==c?(a=l,u=c,d=!1,p=e.continuous[a]&&e.continuous[u]):(u=l,a=(u-1+e.count)%e.count,d=e.concave[u]&&r.bevelI>0,p=e.continuous[u]||d);let f=Math.cos(r.angle),m=Math.sin(r.angle),h=o*2,g=u*2,b=a*2,x=r.boundary.vertices[h+0],S=r.boundary.vertices[h+1],w=(1-m)*this._bevelSize,v=(x-this._minX)/this._width,N=(S-this._minY)/this._height,_=e.normals[g+0],y=e.normals[g+1],I=e.normals[b+0],A=e.normals[b+1];if(d){let j=I-_,Y=A-y;_=_+j*(1-i),y=y+Y*(1-i);let te=Math.sqrt(_*_+y*y);_/=te,y/=te}let P=this._buffer.get(p?2:4),T=P*3,C=P*2,L={i:o,fi:u,topP:P+0,topN:P+0,bottomP:P+1,bottomN:P+1};return this._buffer.positions[T+0]=x,this._buffer.positions[T+1]=S,this._buffer.positions[T+2]=this._depth-w,this._buffer.normals[T+0]=_*f,this._buffer.normals[T+1]=y*f,this._buffer.normals[T+2]=m,this._buffer.uvs[C+0]=v,this._buffer.uvs[C+1]=N,this._buffer.positions[T+3]=x,this._buffer.positions[T+4]=S,this._buffer.positions[T+5]=w,this._buffer.normals[T+3]=_*f,this._buffer.normals[T+4]=y*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[C+2]=N,this._buffer.uvs[C+3]=v,p||(P+=2,T+=6,C+=4,L.topP=P+0,L.bottomP=P+1,this._buffer.positions[T+0]=x,this._buffer.positions[T+1]=S,this._buffer.positions[T+2]=this._depth-w,this._buffer.normals[T+0]=I*f,this._buffer.normals[T+1]=A*f,this._buffer.normals[T+2]=m,this._buffer.uvs[C+0]=v,this._buffer.uvs[C+1]=N,this._buffer.positions[T+3]=x,this._buffer.positions[T+4]=S,this._buffer.positions[T+5]=w,this._buffer.normals[T+3]=I*f,this._buffer.normals[T+4]=A*f,this._buffer.normals[T+5]=-m,this._buffer.uvs[C+2]=N,this._buffer.uvs[C+3]=v),this.vertexCache[s]=L,L}clone(){let e=new Pn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ui(this.userData),e}};var et=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,windingRule:Oe.ODD},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 ve?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new ve(r,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update(!1));let c=s??new ve(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,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return t<=0?l=new In(n.shape,o,{windingRule:s}):l=new Pn(n.shape,t,e,o,r,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{Mesh as fT,Matrix4 as mT}from"three";import{ConeGeometry as _w}from"three";import{BufferGeometry as Sw,CylinderGeometry as ww,Float32BufferAttribute as sc,Vector2 as Wt,Vector3 as Ca}from"three";var gm=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:u,radiusBottom:a,cornerRadius:p,cornerSegments:d,hollow:f}=n.parameters,m;return p||f?m=new Ni(u,a,r,o,i,s,l,c*Math.PI/180,p,p,d,f):m=new ww(u,a,r,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function no(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function hm(n){return new Wt(n.y,-n.x)}var Ni=class extends Sw{constructor(t,e,r,o,i,s,l,c,u,a,p,d,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,l=l!==void 0?l:0,c=c!==void 0?c:Math.PI*2,s&&(u=0,a=0);let m=[],h=[],g=[],b=[],x=0,S=r/2,w=new Ca,v=new Ca;f&&t==0&&(t=u),f&&e==0&&(e=a);let N=new Wt(t,S),_=new Wt(e,-S),y=null,I=null,A=null,P=null,T=N.clone().sub(_),C=0,L=0,j=0;d>0&&(C=Math.min(t,e)*(1-d),L=t-C,j=e-C);let Y=N.clone();Y.x-=C;let te=Math.PI-T.angle(),ie=T.angle(),U=Math.tan(ie/2),W=Math.tan(te/2),q=U+W,F=d?q:W,E=d?q:U;if(u=Math.min(u,(t-L)/F,T.length()/q),a=Math.min(a,(e-j)/E,T.length()/q),u>0){let V=u/U;y=N.clone().sub(new Wt(V,u)),d&&(A=y.clone(),A.x-=C-q*u),N.sub(T.clone().setLength(V))}if(a>0){let V=a/W;I=_.clone().sub(new Wt(V,-a)),_.add(T.clone().setLength(V)),d&&(P=I.clone(),P.x-=C-q*a,Y.sub(T.clone().setLength(V)))}T=N.clone().sub(_);let D=T.length()<.5,B=[];for(let V=0;V<=o;V++){let G=[],z=V/o,J=z*c+l,oe=new Wt(Math.sin(J),Math.cos(J));P&&I?(k(G,z,oe,te,a,P,-1,!0),k(G,z,oe,ie,a,I,-1,!1)):I?($(G,oe,I.x,0,-1),k(G,z,oe,ie,a,I,-1,!1)):s||$(G,oe,e,j,-1);let se=hm(T).normalize();if(no(se,oe,w),!D)for(let re=0;re<=i;re++){let ee=re/i,Q=T.clone().multiplyScalar(ee).add(_);no(Q,oe,v),h.push(v.x,v.y,v.z),g.push(w.x,w.y,w.z),b.push(z,.5+v.y/r),G.push(x++)}if(A&&y?(k(G,z,oe,te,u,y,1,!1),k(G,z,oe,ie,u,A,1,!0)):y?(k(G,z,oe,te,u,y,1,!1),$(G,oe,y.x,0,1)):s||$(G,oe,t,L,1),d&&!D){let re=hm(T).multiplyScalar(-1).normalize();no(re,oe,w);for(let ee=0;ee<=i;ee++){let Q=ee/i,K=T.clone().multiplyScalar(-Q).add(Y);no(K,oe,v),h.push(v.x,v.y,v.z),g.push(w.x,w.y,w.z),b.push(z,.5+v.y/r),G.push(x++)}}d&&!s&&G.push(G[0]),B.push(G)}for(let V=0;V<B.length-1;V++)for(let G=0;G<B[0].length-1;G++){if(s&&d&&G==i)continue;let z=B[V][G],J=B[V+1][G],oe=B[V+1][G+1],se=B[V][G+1],re=h[oe*3+0],ee=h[oe*3+2];m.push(z,J,se),(re!=0||ee!=0)&&m.push(J,oe,se)}c<Math.PI*2&&(H(-1,B[0],l),H(1,B[B.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new sc(h,3)),this.setAttribute("normal",new sc(g,3)),this.setAttribute("uv",new sc(b,2));function k(V,G,z,J,oe,se,re,ee){for(let Q=0;Q<p+1;Q++){let K=Q/p,fe=re<0?K:1-K;ee&&(fe-=1),fe*=J;let pe=new Wt(Math.sin(fe),Math.cos(fe)*re),ye=pe.clone().multiplyScalar(oe).add(se);no(ye,z,v),h.push(v.x,v.y,v.z),no(pe,z,w),g.push(w.x,w.y,w.z),b.push(G,.5+v.y/r),V.push(x++)}}function $(V,G,z,J,oe){let se=new Ca,re=new Wt,ee=[z,J];oe<0&&ee.reverse();for(let Q of ee)re.set(Q,S*oe),no(re,G,se),h.push(se.x,se.y,se.z),g.push(0,oe,0),b.push(.5,.5),V.push(x++)}function H(V,G,z){let J=new Wt(Math.sin(z),Math.cos(z)),oe=new Wt(-Math.cos(z),Math.sin(z)),se=new Ca,re=V<0?(K,fe,pe)=>m.push(K,fe,pe):(K,fe,pe)=>m.push(K,pe,fe),ee=new Wt((t+e+L+j)/4,0);no(ee,J,se),h.push(se.x,se.y,se.z),g.push(oe.x,0,oe.y),b.push(.5,.5);let Q=x++;for(let K of G){let fe=h.slice(K*3,K*3+3);h.push(...fe),g.push(oe.x,0,oe.y);let pe=b.slice(K*2,K*2+2);b.push(...pe),x++}for(let K=Q+1;K<x-1;K++)re(Q,K,K+1);re(Q,x-1,Q+1)}}};var ym=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:u,cornerRadiusBottom:a,cornerSegments:p}=n.parameters,d;return u>0||a>0||c<360?d=new Ni(0,t/2,r,o,i,s,l,c*Math.PI/180,u,a,p,0,!0):d=new _w(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as Tw,BufferGeometry as Aw,Float32BufferAttribute as ac,Vector3 as Ii}from"three";var xm=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,u;return l==0?u=new Tw(t,e,r,o,i,s):u=new cc(t,e,r,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},lc=Math.PI/2,cc=class extends Aw{constructor(t=1,e=1,r=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let u=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=[],p=[],d=[],f=[],m=0,h=0;g("z","y","x",-1,-1,r,e,t,s,i,0),g("z","y","x",1,-1,r,e,-t,s,i,1),g("x","z","y",1,1,t,r,e,o,s,2),g("x","z","y",1,-1,t,r,-e,o,s,3),g("x","y","z",1,-1,t,e,r,o,i,4),g("x","y","z",-1,-1,t,e,-r,o,i,5),l>0&&(b("z","y","x",-1,-1,1,r,e,t,s,0),b("z","y","x",1,-1,-1,r,e,t,s,1),b("z","y","x",-1,1,-1,r,e,t,s,1),b("z","y","x",1,1,1,r,e,t,s,0),b("x","y","z",-1,-1,-1,t,e,r,o,0),b("x","y","z",1,-1,1,t,e,r,o,1),b("x","y","z",-1,1,1,t,e,r,o,0),b("x","y","z",1,1,-1,t,e,r,o,1),b("y","x","z",-1,-1,1,e,t,r,i,0),b("y","x","z",1,-1,-1,e,t,r,i,1),b("y","x","z",1,1,1,e,t,r,i,1),b("y","x","z",-1,1,-1,e,t,r,i,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new ac(p,3)),this.setAttribute("normal",new ac(d,3)),this.setAttribute("uv",new ac(f,2));function g(S,w,v,N,_,y,I,A,P,T,C){let L=(y-2*l)/P,j=(I-2*l)/T,Y=y/2-l,te=I/2-l,ie=A/2,U=P+1,W=T+1,q=0,F=0,E=new Ii;for(let D=0;D<W;D++){let B=D*j-te;for(let k=0;k<U;k++){let $=k*L-Y;E[S]=$*N,E[w]=B*_,E[v]=ie,p.push(E.x,E.y,E.z),E[S]=0,E[w]=0,E[v]=A>0?1:-1,d.push(E.x,E.y,E.z),f.push(k/P),f.push(1-D/T),q+=1}}for(let D=0;D<T;D++)for(let B=0;B<P;B++){let k=m+B+U*D,$=m+B+U*(D+1),H=m+(B+1)+U*(D+1),V=m+(B+1)+U*D;a.push(k,$,V),a.push($,H,V),F+=6}u.addGroup(h,F,C),h+=F,m+=q}function b(S,w,v,N,_,y,I,A,P,T,C){let L=(I-2*l)/T,j=I/2-l,Y=A/2-l,te=P/2,ie=T+1,U=0,W=0,q=new Ii,F=new Ii;for(let E=0;E<c+1;E++){let D=E/c*lc,B=Math.sin(D)*l,k=(1-Math.cos(D))*l,$=Math.sin(D),H=Math.cos(D);q[w]=(Y+B)*_,q[v]=(te-k)*y,F[S]=0,F[w]=$*Math.sign(q[w]),F[v]=H*Math.sign(q[v]);for(let V=0;V<ie;V++){let G=V*L-j;q[S]=G*N,p.push(q.x,q.y,q.z),d.push(F.x,F.y,F.z),f.push(V/T),f.push(0),U+=1}}for(let E=0;E<c;E++)for(let D=0;D<T;D++){let B=m+D+ie*E,k=m+D+ie*(E+1),$=m+(D+1)+ie*(E+1),H=m+(D+1)+ie*E;a.push(B,k,H),a.push(k,$,H),W+=6}u.addGroup(h,W,C),h+=W,m+=U}function x(S,w,v){let N=new Ii,_=new Ii(t/2,e/2,r/2);_.subScalar(l);let y=[],I=S*w*v>0?(P,T,C)=>a.push(P,T,C):(P,T,C)=>a.push(P,C,T);for(let P=0;P<=c;P++){let T=[],C=lc*(1-P/c),L=Math.cos(C),j=Math.sin(C),Y=0;for(let te=0;te<=P;te++){let ie=Math.cos(Y),U=Math.sin(Y);N.x=L*ie,N.y=j,N.z=L*U;let W=_.clone().addScaledVector(N,l);p.push(S*W.x,w*W.y,v*W.z),d.push(S*N.x,w*N.y,v*N.z),f.push(0,0),T.push(m++),Y+=lc/P}y.push(T)}let A=y.length-1;for(let P=0;P<A;P++){let T=y[P],C=y[P+1],L=T.length-1;I(T[0],C[1],C[0]);for(let j=1;j<=L;j++)I(T[j-1],T[j],C[j]),I(T[j],C[j+1],C[j])}}}};import{BufferGeometry as Nw,Float32BufferAttribute as uc,Triangle as Iw,Vector3 as Vr,Vector2 as pc}from"three";var io=class extends Nw{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),p(),this.setAttribute("position",new uc(l,3)),this.setAttribute("normal",new uc(u,3)),this.setAttribute("uv",new uc(c,2));return;function a(){i=Math.min(1-1e-5,i),i==0&&(s=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new Vr,h=m.clone(),g=new Iw,b=i*o,x=o-b,S=s+1,w=new Vr,v=(U,W)=>w.subVectors(U,W).normalize(),N=(U,W)=>Array(U).fill(void 0).map(W),_=N(t.length/3,(U,W)=>new Vr().fromArray(t,W*3).setLength(o)),y=[],I=1e6;for(let U=0;U<_.length;U++){let W=_[U],q=[],F,E,D,B=1e10,k=-1;for(;(k=e.indexOf(U,k+1))!=-1;){let G=k-k%3;F=e[G+(k+1)%3],E=e[G+(k+2)%3],D=W.distanceToSquared(_[F]),B=Math.min(B,D),q.push([F,E,D])}B+=1e-6;let $=[],H=0,V=q.length;for(let G=0;G<V;G++){[F,E,D]=q[H];let z=y[F]?.includes(U)==!0;D<=B&&$.push(F+ +z*I),H=q.findIndex(J=>J[0]==E)}y.push($)}let A=[];{let U=0,W=0,q,F,E=f==3;for(let D=0;D<=s;D++){q=D*(D+1)/2,F=(D+1)*(D+2)/2;for(let B=0;B<s-D;B++)[U,W]=[q+B+D+2,F+B+D+3],A.push(q,F,...E?[W,q]:[U,F],W,U),[q,F]=[U,W];A.push(q,F,q+s+2)}}let P=m.clone(),T=m.clone(),C=m.clone(),L=m.clone(),j=m.clone(),Y=[],te=N(_.length,()=>N(f,()=>m.clone()));for(let U=0;U<_.length;U++){m.copy(_[U]).normalize(),P.copy(m).multiplyScalar(x);let W=y[U];for(let $=0;$<W.length;$++){let H=W[$],V=W[($+1)%f];g.setFromPointsAndIndices(_,U,H%I,V%I),g.b.sub(g.a).setLength(1e10).add(g.a),g.c.sub(g.a).setLength(1e10).add(g.a),g.closestPointToPoint(P,te[U][$])}let q=[],F=[],E=[],D=new Vr;s==0&&[...te[U]].reduce(($,H)=>$.add(H),D).multiplyScalar(1/f);for(let $=0;$<f;$++){let H=[],V=($-1+f)%f,G=te[U][V],z=te[U][$];m.copy(G).sub(P),h.copy(z).sub(P);let J=P.angleTo(m),oe=m.angleTo(h),se=Math.cos(J)*b;s==0?T.copy(D):T.copy(P).setLength(x+se),F.push(se);let re=[T,G,z];for(let ee=0;ee<2;ee++){let Q=re[ee],K=re[ee+1];L.subVectors(Q,P),j.subVectors(K,P),C.crossVectors(L,j).normalize();for(let fe=0;fe<S;fe++){let pe=[J,oe][ee]*fe/S;m.copy(L).applyAxisAngle(C,pe).add(P),q.push(m.clone()),ee&&(v(m,P),H.push([fe==0?Q:m.clone(),w.clone()]))}ee&&(v(K,P),H.push([K,w.clone()]))}E.push(H)}Y.push(E);let B=2*S,k=2;for(let $=0;$<f;$++){let H=B*$,V=B*(($+1)%f),G=[q[H]];for(let J=1;J<S;J++){L=q[H+J],j=q[V+J],G.push(L);for(let oe=1,se=J-k+1;oe<=se;oe++)m.lerpVectors(L,j,oe/(se+1)),m.sub(P).setLength(F[$]).add(P),G.push(m.clone());G.push(j)}for(let J=0;J<S;J++)G.push(q[J+S+H]);G.push(q[V+S]);let z=A.map(J=>G[J]);l.push(...z.map(J=>[J.x,J.y,J.z]).flat()),u.push(...z.map(J=>(v(J,P),[w.x,w.y,w.z])).flat())}}let ie=[];for(let U=0;U<y.length;U++)for(let W=0;W<f;W++){let q=y[U][W];if(q<I){let F=y[q].findIndex(B=>B%I==U),E=Y[U][W],D=Y[q][F];for(let B=0;B<S;B++){let k=E[B],$=D[S-B],H=E[B+1],V=D[S-(B+1)];[k,$,H,H,$,V].forEach(G=>{l.push(G[0].x,G[0].y,G[0].z),u.push(G[1].x,G[1].y,G[1].z)})}ie.push(E[0][0],D[S][0],E[S][0],D[0][0])}}for(;ie.length;){let U,W,q,F;[U,W]=ie.splice(0,2);let E=[U];for(;U!=W;)E.push(W),q=ie.indexOf(W),F=q%2,W=ie.splice(q-F,2)[1-F];w.subVectors(E[0],E[1]).cross(m.subVectors(E[0],E[2])).normalize();let D=w.dot(E[0])<0;D&&w.negate();for(let B=1;B<=E.length-2;B++)[E[B+ +D],E[B+1-+D],E[0]].forEach(k=>{l.push(k.x,k.y,k.z),u.push(w.x,w.y,w.z)})}}function p(){let d=new Vr;for(let _=0;_<l.length;_+=3){d.x=l[_+0],d.y=l[_+1],d.z=l[_+2];let y=v(d)/2/Math.PI+.5,I=N(d)/Math.PI+.5;c.push(y,1-I)}let f=new Vr,m=new Vr,h=new Vr,g=new Vr,b=new pc,x=new pc,S=new pc,w=(_,y,I,A)=>{A<0&&_.x===1&&(c[y]=_.x-1),I.x===0&&I.z===0&&(c[y]=A/2/Math.PI+.5)};for(let _=0,y=0;_<l.length;_+=9,y+=6){f.set(l[_+0],l[_+1],l[_+2]),m.set(l[_+3],l[_+4],l[_+5]),h.set(l[_+6],l[_+7],l[_+8]),b.set(c[y+0],c[y+1]),x.set(c[y+2],c[y+3]),S.set(c[y+4],c[y+5]),g.copy(f).add(m).add(h).divideScalar(3);let I=v(g);w(b,y+0,f,I),w(x,y+2,m,I),w(S,y+4,h,I)}for(let _=0;_<c.length;_+=6){let y=c[_+0],I=c[_+2],A=c[_+4],P=Math.max(y,I,A),T=Math.min(y,I,A);P>.9&&T<.1&&(y<.2&&(c[_+0]+=1),I<.2&&(c[_+2]+=1),A<.2&&(c[_+4]+=1))}function v(_){return Math.atan2(_.z,-_.x)}function N(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(t){return new io(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronGeometry as Pw}from"three";var bm=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 Pi(t*.5,i,s):new Pw(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Pi=class extends io{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 Pi(t.radius,t.corner,t.cornerSides)}};var fc=Math.PI*2;function dc({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function Ow(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 vm(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 Cw(n,t,e,r,o,i,s,l,c,u){let a=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(s,2),f=Math.pow(l,2),m=a*p-a*f-p*d;m<0&&(m=0),m/=a*f+p*d,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*l,g=m*-i/o*s,b=h+(n+e)/2,x=g+(t+r)/2,S=(s-h)/o,w=(l-g)/i,v=(-s-h)/o,N=(-l-g)/i,_=vm(1,0,S,w),y=vm(S,w,v,N);return!u&&y>0&&(y-=fc),u&&y<0&&(y+=fc),{centerx:b,centery:x,ang1:_,ang2:y}}function Sm({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 u=(n-e)/2,a=(t-r)/2;if(u===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(u,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=Cw(n,t,e,r,o,i,u,a,s,l),{ang1:f,ang2:m}=d,{centerx:h,centery:g}=d,b=Math.abs(m)/(fc/4);Math.abs(1-b)<1e-7&&(b=1);let x=Math.max(Math.ceil(b),1);m/=x;for(let S=0;S<x;S++)c.push(Ow(f,m)),f+=m;return c.map(S=>{let{x:w,y:v}=dc(S[0],o,i,h,g),{x:N,y:_}=dc(S[1],o,i,h,g),{x:y,y:I}=dc(S[2],o,i,h,g);return{x1:w,y1:v,x2:N,y2:_,x:y,y:I}})}import{MathUtils as _m,Vector2 as Tm}from"three";var Am=Math.PI*2,Nm=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 ve?n.shape:new ve,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,u=n.shape,a=t*.5,p=e*.5,d=Mw(u,a,p,o*Math.PI/180,r,i);u.isClosed=!0,u.update();let f=et.create({shape:u,parameters:{subdivisions:d,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function Mw(n,t,e,r,o,i){if(r>=Am)return o>30||o%4===0?(Ew(n,t,e,i),Math.round(o/4)):wm(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},u=Sm({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%u.length===0?Lw(n,s.x,s.y,u,o,t,e,i):wm(n,r,o,t,e,i)}function Lw(n,t,e,r,o,i,s,l){let c=Math.round(o/r.length);n.addPoint(On(t,e));for(let u=0,a=r.length;u<a;u++){let p=r[u],d=n.points[u],f=On(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),f.controls[0].position.set(p.x2,p.y2),n.addPoint(f)}return l>0?Im(n,i,s,l):n.addPoint(On(0,0)),c}function wm(n,t,e,r,o,i){let s=-t/e;for(let l=0;l<=e;l++){let c=s*l,u=Math.sin(c)*r,a=Math.cos(c)*o;n.addPoint(On(u,a))}return t<Am?i>0?Im(n,r,o,i):n.addPoint(On(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Pm(n,r,o,i)),1}function Ew(n,t,e,r=0,o=0,i=0){let s=.5522847498,l=t*s,c=e*s;n.addPoint(Ma(o-t,i,o-t,i-c,o-t,i+c)),n.addPoint(Ma(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(Ma(o+t,i,o+t,i+c,o+t,i-c)),n.addPoint(Ma(o,i-e,o+l,i-e,o-l,i-e)),r>0&&Pm(n,t,e,r)}function On(n,t){return new Ht(_m.generateUUID(),new Tm(n,t))}function Ma(n,t,e,r,o,i){let s=On(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Im(n,t,e,r){Om(n,t,e,r).forEach(i=>n.addPoint(i))}function Pm(n,t,e,r){let o=Om(n,t,e,r),i=new ve;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 Tm(o/t,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=_m.generateUUID(),u}).reverse();return l.forEach(c=>{c.position.multiply(s);let u=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(u)}),l}import{BufferGeometry as Bw,Float32BufferAttribute as mc,Vector3 as Cm}from"three";var Mm=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:u,cornerRadius:a,cornerSegments:p}=n.parameters,d=new Oi(!1,t,e,r,o,i,s,l,c,u,a,p);return Object.assign(d,{userData:{...n,type:"HelixGeometry"}})}},Oi=class extends Bw{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,l=1,c=1,u=1,a=1,p=1,d=1){super();let f=t&&s===1;f&&(d=0),p>100&&(p=100);let m=()=>new Cm,h=new Cm,g=m(),b=m(),x=m(),S,w,v,N,_,y,I,A,P=m(),T=m(),C=m(),L=m(),j=m(),Y=m(),te=m(),ie=m(),U=r-2*c+.001,W=U/s,q=Math.ceil(l*s),F=q+1,E=U/q,D=-U/2,B=a+1,k=2*Math.PI/a,$=Math.PI/2/d,H=.01,V=Math.min((1-p/100)*c,c-H),G=c-V,z=0,J=2,oe=d*J+J,se=B*oe/J,re=se+B*F,ee=B*(F+oe),[Q,K,fe]=[3,3,2].map(Re=>Array(ee*Re).fill(0)),pe=[],ye=i-c;function $e(Re,St){let Qt=Math.PI/2;y=St*E,A=2*Math.PI*(y%W)/W+Qt,y+=D,I=Math.sin(A)*ye,_=Math.cos(A)*ye,t?Re.set(_,I,y):Re.set(_,y,I)}$e(h,-1e-10),$e(g,0),P.copy(h),$e(h,1);let _e=h.distanceTo(g),Ae=G+V,Pe=_e*q+2*Ae,It=V,Ur=Pe-Ae;for(let Re=0;Re<=q;Re++){$e(b,Re),ie.subVectors(b,P).normalize(),P.copy(b),Y.copy(b).setComponent(+t+1,0).normalize(),te.crossVectors(ie,Y).normalize();let St=Re===0,Qt=Re===q,wg=St?3*Math.PI/2:$,_g=St?It:Ur,Tg=St?B:re,Ag=St?0:ee-B,Ng=ie.clone().multiplyScalar(St?-G:G).add(b),Ig=ie.clone().multiplyScalar(St?-1:1).normalize();for(let Nr=0;Nr<B;Nr++){let cu=Nr*k;if(T.addVectors(h.copy(Y).multiplyScalar(c*Math.cos(cu)),g.copy(te).multiplyScalar(c*Math.sin(cu))),C.copy(T).normalize(),St||Qt){f||(z=Ag+Nr,[0,1,2].forEach(pt=>{Q[z*3+pt]=Ng.getComponent(pt),K[z*3+pt]=Ig.getComponent(pt)}),fe[z*2]=+Qt,fe[z*2+1]=Nr/a),g.copy(C).multiplyScalar(V),x.addVectors(b,g);for(let pt=0;pt<d;pt++){let il=pt*$+wg;L.addVectors(h.copy(ie).multiplyScalar(G*Math.sin(il)),g.copy(C).multiplyScalar(G*Math.cos(il))),j.copy(L).normalize(),g.addVectors(x,L),L.normalize(),z=Tg+pt*B+Nr,[0,1,2].forEach(us=>{Q[z*3+us]=g.getComponent(us),K[z*3+us]=j.getComponent(us)});let Pg=+St+Math.sin(il);fe[z*2]=(_g+G*Pg)/Pe,fe[z*2+1]=Nr/a}}g.addVectors(b,T),z=se+Re*B+Nr,[0,1,2].forEach(pt=>{Q[z*3+pt]=g.getComponent(pt),K[z*3+pt]=C.getComponent(pt)}),fe[z*2]=(Ae+Re*_e)/Pe,fe[z*2+1]=Nr/a}}let vt=F+2*d+J,Bo=1,[ls,cs]=f?[Bo,Bo+F-1]:[0,vt-1];for(let Re=ls;Re<=cs-1;Re++){let St=f&&Re===cs-1;for(let Qt=0;Qt<B-1;Qt++)S=Re*B+Qt,w=S+1,v=(St?Qt:S)+B,N=(St?Qt+1:w)+B,Re===0?pe.push(w,N,v):Re===vt-2?pe.push(S,w,v):pe.push(S,w,v,w,N,v)}this.setIndex(pe),this.setAttribute("position",new mc(Q,3)),this.setAttribute("normal",new mc(K,3)),this.setAttribute("uv",new mc(fe,2))}};import{IcosahedronGeometry as Dw}from"three";var Lm=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 Ci(t*.5,i,s):new Dw(t*.5,o);return l.scale(1,e/t,r/t),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},Ci=class extends io{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 Ci(t.radius,t.corner,t.cornerSides)}};import{LatheGeometry as Gw,Shape as Rw}from"three";var Em=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 Rw;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 Gw(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Fm,BufferGeometryLoader as $w,Vector3 as Yw,BoxGeometry as zm}from"three";import{BufferGeometry as kw,Vector2 as yc,Vector3 as Vm}from"three";import{Box3 as Vw,BufferAttribute as Mi,BufferGeometry as Bm,Color as Gm,EventDispatcher as Fw,Float32BufferAttribute as Cn,Matrix3 as Dm,Matrix4 as Rm,MathUtils as zw,Object3D as jw,Sphere as Uw,Vector2 as Rt,Vector3 as it}from"three";var mr=new Rm,hc=new jw,La=new it,so=class extends Fw{constructor(){super(),this.uuid=zw.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 Dm().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 mr.makeRotationX(t),this.applyMatrix4(mr),this}rotateY(t){return mr.makeRotationY(t),this.applyMatrix4(mr),this}rotateZ(t){return mr.makeRotationZ(t),this.applyMatrix4(mr),this}translate(t,e,r){return mr.makeTranslation(t,e,r),this.applyMatrix4(mr),this}scale(t,e,r){return mr.makeScale(t,e,r),this.applyMatrix4(mr),this}lookAt(t){return hc.lookAt(t),hc.updateMatrix(),this.applyMatrix4(hc.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,u=o.uv2;u!==void 0&&(this.faceVertexUvs[1]=[]);for(let d=0;d<i.count;d++)e.vertices.push(new it().fromBufferAttribute(i,d)),l!==void 0&&e.colors.push(new Gm().fromBufferAttribute(l,d));function a(d,f,m,h){let g=l===void 0?[]:[e.colors[d].clone(),e.colors[f].clone(),e.colors[m].clone()],b=s===void 0?[]:[new it().fromBufferAttribute(s,d),new it().fromBufferAttribute(s,f),new it().fromBufferAttribute(s,m)],x=new Mn(d,f,m,b,g,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new Rt().fromBufferAttribute(c,d),new Rt().fromBufferAttribute(c,f),new Rt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Rt().fromBufferAttribute(u,d),new Rt().fromBufferAttribute(u,f),new Rt().fromBufferAttribute(u,m)])}let p=t.groups;if(p.length>0)for(let d=0;d<p.length;d++){let f=p[d],m=f.start,h=f.count;for(let g=m,b=m+h;g<b;g+=3)r!==void 0?a(r.getX(g),r.getX(g+1),r.getX(g+2),f.materialIndex):a(g,g+1,g+2,f.materialIndex)}else if(r!==void 0)for(let d=0;d<r.count;d+=3)a(r.getX(d),r.getX(d+1),r.getX(d+2));else for(let d=0;d<i.count;d+=3)a(d,d+1,d+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(La).negate(),this.translate(La.x,La.y,La.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new Rm;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 it,e=new it;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 it;if(t){let r=new it,o=new it;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],u=this.vertices[l.b],a=this.vertices[l.c];r.subVectors(a,u),o.subVectors(c,u),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 so;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 u=new it,a={a:new it,b:new it,c:new it};i.push(u),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],u=o.vertexNormals[i];c.copy(l.normal),u.a.copy(l.vertexNormals[0]),u.b.copy(l.vertexNormals[1]),u.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 Vw),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Uw),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,u=t.faces,a=this.colors,p=t.colors;e!==void 0&&(o=new Dm().getNormalMatrix(e));for(let d=0,f=l.length;d<f;d++){let h=l[d].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let d=0,f=p.length;d<f;d++)a.push(p[d].clone());for(let d=0,f=u.length;d<f;d++){let m=u[d],h,g,b=m.vertexNormals,x=m.vertexColors,S=new Mn(m.a+i,m.b+i,m.c+i);S.normal.copy(m.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,v=b.length;w<v;w++)h=b[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),S.vertexNormals.push(h);S.color.copy(m.color);for(let w=0,v=x.length;w<v;w++)g=x[w],S.vertexColors.push(g.clone());S.materialIndex=m.materialIndex+r,c.push(S)}for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let b=m[h],x=[];for(let S=0,w=b.length;S<w;S++)x.push(b[S].clone());this.faceVertexUvs[d].push(x)}}}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,u=this.vertices.length;c<u;c++){let a=this.vertices[c],p=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[p]===void 0?(e[p]=c,r.push(this.vertices[c]),o[c]=r.length-1):o[c]=o[e[p]]}let s=[];for(let c=0,u=this.faces.length;c<u;c++){let a=this.faces[c];a.a=o[a.a],a.b=o[a.b],a.c=o[a.c];let p=[a.a,a.b,a.c];for(let d=0;d<3;d++)if(p[d]===p[(d+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let u=s[c];this.faces.splice(u,1);for(let a=0,p=this.faceVertexUvs.length;a<p;a++)this.faceVertexUvs[a].splice(u,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 it(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,u){return c.materialIndex-u.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 u=t[c]._id;s&&s.push(o[u]),l&&l.push(i[u])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(t[h]=m[h]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let h=this.vertices[m];e.push(h.x,h.y,h.z)}let r=[],o=[],i={},s=[],l={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],g=!0,b=!1,x=this.faceVertexUvs[0][m]!==void 0,S=h.normal.length()>0,w=h.vertexNormals.length>0,v=h.color.r!==1||h.color.g!==1||h.color.b!==1,N=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,g),_=a(_,2,b),_=a(_,3,x),_=a(_,4,S),_=a(_,5,w),_=a(_,6,v),_=a(_,7,N),r.push(_),r.push(h.a,h.b,h.c),r.push(h.materialIndex),x){let y=this.faceVertexUvs[0][m];r.push(f(y[0]),f(y[1]),f(y[2]))}if(S&&r.push(p(h.normal)),w){let y=h.vertexNormals;r.push(p(y[0]),p(y[1]),p(y[2]))}if(v&&r.push(d(h.color)),N){let y=h.vertexColors;r.push(d(y[0]),d(y[1]),d(y[2]))}}function a(m,h,g){return g?m|1<<h:m&~(1<<h)}function p(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function d(m){let h=m.r.toString()+m.g.toString()+m.b.toString();return l[h]!==void 0||(l[h]=s.length,s.push(m.getHex())),l[h]}function f(m){let h=m.x.toString()+m.y.toString();return u[h]!==void 0||(u[h]=c.length/2,c.push(m.x,m.y)),u[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 so().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let d=0,f=e.length;d<f;d++)this.vertices.push(e[d].clone());let r=t.colors;for(let d=0,f=r.length;d<f;d++)this.colors.push(r[d].clone());let o=t.faces;for(let d=0,f=o.length;d<f;d++)this.faces.push(o[d].clone());for(let d=0,f=t.faceVertexUvs.length;d<f;d++){let m=t.faceVertexUvs[d];this.faceVertexUvs[d]===void 0&&(this.faceVertexUvs[d]=[]);for(let h=0,g=m.length;h<g;h++){let b=m[h],x=[];for(let S=0,w=b.length;S<w;S++){let v=b[S];x.push(v.clone())}this.faceVertexUvs[d].push(x)}}let i=t.morphTargets;for(let d=0,f=i.length;d<f;d++){let m={};if(m.name=i[d].name,i[d].vertices!==void 0){m.vertices=[];for(let h=0,g=i[d].vertices.length;h<g;h++)m.vertices.push(i[d].vertices[h].clone())}if(i[d].normals!==void 0){m.normals=[];for(let h=0,g=i[d].normals.length;h<g;h++)m.normals.push(i[d].normals[h].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let d=0,f=s.length;d<f;d++){let m={};if(s[d].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,g=s[d].vertexNormals.length;h<g;h++){let b=s[d].vertexNormals[h],x={};x.a=b.a.clone(),x.b=b.b.clone(),x.c=b.c.clone(),m.vertexNormals.push(x)}}if(s[d].faceNormals!==void 0){m.faceNormals=[];for(let h=0,g=s[d].faceNormals.length;h<g;h++)m.faceNormals.push(s[d].faceNormals[h].clone())}this.morphNormals.push(m)}let l=t.skinWeights;for(let d=0,f=l.length;d<f;d++)this.skinWeights.push(l[d].clone());let c=t.skinIndices;for(let d=0,f=c.length;d<f;d++)this.skinIndices.push(c[d].clone());let u=t.lineDistances;for(let d=0,f=u.length;d<f;d++)this.lineDistances.push(u[d]);let a=t.boundingBox;a!==null&&(this.boundingBox=a.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.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 gc().fromGeometry(this),e=new Bm,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new Mi(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new Mi(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new Mi(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new Mi(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new Mi(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 u=s[l],a=new Cn(u.data.length*3,3);a.name=u.name,i.push(a.copyVector3sArray(u.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new Cn(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new Cn(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 Bm,r=t.geometry;if(t.isPoints||t.isLine){let o=new Cn(r.vertices.length*3,3),i=new Cn(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 Cn(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}};so.prototype.isGeometry=!0;var gc=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,u;if(c>0){u=[];for(let b=0;b<c;b++)u[b]={name:l[b].name,data:[]};this.morphTargets.position=u}let a=t.morphNormals,p=a.length,d;if(p>0){d=[];for(let b=0;b<p;b++)d[b]={name:a[b].name,data:[]};this.morphTargets.normal=d}let f=t.skinIndices,m=t.skinWeights,h=f.length===r.length,g=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let b=0;b<e.length;b++){let x=e[b];this.vertices.push(r[x.a],r[x.b],r[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let v=x.normal;this.normals.push(v,v,v)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let v=x.color;this.colors.push(v,v,v)}if(i===!0){let v=o[0][b];v!==void 0?this.uvs.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",b),this.uvs.push(new Rt,new Rt,new Rt))}if(s===!0){let v=o[1][b];v!==void 0?this.uvs2.push(v[0],v[1],v[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",b),this.uvs2.push(new Rt,new Rt,new Rt))}for(let v=0;v<c;v++){let N=l[v].vertices;u[v].data.push(N[x.a],N[x.b],N[x.c])}for(let v=0;v<p;v++){let N=a[v].vertexNormals[b];d[v].data.push(N.a,N.b,N.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),g&&this.skinWeights.push(m[x.a],m[x.b],m[x.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,i,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new it,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Gm,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 Hw=["a","b","c"];function Ww(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function xc(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function bc(n,t,e,r,o,i){let s=Math.min(n,t),l=Math.max(n,t),c=s+"_"+l,u;if(r.has(c))u=r.get(c);else{let a=e[s],p=e[l];u={a,b:p,newEdge:null,faces:[]},r.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[t].edges.push(u)}function qw(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],bc(s.a,s.b,n,r,s,e),bc(s.b,s.c,n,r,s,e),bc(s.c,s.a,n,r,s,e)}function Ea(n,t,e,r,o){n.push(new Mn(t,e,r,void 0,void 0,o))}function Ln(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Ba(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Da=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof kw?t=new so().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 Vm,r,o,i,s,l,c=t.vertices,u=t.faces,a=t.faceVertexUvs[0],p=a!==void 0&&a.length>0,d=[],f=new Map;qw(c,u,d,f);let m=[],h,g,b,x,S,w,v;for(let H of Array.from(f.keys())){for(g=f.get(H),b=new Vm,S=3/8,w=1/8,v=g.faces.length,v!=2&&(S=.5,w=0,v!=1),b.addVectors(g.a,g.b).multiplyScalar(S),e.set(0,0,0),s=0;s<v;s++){for(x=g.faces[s],l=0;l<3&&(h=c[Ww(x,Hw[l])],!(h!==g.a&&h!==g.b));l++);h&&e.add(h)}e.multiplyScalar(w),b.add(e),g.newEdge=m.length,m.push(b)}let N,_,y,I,A,P,T,C=[];for(o=0,i=c.length;o<i;o++){for(P=c[o],A=d[o].edges,r=A.length,r==3?N=3/16:r>3&&(N=3/(8*r)),_=1-r*Number(N),y=N,r<=2&&(r==2?(_=3/4,y=1/8):r==1||r==0),T=P.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<r;s++)I=A[s],h=I.a!==P?I.a:I.b,e.add(h);e.multiplyScalar(Number(y)),T.add(e),C.push(T)}let L=C.concat(m),j=C.length,Y,te,ie,U=[],W=[],q,F,E,D,B=new yc,k=new yc,$=new yc;for(o=0,i=u.length;o<i;o++)x=u[o],Y=Number(xc(x.a,x.b,f).newEdge)+j,te=Number(xc(x.b,x.c,f).newEdge)+j,ie=Number(xc(x.c,x.a,f).newEdge)+j,Ea(U,Y,te,ie,x.materialIndex),Ea(U,x.a,Y,ie,x.materialIndex),Ea(U,x.b,te,Y,x.materialIndex),Ea(U,x.c,ie,te,x.materialIndex),p&&(q=a[o],F=q[0],E=q[1],D=q[2],B.set(Ln(F.x,E.x),Ln(F.y,E.y)),k.set(Ln(E.x,D.x),Ln(E.y,D.y)),$.set(Ln(F.x,D.x),Ln(F.y,D.y)),Ba(W,B,k,$),Ba(W,F,B,$),Ba(W,E,k,B),Ba(W,D,$,k));t.vertices=L,t.faces=U,p&&(t.faceVertexUvs[0]=W)}};var ke=new Yw,jm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new Fm().copy(new zm(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(ke),r={width:ke.x,height:ke.y,depth:ke.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new Fm().copy(new zm(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(ke)):ke.set(s.width,s.height,s.depth),(t!==ke.x||e!==ke.y||r!==ke.z)&&i.scale(ke.x===0?1:t/ke.x,ke.y===0?1:e/ke.y,ke.z===0?1:r/ke.z);let l=i.originalGeometry;return o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new Da(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 $w(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(ke);let s=100/ke.x;Object.assign(i.parameters,{width:100,height:ke.y*s,depth:ke.z*s}),t(this.build(i))})}};var Um=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 ve?n.shape:new ve,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,u=t*.5,a=e*.5,p=0,d=0,f=2*Math.PI/r;for(let h=0;h<r;h++){let g=f*h,b=p+Math.sin(g)*u,x=d+Math.cos(g)*a;c.addPoint(c.createPoint(b,x))}c.isClosed=!0;for(let h=0,g=c.points.length;h<g;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=et.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as Xw,Float32BufferAttribute as vc,Vector2 as hr,Vector3 as Ke}from"three";var km=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,u=new wc(t*.5,e,o,i,s,l,c);return u.scale(1,1,r/t),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Li(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Sc(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 u=s.add(l).normalize();i.copy(n).addScaledVector(u,r/Math.sin(c/2))}else{let u=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(l,r/Math.sin(u))}}function Kw(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var wc=class extends Xw{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=[],u=[],a=[],p=[],d=0,f=e/2,m=Math.PI/r,h=t*Math.cos(Math.PI/r),g=2*Math.PI/r,b=(r-2)*Math.PI/r,x=Math.PI-b,S=new Ke(0,-f,0),w=new Ke(0,f,0),v=new hr(t,-f),N=new hr(h,-f),_=new hr(0,w.y).sub(N),y=new hr(0,w.y).sub(v),I=new hr(_.y,-_.x).normalize(),A=new hr(y.y,-y.x).normalize(),T=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,T);let C;{let W=new Ke(I.x,I.y,0),q=new Ke(Math.cos(g)*W.x,W.y,Math.sin(g)*W.x);C=W.angleTo(q)}let L=s/Math.tan((Math.PI-_.angle())/2),j=s/Math.tan((Math.PI-C)/2),Y=new Ke;if(!i){u.push(S.x,S.y,S.z),a.push(0,-1,0),p.push(0,0);let W=d++,q=[],F=v.clone(),E=L/Math.cos(Math.PI/r);F.x-=E;for(let D=0;D<r;D++){let B=D/r*Math.PI*2+m,k=new hr(Math.sin(B),Math.cos(B));Li(F,k,Y),u.push(Y.x,Y.y,Y.z),a.push(0,-1,0),p.push(0,0),q.push(d++)}for(let D=0;D<q.length;D++)c.push(q[D],W,q[(D+1)%q.length])}let te=[];{let W=new Ke,q=new Ke,F=new Ke,E=new Ke,D=new Ke,B=new Ke;for(let k=0;k<r;k++){let $=k/r*Math.PI*2+m,H=(k+.5)/r*Math.PI*2+m,V=(k+1)/r*Math.PI*2+m,G=new hr(Math.sin($),Math.cos($)),z=new hr(Math.sin(H),Math.cos(H)),J=new hr(Math.sin(V),Math.cos(V));Li(v,G,q),Li(v,J,F),Li(I,z,W),Sc(w,q,F,j,j,E),u.push(E.x,E.y,E.z),Sc(q,w,F,j,L,D),u.push(D.x,D.y,D.z),Sc(F,q,w,L,j,B),u.push(B.x,B.y,B.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),a.push(W.x,W.y,W.z),p.push(0,0),p.push(0,0),p.push(0,0);let oe=d++,se=d++,re=d++;if(c.push(oe,se,re),s>0){{let K=q.clone().add(F).multiplyScalar(.5),fe=w.clone().sub(K).normalize(),ye=S.clone().sub(K).normalize().add(fe).normalize().multiplyScalar(-1),$e=B.clone().sub(D);ie(K,$e,ye,_.angle())}let ee,Q;{let K=new Ke;Li(A,J,K);let fe=B.clone().add(E).multiplyScalar(.5);fe=Kw(fe,F,w);let pe=B.clone().sub(E);[ee,Q]=ie(fe,pe,K,C,E.y)}{let K=ee,fe=K.clone().setY(0).normalize(),pe=new Ke(0,-1,0),ye=fe.clone().cross(pe);U(K,fe,pe,ye)}te.concat(Q);{let K=_.angle(),fe=Math.PI-K,pe=w.clone();pe.y-=s/Math.sin(K-Math.PI/2);let ye=new Ke,$e=[];for(let Ae=0;Ae<l;Ae++){let Pe=[],It=Math.PI/2-fe*Ae/l,Ur=Math.cos(It),vt=Math.sin(It),Bo=H;for(let ls=0;ls<=Ae;ls++){let cs=Math.cos(Bo),Re=Math.sin(Bo);W.x=Ur*Re,W.y=vt,W.z=Ur*cs,ye.copy(pe).addScaledVector(W,s),u.push(ye.x,ye.y,ye.z),a.push(W.x,W.y,W.z),p.push(0,0),Pe.push(d++),Bo+=Math.PI*2/Ae/r}$e.push(Pe)}Q.reverse(),$e.push(Q);let _e=$e.length-1;for(let Ae=0;Ae<_e;Ae++){let Pe=$e[Ae],It=$e[Ae+1],Ur=Pe.length-1;c.push(It[1],Pe[0],It[0]);for(let vt=1;vt<=Ur;vt++)c.push(Pe[vt],Pe[vt-1],It[vt]),c.push(It[vt+1],Pe[vt],It[vt])}}}}}this.setIndex(c),this.setAttribute("position",new vc(u,3)),this.setAttribute("normal",new vc(a,3)),this.setAttribute("uv",new vc(p,2));function ie(W,q,F,E,D){let B=-E/2,k=(Math.PI-E)/2,$=q.clone().normalize().cross(F);W.addScaledVector(F,-s/Math.sin(k));let H=new Ke,V=new Ke,G=1,z=d,J=[];for(let oe=0;oe<=l;oe++){let se=B+oe/l*E;V.set(0,0,0),V.addScaledVector($,Math.sin(se)),V.addScaledVector(F,Math.cos(se));for(let re=0;re<=G;re++){let ee=re/G-.5;if(H.copy(W),H.addScaledVector(q,ee),H.addScaledVector(V,s),D!=null){let Q=Math.max(0,H.y-D);H.addScaledVector(q,-Q/q.y)}u.push(H.x,H.y,H.z),a.push(V.x,V.y,V.z),p.push(0,0),re===0&&J.push(d),d++}}for(let oe=0;oe<l;oe++)for(let se=0;se<G;se++){let re=z+se+(G+1)*oe,ee=re+(G+1),Q=ee+1,K=re+1;c.push(re,ee,K),c.push(ee,Q,K)}return[W.clone().addScaledVector(q,.5),J]}function U(W,q,F,E){let D=Math.PI/2,B=y.angle()-D,k=[],$=new Ke,H=new Ke;for(let G=0;G<=l;G++){let z=[],J=G/l;for(let oe=0;oe<=G;oe++){let re=((G?oe/G:0)-.5)*x,ee=Math.cos(re),Q=Math.sin(re),K=Math.atan(Math.tan(B)*ee),fe=(D+K)*J,pe=Math.cos(fe),ye=Math.sin(fe);$.set(0,0,0),$.addScaledVector(q,ye*ee),$.addScaledVector(F,pe),$.addScaledVector(E,ye*Q),H.copy(W).addScaledVector($,s),u.push(H.x,H.y,H.z),a.push($.x,$.y,$.z),p.push(0,0),z.push(d++)}k.push(z)}let V=k.length-1;for(let G=0;G<V;G++){let z=k[G],J=k[G+1],oe=z.length-1;c.push(z[0],J[1],J[0]);for(let se=1;se<=oe;se++)c.push(z[se-1],z[se],J[se]),c.push(z[se],J[se+1],J[se])}}}};var 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,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 ve?n.shape:new ve,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,u={x:e*.5,y:r*.5},a={x:-u.x,y:-u.y},p={x:u.x,y:u.y};function d(w,v,N){return v>e&&N>r?Math.min(w*e/v,w*r/N):v>e?w*e/v:N>r?w*r/N:w}let f=[];f[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=p.x,g=p.y,b=a.y;t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.addPoint(t.createPoint(h,b)),t.addPoint(t.createPoint(m,b)),t.isClosed=!0;let x=!0;for(let w=0,v=t.points.length;w<v;w++)t.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=et.create({shape:t,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as Zw}from"three";var Wm=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:u}=n.parameters,a=new Zw(.5*t,o,i,s,l,c,u);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as Qw}from"three";var qm=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 Qw(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as Jw,Float32BufferAttribute as _c,Vector3 as e_}from"three";var $m=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 Tc(t,e,r,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},Tc=class extends Jw{constructor(t=1,e=1,r=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],u=[],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 p=[],d=Math.PI/2,f=(H=0,V=0,G=0)=>new e_(H,V,G),m=f(),h=f(),[g,b,x]=[e/2,t/2,r/2],S=-b,w=+b,[v,N,_]=[f(S,-g,+x),f(S,-g,-x),f(S,+g,-x)],y=(H,V=!1)=>Math.sin(H-Math.PI/(1+ +V)),I=(H,V=!1)=>Math.cos(H-Math.PI/(1+ +V));_.y=Math.sin(o)*e-g;let A=Math.cos(o)*e-x,P=v.z-a;o<=d?(_.z=Math.min(A,P),_.z==P&&(_.y-=(A-P)/Math.tan(d-o))):N.z=Math.min(N.z-A-x,v.z-a),m.subVectors(v,N),h.subVectors(_,N);let T=Math.min(m.length(),h.length())*i/100,C=T*Math.tan(o/2),L=T/Math.cos(o/2),j=m.clone().normalize().add(h.normalize()).setLength(L).add(N);m.set(0,y(o,!0),I(o,!0)),p.push([_,m.clone()]);let Y=(Math.PI-o)/s;for(let H=0;H<=s;H++){let V=d+o+H*Y;m.set(0,Math.sin(V)*C,Math.cos(V)*C),m.add(j),h.set(0,y(V),I(V)),p.push([m.clone(),h.clone()])}p.push([v,f(0,1,0)]);let te=Math.sin(Y/2)*C*2,ie=p.length-1,U=p[0][0].distanceTo(p[1][0]),W=p[ie-1][0].distanceTo(p[ie][0]),q=U+te*s+W;p[0].push(1);for(let H=0;H<=s;H++)p[H+1].push(1-(U+H*te)/q);p[ie].push(0);let[F,E,D]=p[0],B,k,$;for(let H=1;H<p.length;H++)[B,k,$]=p[H],l.push(S,F.y,F.z,S,B.y,B.z,w,F.y,F.z,w,F.y,F.z,S,B.y,B.z,w,B.y,B.z),c.push(0,E.y,E.z,0,k.y,k.z,0,E.y,E.z,0,E.y,E.z,0,k.y,k.z,0,k.y,k.z),u.push(0,D,0,$,1,D,1,D,0,$,1,$),[F,E,D]=[B,k,$];this.setAttribute("position",new _c(l,3)),this.setAttribute("normal",new _c(c,3)),this.setAttribute("uv",new _c(u,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 ve?n.shape:new ve,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:u}=n.parameters,a=n.shape,p=t*.5,d=e*.5,f=0,m=0,h=s*Math.PI/360/o,g=Math.PI/2*3*-1,b=p*r/100,x=d*r/100;if(o===3&&r===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let v=h*w,N=f+Math.sin(v)*p,_=m+Math.cos(v)*d;a.addPoint(a.createPoint(N,_))}}else for(let w=0;w<o;w++){let v=f+Math.cos(g)*p,N=m+Math.sin(g)*d;a.addPoint(a.createPoint(v,N)),g+=h,v=f+Math.cos(g)*b,N=m+Math.sin(g)*x,w<=o,a.addPoint(a.createPoint(v,N)),g+=h}a.isClosed=!0;for(let w=0,v=a.points.length;w<v;w++)a.points[w].roundness=i;a.roundness=i,a.update();let S=et.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as t_}from"three";var Xm=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 t_(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var Km=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.round(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,u=r_(t,e,r,t*.5,s,i,0,0,o,l,c);return u.scale(1,e/t,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function r_(n,t,e,r,o,i,s,l,c,u,a){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(u=0),new Oi(!0,n,t,e,r,o,i,s,l,c,u,a)}import{TorusKnotGeometry as o_}from"three";var Zm=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 o_(l,e,r,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Qm=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 ve?n.shape:new ve,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,u=t*.5,a=e*.5;l?(c.addPoint(c.createPoint(-u,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(u,-a)),c.addPoint(c.createPoint(-u,-a))),c.isClosed=!0;for(let d=0,f=c.points.length;d<f;d++)c.points[d].roundness=r;c.roundness=r,c.update();let p=et.create({shape:c,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(p,{userData:{...n,type:"TriangleGeometry"}})}};import{BufferAttribute as Jm,BufferGeometry as Ac}from"three";import{mergeBufferGeometries as n_}from"three/examples/jsm/utils/BufferGeometryUtils.js";function eh(){let n=new Ac;return n.setAttribute("position",new Jm(new Float32Array([]),3)),n.setIndex(new Jm(new Uint16Array([]),1)),n}var i_=12;var En=class extends Ac{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.vectorShapes=[];let o=eh();Object.entries(o.attributes).forEach(([i,s])=>{this.setAttribute(i,s)}),this.setIndex(o.index),this.updateFont(e.font,r),this.update(e)}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}async update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r||!r.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c,text:u,textTransform:a,subdivisions:p}=e;await r.loadingPromise;let d=a===2?u.toUpperCase():a===3?u.toLowerCase():u,f=s_(e,r,d),{shapes:m,charWidths:h,charCoords:g}=await r.generateShapes(f,e),b=o*.5,x=i*.5,S=m.map(N=>new ve().fromShape(N));this.vectorShapes=S;let w=S.map(N=>et.create({shape:N,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?Oe.NONZERO:Oe.ODD,subdivisions:p??i_}})),v=w.length?n_(w):eh();v.translate(-b,x,0),this.dispose(),this.wrappedText=f,this.charCoords=g,this.charWidths=h,this.deleteAttribute("extrudeNormal"),Object.entries(v.attributes).forEach(([N,_])=>{this.setAttribute(N,_)}),this.setIndex(v.index),this.computeBoundingSphere()}clone(){let e=So(new Ac,En.prototype);return e.copy(this),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function s_(n,t,e){e=e??n.text;let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
2
2
|
`?(r[r.length-1]+=o,o="",i===`
|
|
3
|
-
`&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}import{BufferGeometry as em,BufferAttribute as tm,Uint32BufferAttribute as Xl,Float32BufferAttribute as Yl,Matrix4 as Fw,Vector3 as ma}from"three";var Gw,pa=new Promise(n=>{Gw=n});import{BufferGeometryLoader as Rw}from"three";function da(n,t){return Vw(n)}function Vw(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=ve.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 Rw().parse(n));let e;try{e=di(t)}catch(r){console.error(r)}if(!e){let r=ve.createFromState(Lo.defaultData(),100,100);t.shape=r,e=di(t)}return e}var ue;pa.then(n=>{ue=n});var rm=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),om=new Uint32Array([0,1,2,3]),nm=new Uint8Array([4]),Ct=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&&(ue.free_bvh(e),ue.free_subdivision_surface(e));try{i=Ct.allocate(n,o)}catch(p){console.error(p,n),i=Ct.allocate({positionWASM:rm,indexWASM:om,verticesPerFaceWASM:nm},o)}ue.set_destination_refinement_level(i,0),s=Ct.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Ct.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(ue.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?l=Ct.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:da(n),r,o,i,s;({positions:r,triIndices:s}=Jl(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}=ec(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=rm,r=om,o=nm);let l=e.length,c=r.length,p=o.length,a=e.length+i.length+s.length,u=r.length+o.length,d=a*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,f=a*Float32Array.BYTES_PER_ELEMENT,m=u*Uint32Array.BYTES_PER_ELEMENT,h=ue._malloc(d),g=new Float32Array(ue.HEAPF32.buffer,h,a),v=new Uint32Array(ue.HEAPU32.buffer,h+f,u);g.set(e,0),g.set(i,e.length),g.set(s,e.length+i.length),v.set(r,0),v.set(o,r.length);let x;n?.scaleBaked?.some(S=>S!==1)&&(x=new Fw().makeScale(...n.scaleBaked)),t&&(x?x.premultiply(t):x=t);let w=x?ue.alloc_subdivision_surface2(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p,x.elements):ue.alloc_subdivision_surface(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,p);return ue._free(h),w}static buildLevel(n,t,e,r,o){let i=o?ue.get_mesh_data2(n,t?ue.Level.CONTROL:ue.Level.REFINED,e,o.elements):ue.get_mesh_data(n,t?ue.Level.CONTROL:ue.Level.REFINED,e),s=8,l=ue.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(4,4+4),p=0,a=ue.HEAPU32[l[p]>>2],u=ue.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=ue.HEAPU32[l[p]>>2],f=ue.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=ue.HEAPU32[l[p]>>2],h=ue.HEAPU32.subarray(m>>2,(m>>2)+c[p]);p++;let g=ue.HEAPU32[l[p]>>2],v=ue.HEAPU32.subarray(g>>2,(g>>2)+c[p]);if(p++,r===void 0){let x=new em;if(x.setIndex(new Xl(v,1)),x.setAttribute("position",new Yl(u,3)),x.setAttribute("normal",new Yl(f,3)),t){x.setAttribute("faceMap",new Xl(h,1));let w=new Float32Array(f.length/3*4).fill(0);x.setAttribute("color",new tm(w,4))}return ue.free_mesh_data(i),x.userData.type="SubdivGeometry",x}r.getAttribute("position").copyArray(u),r.getAttribute("normal").copyArray(f),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,ue.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=ue.get_wireframe_data_for_base_level(n),o=4,i=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),l=0,c=ue.HEAPU32[i[l]>>2],p=ue.HEAPF32.subarray(c>>2,(c>>2)+s[l]);l++;let a=ue.HEAPU32[i[l]>>2],u=ue.HEAPU32.subarray(a>>2,(a>>2)+s[l]);if(t===void 0){let d=new em;d.setAttribute("position",new Yl(p,3));let f=new Float32Array(p.length);for(let m=0,h=p.length;m<h;)f[m++]=e.r,f[m++]=e.g,f[m++]=e.b;return d.setAttribute("color",new tm(f,3)),d.setIndex(new Xl(u,1)),ue.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(p),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||ue.set_destination_refinement_level(n,t);let o=e?ue.get_topological_data2(n,r?ue.Level.CONTROL:ue.Level.REFINED,e.elements):ue.get_topological_data(n,r?ue.Level.CONTROL:ue.Level.REFINED),i=6,s=ue.HEAPU32.subarray(o>>2,(o>>2)+i),l=s.subarray(3,3+3),c=0,p=ue.HEAPU32[s[c]>>2],a=new Float32Array(ue.HEAPF32.subarray(p>>2,(p>>2)+l[c]));c++;let u=ue.HEAPU32[s[c]>>2],d=new Uint32Array(ue.HEAPU32.subarray(u>>2,(u>>2)+l[c]));c++;let f=ue.HEAPU32[s[c]>>2],m=new Uint8Array(ue.HEAPU32.subarray(f>>2,(f>>2)+l[c]));return ue.free_topological_data(o),{positions:a,indices:d,verticesPerFace:m}}};var im=["getX","getY","getZ"];function Jl(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[im[d]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let d=0;d<3;d++)s.push(n[im[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 fa=new ma,Kl=new ma,Ql=new ma,Zl=new ma;function ec(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=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&l<=24&&l%4===0&&e.userData.parameters.angle>=360){let a=s.length/2/l;s=s.filter((u,d)=>Math.floor(d/2)%a===0)}let c=0;for(let a=0;a<s.length;a+=2)c+=(s[a]-s[(a===0?s.length:a)-2])*(s[a+1]+s[(a===0?s.length:a)-1]);n.length=0;let p=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(p++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(p++);return i.push(p),{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]){fa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),Kl.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Ql.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Zl.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),Kl.sub(fa).normalize(),Ql.sub(fa).normalize(),Zl.sub(fa).normalize();let c=Kl.cross(Ql).dot(Zl);Math.abs(c)>.005||r&&r.some((p,a)=>a%2===1?!1:s>=r[a]&&s<r[a+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0,p=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,u=0;a<n.length;a+=3,u++)n[a+2]===0&&(s.push(u),c++),n[a+2]===p&&l.push(u);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var zt={};jh(zt,{calcBoolean:()=>Hw,calcBooleanTopological:()=>kw,freeMeshSet:()=>$w,getMeshSet:()=>Ww,transformMeshSet:()=>qw});var zw,sm=new Promise(n=>{zw=n});import{Float32BufferAttribute as am,Sphere as Uw}from"three";var he,gn;sm.then(n=>he=n);function jw(n,t,e){let r,{positions:o,triIndices:i}=Jl(n.getAttribute("position"),n.getIndex()),s;if(t&&e){let{indices:l,verticesPerFace:c}=ec(o,i,n);s=c.length,r=[];for(let p=0,a=0;p<s;p++){r.push(c[p]);for(let u=0;u<c[p];u++)r.push(l[a++])}}else{let l=i.length;r=Array(l+l/3),s=0;for(let c=0,p=0;p<r.length;)r[p++]=3,s++,r[p++]=i[c++],r[p++]=i[c++],r[p++]=i[c++]}return{positions:o,faceIndices:r,nFaces:s}}function lm(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=he._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(he.HEAPU32.buffer,i,t):new Float32Array(he.HEAPF32.buffer,i,t)).set(n,0),i}function cm(n){switch(n){case 0:return he.OP.UNION;case 1:return he.OP.INTERSECTION;case 2:return he.OP.A_MINUS_B;case 3:return he.OP.B_MINUS_A;case 4:return he.OP.SYMMETRIC_DIFFERENCE;case 5:return he.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function kw(n,t){gn===void 0&&(gn=he.init_csg());let e=lm(n),r=he.csg_calc_topological(gn,e,n.length,cm(t));he._free(e);let o=6,i=he.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),l=0,c=he.HEAPU32[i[l]>>2],p=new Float32Array(he.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=he.HEAPU32[i[l]>>2],u=new Uint32Array(he.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let d=he.HEAPU32[i[l]>>2],f=new Uint8Array(he.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return he.free_mesh_data(r),{positions:p,indices:u,verticesPerFace:f}}function Hw(n,t,e,r){gn===void 0&&(gn=he.init_csg());let o=lm(n),i=he.csg_calc(gn,o,n.length,r,cm(t));he._free(o);let s=5,l=he.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),p=0,a=he.HEAPU32[l[p]>>2],u=he.HEAPF32.subarray(a>>2,(a>>2)+c[p]);p++;let d=he.HEAPU32[l[p]>>2],f=he.HEAPF32.subarray(d>>2,(d>>2)+c[p]);p++;let m=c[p];e.setAttribute("position",new am(u,3)),e.setAttribute("normal",new am(f,3));let h=he.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Uw),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},he.free_mesh_data(i),m}function Ww(n,t,e){if(he===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((v,x)=>v+x,0)+i);for(let v=0,x=0,w=0;v<g.verticesPerFace.length;v++){o[w++]=g.verticesPerFace[v];for(let S=0;S<g.verticesPerFace[v];S++)o[w++]=g.indices[x++]}}else({positions:r,faceIndices:o,nFaces:i}=jw(n,t,e));let s=r.length,l=o.length,c=r.length,p=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,d=p*Uint32Array.BYTES_PER_ELEMENT,f=he._malloc(a),m=new Float32Array(he.HEAPF32.buffer,f,c),h=new Uint32Array(he.HEAPU32.buffer,f+u,p);return m.set(r,0),h.set(o,0),he.get_csg_mesh(f,s,f+u,l,i)}function qw(n,t){he.transform_csg_mesh(n,t.elements)}function $w(n){he.free_csg_mesh(n)}var tc={ConeGeometry:gf,CubeGeometry:yf,CylinderGeometry:hf,DodecahedronGeometry:xf,EllipseGeometry:Af,HelixGeometry:Cf,IcosahedronGeometry:Lf,LatheGeometry:Mf,NonParametricGeometry:zf,PolygonGeometry:Uf,PyramidGeometry:jf,RectangleGeometry:kf,SphereGeometry:Hf,PlaneGeometry:Wf,BackdropGeometry:qf,StarGeometry:$f,TextFrameGeometry:Xf,TorusGeometry:Yf,TorusKnotGeometry:Kf,TriangleGeometry:Qf,VectorGeometry:Je},di=n=>tc[n.type].create(n);import{Matrix4 as ym}from"three";import{Object3D as Kw,Matrix4 as Qw}from"three";import{HemisphereLight as um}from"three";function Xe(n,t){return t.color(n)}var rc=n=>"isEntity"in n,nr=n=>"isAbstractMesh"in n,ir=n=>n!==null&&n.objectType==="BooleanObject",pm=n=>n.objectType==="CombinedCamera";var ha=n=>"objectHelper"in n;function Xw(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??Dr.identity)),e&&(n.updateMatrix(),ir(n.parent)&&nr(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 Yw(n,t){Xw(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.visible=t.visible)}function dm(n,t,e){Yw(n,t),t.color!==void 0&&(n.color=Xe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof um)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof um)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0)}function fm(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 ga=n=>class extends n{hasEntityChild(){return this.children.some(e=>rc(e))}isDescendantOf(e){e instanceof Kw&&(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 Qw().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),rc(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}};import{Box3 as hm,Line3 as Zw,Matrix4 as oc,Vector3 as Mt}from"three";var yn=new hm,Lt=new Mt,sr=new Mt,xn=new oc,gm=[new Mt(-1,1,1),new Mt(-1,-1,1),new Mt(1,-1,1),new Mt(1,1,1),new Mt(-1,1,-1),new Mt(-1,-1,-1),new Mt(1,-1,-1),new Mt(1,1,-1)],Jw=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],e1=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function t1(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,l=-1/0,c=-1/0,p=-1/0;for(let a=e;a<r;a++){let u=t.getX(a),d=t.getY(a),f=t.getZ(a);u<o&&(o=u),d<i&&(i=d),f<s&&(s=f),u>l&&(l=u),d>c&&(c=d),f>p&&(p=f)}return n.min.set(o,i,s),n.max.set(l,c,p),n}var mm=(n,t,e)=>{if(nr(n)){let r=n.geometry.userData.parameters,o=n.geometry.getAttribute("position"),i=n.geometry.userData.type;i==="SubdivGeometry"?Lt.copy(n.originalGeometry.boundingSphere.center):i==="TextGeometry"||Mo.is2DParametricMesh(i)?Lt.set(0,0,r.depth*.5):i==="ConeGeometry"||i==="CubeGeometry"||i==="CylinderGeometry"||i==="DodecahedronGeometry"||i==="HelixGeometry"||i==="IcosahedronGeometry"||i==="PyramidGeometry"||i==="SphereGeometry"||i==="PlaneGeometry"||i==="BackdropGeometry"||i==="TorusGeometry"||i==="TorusKnotGeometry"?Lt.set(0,0,0):o!==void 0&&(t1(yn,o,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:o.count),yn.getCenter(Lt)),n.forceComputeSize?yn.getSize(sr).multiplyScalar(.5):sr.set(r.width,r.height,r.depth??0).multiplyScalar(.5)}else if(ha(n)&&n.objectHelper.visible){let r=n.geometryHelper.getAttribute("position");yn.setFromArray(r.array),yn.getCenter(Lt),yn.getSize(sr).multiplyScalar(.5)}else Lt.setScalar(0),sr.setScalar(0);xn.copy(t).multiply(n.matrixWorld),sr.x===0&&sr.y===0&&sr.z===0?e.push(new Mt(Lt.x,Lt.y,Lt.z).applyMatrix4(xn)):gm.forEach(r=>{e.push(r.clone().multiply(sr).add(Lt).applyMatrix4(xn))})},fi=class extends hm{constructor(){super(...arguments);this.matrix=new oc;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 oc().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&&mm(s,r,i)}):mm(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(xn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(sr).multiplyScalar(.5),this.getCenter(Lt),xn.copy(this.matrix).setPosition(Lt),this.vertices=gm.map(e=>e.clone().multiply(sr).applyMatrix4(xn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Jw.map(([e,r])=>new Zw(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new Mt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=e1.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var ar=n=>"isEntity"in n,xm=n=>"isAbstractMesh"in n,Et=n=>class extends ga(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new ym;this._singleBBox=new fi;this._recursiveBBox=new fi;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1;this.currentState=null;this.currentTransitionAction=null}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=>{ar(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)ar(o)&&o.traverseEntity(r)}traverseVisibleEntity(r){r(this);for(let o of this.children)ar(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.dispatchEvent({type:"updateMatrix"})}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)ar(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new ym,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)ar(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 Zo(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 Zo(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visible=r.visible),this.fromObjectTransformState(r),this}};import{NormalBlending as W1,ShaderMaterial as q1}from"three";import{CubeReflectionMapping as f1,CubeRefractionMapping as m1,CubeUVReflectionMapping as h1,LinearEncoding as wm,sRGBEncoding as g1}from"three";var mi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as r1}from"three";var Ye=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=r1.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 Ye&&(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 nc=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}},je=new nc;import{Vector2 as vm}from"three";import{MathUtils as o1}from"three";var le=class extends Ye{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=o1.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 Oe=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 Ke=class extends Oe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof vm?e:new vm(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as bm}from"three";var et=class extends Oe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof bm?e:new bm(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)}};import{Color as n1}from"three";var ke=class extends n1{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 Bt=class extends Oe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ke?e:new ke(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 i1=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Sm=/[a-z_0-9]+/gi,$=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=Sm.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let d=a[u],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&je.containsKeyword(f)){let g=this.keywords[f];if(!g){let v=je.getKeywordData(f);v.cache&&(g=e.keywords[f]),g=g||je.getKeyword(f,e),v.cache&&(e.keywords[f]=g)}h=g.build(e)}f!==h&&p[d.index+c-1]!=="."&&(p=p.substring(0,d.index+c)+h+p.substring(d.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&je.contains(h)&&e.include(je.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=i1.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Sm);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 s1=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,ic=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||ic.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=s1.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)}},xe=ic;xe.PI="PI",xe.PI2="PI2",xe.RECIPROCAL_PI="RECIPROCAL_PI",xe.RECIPROCAL_PI2="RECIPROCAL_PI2",xe.LOG2="LOG2",xe.EPSILON="EPSILON";var a1=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
-
)*?)}`,"gim"),
|
|
5
|
-
`)),sRGBToLinear:new
|
|
6
|
-
`)),LinearTosRGB:new
|
|
7
|
-
`))},
|
|
3
|
+
`&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}import{BufferGeometry as th,BufferAttribute as rh,Uint32BufferAttribute as Nc,Float32BufferAttribute as Ic,Matrix4 as c_,Vector3 as Va}from"three";import{BufferGeometryLoader as a_}from"three";function Ga(n,t){return l_(n)}function l_(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=ve.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 a_().parse(n));let e;try{e=Ei(t)}catch(r){console.error(r)}if(!e){let r=ve.createFromState(Ho.defaultData(),100,100);t.shape=r,e=Ei(t)}return e}var ue;yn.then(n=>{ue=n});var oh=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),nh=new Uint32Array([0,1,2,3]),ih=new Uint8Array([4]),Vt=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&&(ue.free_bvh(e),ue.free_subdivision_surface(e));try{i=Vt.allocate(n,o)}catch(u){console.error(u,n),i=Vt.allocate({positionWASM:oh,indexWASM:nh,verticesPerFaceWASM:ih},o)}ue.set_destination_refinement_level(i,0),s=Vt.buildLevel(i,!0,c)}else i=e,n.phongAngle!==void 0&&(s=Vt.buildLevel(i,!0,c));return n.subdivisions!==void 0&&(ue.set_destination_refinement_level(i,n.subdivisions),n.subdivisions>0?l=Vt.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:Ga(n),r,o,i,s;({positions:r,triIndices:s}=Mc(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,u=c+n.radialSegments*3;l=[c,u]}return{indices:o,verticesPerFace:i}=Lc(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=oh,r=nh,o=ih);let l=e.length,c=r.length,u=o.length,a=e.length+i.length+s.length,p=r.length+o.length,d=a*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,f=a*Float32Array.BYTES_PER_ELEMENT,m=p*Uint32Array.BYTES_PER_ELEMENT,h=ue._malloc(d),g=new Float32Array(ue.HEAPF32.buffer,h,a),b=new Uint32Array(ue.HEAPU32.buffer,h+f,p);g.set(e,0),g.set(i,e.length),g.set(s,e.length+i.length),b.set(r,0),b.set(o,r.length);let x;n?.scaleBaked?.some(w=>w!==1)&&(x=new c_().makeScale(...n.scaleBaked)),t&&(x?x.premultiply(t):x=t);let S=x?ue.alloc_subdivision_surface2(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,u,x.elements):ue.alloc_subdivision_surface(h,l,h+f,c,h+f+r.length*Uint32Array.BYTES_PER_ELEMENT,u);return ue._free(h),S}static buildLevel(n,t,e,r,o){let i=o?ue.get_mesh_data2(n,t?ue.Level.CONTROL:ue.Level.REFINED,e,o.elements):ue.get_mesh_data(n,t?ue.Level.CONTROL:ue.Level.REFINED,e),s=8,l=ue.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(4,4+4),u=0,a=ue.HEAPU32[l[u]>>2],p=ue.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let d=ue.HEAPU32[l[u]>>2],f=ue.HEAPF32.subarray(d>>2,(d>>2)+c[u]);u++;let m=ue.HEAPU32[l[u]>>2],h=ue.HEAPU32.subarray(m>>2,(m>>2)+c[u]);u++;let g=ue.HEAPU32[l[u]>>2],b=ue.HEAPU32.subarray(g>>2,(g>>2)+c[u]);if(u++,r===void 0){let x=new th;if(x.setIndex(new Nc(b,1)),x.setAttribute("position",new Ic(p,3)),x.setAttribute("normal",new Ic(f,3)),t){x.setAttribute("faceMap",new Nc(h,1));let S=new Float32Array(f.length/3*4).fill(0);x.setAttribute("color",new rh(S,4))}return ue.free_mesh_data(i),x.userData.type="SubdivGeometry",x}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(f),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,ue.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=ue.get_wireframe_data_for_base_level(n),o=4,i=ue.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),l=0,c=ue.HEAPU32[i[l]>>2],u=ue.HEAPF32.subarray(c>>2,(c>>2)+s[l]);l++;let a=ue.HEAPU32[i[l]>>2],p=ue.HEAPU32.subarray(a>>2,(a>>2)+s[l]);if(t===void 0){let d=new th;d.setAttribute("position",new Ic(u,3));let f=new Float32Array(u.length);for(let m=0,h=u.length;m<h;)f[m++]=e.r,f[m++]=e.g,f[m++]=e.b;return d.setAttribute("color",new rh(f,3)),d.setIndex(new Nc(p,1)),ue.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(u),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){let r=t===0;r||ue.set_destination_refinement_level(n,t);let o=e?ue.get_topological_data2(n,r?ue.Level.CONTROL:ue.Level.REFINED,e.elements):ue.get_topological_data(n,r?ue.Level.CONTROL:ue.Level.REFINED),i=6,s=ue.HEAPU32.subarray(o>>2,(o>>2)+i),l=s.subarray(3,3+3),c=0,u=ue.HEAPU32[s[c]>>2],a=new Float32Array(ue.HEAPF32.subarray(u>>2,(u>>2)+l[c]));c++;let p=ue.HEAPU32[s[c]>>2],d=new Uint32Array(ue.HEAPU32.subarray(p>>2,(p>>2)+l[c]));c++;let f=ue.HEAPU32[s[c]>>2],m=new Uint8Array(ue.HEAPU32.subarray(f>>2,(f>>2)+l[c]));return ue.free_topological_data(o),{positions:a,indices:d,verticesPerFace:m}}};var sh=["getX","getY","getZ"];function Mc(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],l=1e4;for(let u=0;u<r;u++){let a=t?t.getX(u):u,p="";for(let d=0;d<3;d++)p+=`${~~(n[sh[d]](a)*l)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)s.push(n[sh[d]](a));e[p]=o,i.push(o),o++}}let c=[];for(let u=0;u<i.length;u+=3)i[u]===i[u+1]||i[u]===i[u+2]||i[u+1]===i[u+2]||c.push(i[u],i[u+1],i[u+2]);return{positions:s,triIndices:c}}var Ra=new Va,Pc=new Va,Oc=new Va,Cc=new Va;function Lc(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=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&l<=24&&l%4===0&&e.userData.parameters.angle>=360){let a=s.length/2/l;s=s.filter((p,d)=>Math.floor(d/2)%a===0)}let c=0;for(let a=0;a<s.length;a+=2)c+=(s[a]-s[(a===0?s.length:a)-2])*(s[a+1]+s[(a===0?s.length:a)-1]);n.length=0;let u=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(u++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(u++);return i.push(u),{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]){Ra.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),Pc.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),Oc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),Cc.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),Pc.sub(Ra).normalize(),Oc.sub(Ra).normalize(),Cc.sub(Ra).normalize();let c=Pc.cross(Oc).dot(Cc);Math.abs(c)>.005||r&&r.some((u,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,u=new Float32Array([e.userData.parameters.depth])[0];for(let a=0,p=0;a<n.length;a+=3,p++)n[a+2]===0&&(s.push(p),c++),n[a+2]===u&&l.push(p);if(e.userData.parameters.extrudeBevelSize===0){let a=l[0];l[0]=l[1],l[1]=a}s.reverse(),o.push(...s,...l),i.push(c,c)}return{indices:o,verticesPerFace:i}}var qt={};Bg(qt,{calcBoolean:()=>m_,calcBooleanTopological:()=>f_,freeMeshSet:()=>y_,getMeshSet:()=>h_,transformMeshSet:()=>g_});var u_,ah=new Promise(n=>{u_=n});import{Float32BufferAttribute as lh,Sphere as p_}from"three";var ge,Bn;ah.then(n=>ge=n);function d_(n,t,e){let r,{positions:o,triIndices:i}=Mc(n.getAttribute("position"),n.getIndex()),s;if(t&&e){let{indices:l,verticesPerFace:c}=Lc(o,i,n);s=c.length,r=[];for(let u=0,a=0;u<s;u++){r.push(c[u]);for(let p=0;p<c[u];p++)r.push(l[a++])}}else{let l=i.length;r=Array(l+l/3),s=0;for(let c=0,u=0;u<r.length;)r[u++]=3,s++,r[u++]=i[c++],r[u++]=i[c++],r[u++]=i[c++]}return{positions:o,faceIndices:r,nFaces:s}}function ch(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=ge._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ge.HEAPU32.buffer,i,t):new Float32Array(ge.HEAPF32.buffer,i,t)).set(n,0),i}function uh(n){switch(n){case 0:return ge.OP.UNION;case 1:return ge.OP.INTERSECTION;case 2:return ge.OP.A_MINUS_B;case 3:return ge.OP.B_MINUS_A;case 4:return ge.OP.SYMMETRIC_DIFFERENCE;case 5:return ge.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function f_(n,t){Bn===void 0&&(Bn=ge.init_csg());let e=ch(n),r=ge.csg_calc_topological(Bn,e,n.length,uh(t));ge._free(e);let o=6,i=ge.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),l=0,c=ge.HEAPU32[i[l]>>2],u=new Float32Array(ge.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ge.HEAPU32[i[l]>>2],p=new Uint32Array(ge.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let d=ge.HEAPU32[i[l]>>2],f=new Uint8Array(ge.HEAPU32.subarray(d>>2,(d>>2)+s[l]));return ge.free_mesh_data(r),{positions:u,indices:p,verticesPerFace:f}}function m_(n,t,e,r){Bn===void 0&&(Bn=ge.init_csg());let o=ch(n),i=ge.csg_calc(Bn,o,n.length,r,uh(t));ge._free(o);let s=5,l=ge.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),u=0,a=ge.HEAPU32[l[u]>>2],p=ge.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let d=ge.HEAPU32[l[u]>>2],f=ge.HEAPF32.subarray(d>>2,(d>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new lh(p,3)),e.setAttribute("normal",new lh(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new p_),e.boundingSphere.center.set(h[0],h[1],h[2]),e.boundingSphere.radius=(h[3]**2+h[4]**2+h[5]**2)**.5,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},ge.free_mesh_data(i),m}function h_(n,t,e){if(ge===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let g=n.userData;i=g.verticesPerFace.length,r=g.positions,o=Array(g.verticesPerFace.reduce((b,x)=>b+x,0)+i);for(let b=0,x=0,S=0;b<g.verticesPerFace.length;b++){o[S++]=g.verticesPerFace[b];for(let w=0;w<g.verticesPerFace[b];w++)o[S++]=g.indices[x++]}}else({positions:r,faceIndices:o,nFaces:i}=d_(n,t,e));let s=r.length,l=o.length,c=r.length,u=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,p=c*Float32Array.BYTES_PER_ELEMENT,d=u*Uint32Array.BYTES_PER_ELEMENT,f=ge._malloc(a),m=new Float32Array(ge.HEAPF32.buffer,f,c),h=new Uint32Array(ge.HEAPU32.buffer,f+p,u);return m.set(r,0),h.set(o,0),ge.get_csg_mesh(f,s,f+p,l,i)}function g_(n,t){ge.transform_csg_mesh(n,t.elements)}function y_(n){ge.free_csg_mesh(n)}var Ec={ConeGeometry:ym,CubeGeometry:xm,CylinderGeometry:gm,DodecahedronGeometry:bm,EllipseGeometry:Nm,HelixGeometry:Mm,IcosahedronGeometry:Lm,LatheGeometry:Em,NonParametricGeometry:jm,PolygonGeometry:Um,PyramidGeometry:km,RectangleGeometry:Hm,SphereGeometry:Wm,PlaneGeometry:qm,BackdropGeometry:$m,StarGeometry:Ym,TextFrameGeometry:Xm,TorusGeometry:Km,TorusKnotGeometry:Zm,TriangleGeometry:Qm,VectorGeometry:et},Ei=n=>Ec[n.type].create(n);import{NormalBlending as aT,ShaderMaterial as lT}from"three";import{CubeReflectionMapping as O_,CubeRefractionMapping as C_,CubeUVReflectionMapping as M_,LinearEncoding as mh,sRGBEncoding as L_}from"three";var Bi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as x_}from"three";var Ze=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=x_.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 Ze&&(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 Bc=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},He=new Bc;import{Vector2 as ph}from"three";import{MathUtils as b_}from"three";var le=class extends Ze{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=b_.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 u=this.getTemp(e,o);if(u)return e.format(u,c,r);{u=super.generate(e,r,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(u+" = "+a+";"),e.format(u,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 Ce=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 Qe=class extends Ce{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof ph?e:new ph(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};import{Vector3 as dh}from"three";var tt=class extends Ce{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof dh?e:new dh(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)}};import{Color as v_}from"three";var We=class extends v_{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 Ft=class extends Ce{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof We?e:new We(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var S_=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,fh=/[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,u=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let a=[];for(;l=fh.exec(this.src);)a.push(l);for(let p=0;p<a.length;p++){let d=a[p],f=d[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&He.containsKeyword(f)){let g=this.keywords[f];if(!g){let b=He.getKeywordData(f);b.cache&&(g=e.keywords[f]),g=g||He.getKeyword(f,e),b.cache&&(e.keywords[f]=g)}h=g.build(e)}f!==h&&u[d.index+c-1]!=="."&&(u=u.substring(0,d.index+c)+h+u.substring(d.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&He.contains(h)&&e.include(He.get(h))}return r==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=S_.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(fh);if(l){let c=0;for(;c<l.length;){let u=l[c++],a;u==="in"||u==="out"||u==="inout"?a=l[c++]:(a=u,u="");let p=l[c++];this.inputs.push({name:p,type:a,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var w_=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Dc=class extends le{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Dc.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,u="",a=w_.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],u=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=u}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)}},be=Dc;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var __=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
+
)*?)}`,"gim"),T_=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=__.exec(e);if(r){let o=r[2],i;for(;i=T_.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Gn=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)}};He.addKeyword("uv",function(){return new Gn});He.addKeyword("uv2",function(){return new Gn(1)});import{LinearEncoding as A_,sRGBEncoding as N_}from"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 A_:return["Linear"];case N_: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]}},ut=No;ut.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
5
|
+
`)),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(`
|
|
6
|
+
`)),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(`
|
|
7
|
+
`))},ut.LINEAR_TO_LINEAR="LinearToLinear",ut.SRGB_TO_LINEAR="sRGBToLinear",ut.LINEAR_TO_SRGB="LinearTosRGB";var we=class extends X{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as I_}from"three";var yt=class extends Ce{constructor(e=new I_,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Gn,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 u={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(u),this.colorSpace=this.colorSpace??new ut(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 Z=class extends Ce{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 Di=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)+"( ",u=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let p=l.inputs[a],d=this.inputs[a]||this.inputs[p.name];u.push(d.build(e,e.getTypeByFormat(p.type)))}c+=u.join(", ")+" )"}return e.format(c,i,r)}};var Gc=class extends le{constructor(e,r,o=Gc.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)}},xt=Gc;xt.ADD="+",xt.SUB="-",xt.MUL="*",xt.DIV="/";var Ie=class extends le{constructor(e,r=Ie.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 Ie.MIX:case Ie.CLAMP:case Ie.REFRACT:case Ie.SMOOTHSTEP:case Ie.FACEFORWARD:return 3;case Ie.MIN:case Ie.MAX:case Ie.MOD:case Ie.STEP:case Ie.REFLECT:case Ie.DISTANCE:case Ie.DOT:case Ie.CROSS:case Ie.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 Ie.LENGTH:case Ie.DISTANCE:case Ie.DOT:return"f";case Ie.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,u=this.c?e.getTypeLength(this.c.getType(e)):0,a=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Ie.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,r);case Ie.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,r);case Ie.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ie.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Ie.MIN:case Ie.MAX:case Ie.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Ie.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Ie.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,u===1?"f":a);break;default:o=this.a.build(e,a),this.b&&(i=this.b.build(e,a)),this.c&&(s=this.c.build(e,a));break}let d=[];d.push(o),i&&d.push(i),s&&d.push(s);let f=this.getNumInputs(e);if(d.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",p,r)}},de=Ie;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var Rn=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 Di(Rn.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new ut(new we("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new ut(new we("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new ut(new we("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new ut(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 Di(Rn.Nodes.roughnessToMip,[i]),l=new de(s,Rn.Nodes.m0,Rn.Nodes.cubeUV_maxMipLevel,de.CLAMP),c=new de(l,de.FLOOR),u=new de(l,de.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),p=this.bilinearCubeUV(e,this.value,o,new xt(c,new Z(1).setReadonly(!0),xt.ADD)),d=new de(a,p,u,de.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},Vn=Rn;Vn.Nodes=function(){let e=new Dn(`struct TextureCubeUVData {
|
|
8
8
|
vec4 tl;
|
|
9
9
|
vec4 tr;
|
|
10
10
|
vec4 br;
|
|
11
11
|
vec4 bl;
|
|
12
12
|
vec2 f;
|
|
13
|
-
}`),r=new
|
|
13
|
+
}`),r=new be("float cubeUV_maxMipLevel 8.0",!0),o=new be("float cubeUV_minMipLevel 4.0",!0),i=new be("float cubeUV_maxTileSize 256.0",!0),s=new be("float cubeUV_minTileSize 16.0",!0),l=new X(`float getFace(vec3 direction) {
|
|
14
14
|
vec3 absDirection = abs(direction);
|
|
15
15
|
float face = -1.0;
|
|
16
16
|
if (absDirection.x > absDirection.z) {
|
|
@@ -25,7 +25,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
25
25
|
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
26
26
|
}
|
|
27
27
|
return face;
|
|
28
|
-
}`);l.useKeywords=!1;let c=new
|
|
28
|
+
}`);l.useKeywords=!1;let c=new X(`vec2 getUV(vec3 direction, float face) {
|
|
29
29
|
vec2 uv;
|
|
30
30
|
if (face == 0.0) {
|
|
31
31
|
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
@@ -41,7 +41,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
41
41
|
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
42
42
|
}
|
|
43
43
|
return 0.5 * (uv + 1.0);
|
|
44
|
-
}`);c.useKeywords=!1;let
|
|
44
|
+
}`);c.useKeywords=!1;let u=new X(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
45
45
|
float face = getFace(direction);
|
|
46
46
|
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
47
47
|
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
@@ -69,7 +69,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
69
69
|
uv.x -= texelSize;
|
|
70
70
|
vec4 bl = texture2D(envMap, uv);
|
|
71
71
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
72
|
-
}`,[e,l,c,r,o,i,s]);
|
|
72
|
+
}`,[e,l,c,r,o,i,s]);u.useKeywords=!1;let a=new be("float r0 1.0",!0),p=new be("float v0 0.339",!0),d=new be("float m0 -2.0",!0),f=new be("float r1 0.8",!0),m=new be("float v1 0.276",!0),h=new be("float m1 -1.0",!0),g=new be("float r4 0.4",!0),b=new be("float v4 0.046",!0),x=new be("float m4 2.0",!0),S=new be("float r5 0.305",!0),w=new be("float v5 0.016",!0),v=new be("float m5 3.0",!0),N=new be("float r6 0.21",!0),_=new be("float v6 0.0038",!0),y=new be("float m6 4.0",!0),I=[a,p,d,f,m,h,g,b,x,S,w,v,N,_,y],A=new X(`float roughnessToMip(float roughness) {
|
|
73
73
|
float mip = 0.0;
|
|
74
74
|
if (roughness >= r1) {
|
|
75
75
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -83,7 +83,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
83
83
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
84
84
|
}
|
|
85
85
|
return mip;
|
|
86
|
-
}`,
|
|
86
|
+
}`,I);return{bilinearCubeUV:u,roughnessToMip:A,m0:d,cubeUV_maxMipLevel:r}}();var Io=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Io.VIEW}getShared(){return this.scope===Io.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 Io.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Io.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Io.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),r)}},Je=Io;Je.LOCAL="local",Je.WORLD="world",Je.VIEW="view",Je.NORMAL="normal";He.addKeyword("viewNormal",function(){return new Je(Je.VIEW)});He.addKeyword("localNormal",function(){return new Je(Je.NORMAL)});He.addKeyword("worldNormal",function(){return new Je(Je.WORLD)});var gr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??gr.LOCAL}getType(){switch(this.scope){case gr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case gr.LOCAL:case gr.WORLD:return!1}return!0}generate(e,r,o,i,s){let l;switch(this.scope){case gr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case gr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case gr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case gr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),r)}},bt=gr;bt.LOCAL="local",bt.WORLD="world",bt.VIEW="view",bt.PROJECTION="projection";He.addKeyword("position",function(){return new bt});He.addKeyword("worldPosition",function(){return new bt(bt.WORLD)});He.addKeyword("viewPosition",function(){return new bt(bt.VIEW)});var $t=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??$t.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case $t.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case $t.VECTOR:{let s=new Je(Je.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new bt(bt.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,p=`reflect( -normalize( ${u} ), ${c} )`;a&&(p=`normalize( mix( ${p}, ${c}, ${a} * ${a} ) )`);let d=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case $t.CUBE:{let s=new $t($t.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case $t.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new $t($t.VECTOR).build(e,"v3")+", 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)}},yr=$t;yr.CUBE="cube",yr.SPHERE="sphere",yr.VECTOR="vector";var Fa=class extends le{constructor(e=new yt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Vn(this.value,r??new yr(yr.VECTOR),o),this.irradianceNode=new Vn(this.value,new Je(Je.WORLD),new Z(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};import{CubeTexture as P_}from"three";var za=class extends Ce{constructor(e=new P_,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new yr,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},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new ut(new we("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,r)}};var hh=["x","y","z","w"],E_=["float","vec2","vec3","vec4"],B_={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},D_={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[]"},ja=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+`
|
|
87
87
|
`);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",`
|
|
88
88
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
89
89
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -125,10 +125,10 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
125
125
|
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
126
126
|
`}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+`
|
|
127
127
|
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
128
|
-
`}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
|
|
129
|
-
`)}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,
|
|
128
|
+
`}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 u=l.length;c={name:r||"node"+i+u+(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(`
|
|
129
|
+
`)}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,u=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+`[${u}];
|
|
130
130
|
`:r+=e+" "+a+" "+c+`;
|
|
131
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof
|
|
131
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Ze?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,u=new Bi({type:e,size:r.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(u),l[t].push(u),l[t][u.name]=u,this.uniforms[u.name]=u,u}else{let l=this.inputs.uniforms,c=l.list.length,u=new Bi({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:r,needsUpdate:i});return l.list.push(u),l[t].push(u),l[t][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?He.get(t):t,this.context.include===!1)return t.name;t instanceof X?o=this.includes.functions:t instanceof be?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 E_[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 O_:case C_:return new za(r);case M_:return new Fa(new yt(r));default:return new yt(r)}else{if(r.isVector2)return new Qe(r);if(r.isVector3)return new tt(r);if(r.isVector4)return new Ft(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 B_[t]||t}getFormatByType(t){return D_[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return hh[t]}getIndexByElement(t){return hh.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=mh,e===mh&&this.context.gamma&&(e=L_),e}};import{Vector2 as Co,Vector3 as vr,Vector4 as Un}from"three";var Te=class extends Ce{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof We?e:new We(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),u=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return u?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 xe=class extends Ce{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,s,l){return e.format(this.value.toString(),i,r)}};import{UniformsLib as G_,UniformsUtils as R_}from"three";var Po=class extends Ze{constructor(){super("basic");this.nodeType="Basic";this.color=new Te(5855577),this.shadingAlpha=new Z(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(R_.merge([G_.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
132
132
|
`));let i=["#include <beginnormal_vertex>",`
|
|
133
133
|
#if !defined( USE_LAYER_DISPLACE )
|
|
134
134
|
#include <defaultnormal_vertex>
|
|
@@ -146,9 +146,9 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
146
146
|
#include <begin_vertex>
|
|
147
147
|
#endif /* !USE_LAYER_DISPLACE */
|
|
148
148
|
`];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(`
|
|
149
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
149
|
+
`)}else{this.color===void 0&&(this.color=new Te(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(`
|
|
150
150
|
`));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(`
|
|
151
|
-
`)}return r}};import{UniformsLib as
|
|
151
|
+
`)}return r}};import{UniformsLib as xh,UniformsUtils as z_}from"three";var ao=class extends Ce{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};import{Matrix3 as V_}from"three";var Fn=class extends Ce{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new V_}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 Yt=class extends Ce{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};import{Vector4 as gh}from"three";var Xt=class extends Ce{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof gh?new Array(e).fill(r):new Array(e).fill(new gh(0))}};var Gi=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(Gi||{}),st=function(){let t=new X(`vec3 random3(vec3 c) {
|
|
152
152
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
153
153
|
vec3 r;
|
|
154
154
|
r.z = fract(512.0*j);
|
|
@@ -157,7 +157,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
157
157
|
j *= .125;
|
|
158
158
|
r.y = fract(512.0*j);
|
|
159
159
|
return r-0.5;
|
|
160
|
-
}`),e=new
|
|
160
|
+
}`),e=new X(`float simplex3d(vec3 p) {
|
|
161
161
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
162
162
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
163
163
|
|
|
@@ -188,7 +188,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
188
188
|
d *= w;
|
|
189
189
|
|
|
190
190
|
return dot(d, vec4(52.0));
|
|
191
|
-
}`,[t]);e.keywords.F3=new
|
|
191
|
+
}`,[t]);e.keywords.F3=new be("float F3 0.3333333"),e.keywords.G3=new be("float G3 0.1666667");let r=new X(`float simplex3dFractal(vec3 m) {
|
|
192
192
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
193
193
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
194
194
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -196,7 +196,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
196
196
|
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
197
197
|
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
198
198
|
+ 0.0666667 * simplex3d(8.0 * m);
|
|
199
|
-
}`,[e]),o=new
|
|
199
|
+
}`,[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) {
|
|
200
200
|
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
201
201
|
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
202
202
|
vec3 i = floor(v + dot(v, C.yyy) );
|
|
@@ -241,7 +241,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
241
241
|
m = m * m;
|
|
242
242
|
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
243
243
|
dot(p2,x2), dot(p3,x3) ) );
|
|
244
|
-
}`,[o,i]),l=new
|
|
244
|
+
}`,[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]),u=new X(`float noise(vec3 p){
|
|
245
245
|
vec3 a = floor(p);
|
|
246
246
|
vec3 d = p - a;
|
|
247
247
|
d = d * d * (3.0 - 2.0 * d);
|
|
@@ -256,7 +256,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
256
256
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
257
257
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
258
258
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
259
|
-
}`,[c]),a=new
|
|
259
|
+
}`,[c]),a=new X(`float fbm(vec3 x) {
|
|
260
260
|
float v = 0.0;
|
|
261
261
|
float a = 0.5;
|
|
262
262
|
vec3 shift = vec3(100);
|
|
@@ -266,7 +266,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
266
266
|
a *= 0.5;
|
|
267
267
|
}
|
|
268
268
|
return v;
|
|
269
|
-
}`,[
|
|
269
|
+
}`,[u]);a.keywords.NUM_OCTAVES=new be(`int NUM_OCTAVES ${5}`);let p=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){
|
|
270
270
|
vec3 Pi0 = floor(P);
|
|
271
271
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
272
272
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -325,7 +325,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
325
325
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
326
326
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
327
327
|
return 2.2 * n_xyz;
|
|
328
|
-
}`,[o,i,
|
|
328
|
+
}`,[o,i,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:a,perlin:d}}();var Ri=class extends le{constructor(e,r,o,i,s,l,c,u,a,p,d,f){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=u,this.colorC=a,this.colorD=p,this.alpha=d,this.noiseType=f,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(Gi)[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) {
|
|
329
329
|
vec3 st = position / size;
|
|
330
330
|
st /= scale;
|
|
331
331
|
vec3 q = vec3(${l}(st),
|
|
@@ -345,7 +345,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
345
345
|
|
|
346
346
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
347
347
|
return clamp(color, 0.0, 1.0).rgb;
|
|
348
|
-
}`,[
|
|
348
|
+
}`,[st.simplex,st.simplexFractal,st.simplexAshima,st.fbm,st.perlin]),u=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(u+"("+a.join(",")+")",this.getType(e),r)}};Ri.numOctaves=5;import{UniformsLib as yh,UniformsUtils as F_}from"three";var Ua=class extends Ze{constructor(){super("phong");this.nodeType="Phong";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new Z(30),this.shadingAlpha=new Z(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(F_.merge([yh.fog,yh.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(`
|
|
349
349
|
`));let i=["#include <beginnormal_vertex>",`
|
|
350
350
|
#ifndef USE_LAYER_DISPLACE
|
|
351
351
|
#include <defaultnormal_vertex>
|
|
@@ -364,8 +364,8 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
364
364
|
#include <begin_vertex>
|
|
365
365
|
#endif
|
|
366
366
|
`];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(`
|
|
367
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
368
|
-
`));let
|
|
367
|
+
`)}else{e.mergeUniform({penumbraSize:rt.penumbraSize}),this.color===void 0&&(this.color=new Te(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"),u=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(`
|
|
368
|
+
`));let p=["#include <normal_fragment_begin>",`
|
|
369
369
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
370
370
|
vec3 viewdx = dFdx(vViewPosition);
|
|
371
371
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -373,21 +373,21 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
373
373
|
if (dot(normal, faceNormal) < 0.0) {
|
|
374
374
|
normal *= -1.0;
|
|
375
375
|
}
|
|
376
|
-
`," BlinnPhongMaterial material;"];
|
|
376
|
+
`," BlinnPhongMaterial material;"];p.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&&p.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),p.push(`
|
|
377
377
|
if (outgoingLight != diffuseColor) {
|
|
378
378
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
379
379
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
380
380
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
381
381
|
}
|
|
382
|
-
`),p
|
|
383
|
-
`)}return r}};var
|
|
382
|
+
`),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
383
|
+
`)}return r}};var Rc=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(Rc.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)}},Vi=Rc;Vi.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) {
|
|
384
384
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
385
385
|
|
|
386
386
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
387
387
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
388
388
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
389
389
|
return color;
|
|
390
|
-
}`)}}();var
|
|
390
|
+
}`)}}();var Vc=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(Vc.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)}},Fi=Vc;Fi.Nodes=function(){let e=new X(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
391
391
|
vec3 st = position / noiseScale;
|
|
392
392
|
vec3 q = vec3(simplex3d(st),
|
|
393
393
|
simplex3d(st + vec3(1.0)),
|
|
@@ -400,7 +400,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
400
400
|
float noise = simplex3d(st + r);
|
|
401
401
|
|
|
402
402
|
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);
|
|
403
|
-
}`,[
|
|
403
|
+
}`,[st.simplex]);return{rainbow:new X(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
404
404
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
405
405
|
|
|
406
406
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -409,7 +409,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
409
409
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
410
410
|
|
|
411
411
|
return res;
|
|
412
|
-
}`,[e])}}();var
|
|
412
|
+
}`,[e])}}();var Fc=class extends le{constructor(e,r,o,i,s,l,c,u,a,p,d,f,m,h,g,b){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=u,this.contourDirection=a,this.positionalLines=p,this.compensation=d,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=g,this.alpha=b,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(`
|
|
413
413
|
vID = randomColor.r;
|
|
414
414
|
if (${s}) {
|
|
415
415
|
vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
@@ -423,7 +423,7 @@ var Rh=Object.create;var Va=Object.defineProperty;var Vh=Object.getOwnPropertyDe
|
|
|
423
423
|
// if this offset is the biggest of all the potential offsets
|
|
424
424
|
gl_Position = ${c}_clipPosition;
|
|
425
425
|
}
|
|
426
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
426
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Fc.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."),""}},zi=Fc;zi.Nodes=function(){let e=new X(`
|
|
427
427
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
428
428
|
{
|
|
429
429
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -524,7 +524,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
524
524
|
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
525
525
|
return edgeNormal;
|
|
526
526
|
}
|
|
527
|
-
`);return{outline:new
|
|
527
|
+
`);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) {
|
|
528
528
|
vec3 result = outlineColor;
|
|
529
529
|
float resultAlpha = 0.0;
|
|
530
530
|
|
|
@@ -563,11 +563,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
563
563
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
564
564
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
565
565
|
return result;
|
|
566
|
-
}`,[e])}}();var
|
|
566
|
+
}`,[e])}}();var zc=class extends le{constructor(e,r,o,i,s,l,c,u){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=u,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(zc.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)}},ji=zc;ji.Nodes=function(){let e=new X(`
|
|
567
567
|
float gaussian(vec2 i) {
|
|
568
568
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
569
569
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
570
|
-
}`),r=new
|
|
570
|
+
}`),r=new X(`
|
|
571
571
|
vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
572
572
|
// Slightly modified version of this:
|
|
573
573
|
// https://www.shadertoy.com/view/ltScRG
|
|
@@ -597,7 +597,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
597
597
|
a += gaussian;
|
|
598
598
|
}
|
|
599
599
|
return O / a;
|
|
600
|
-
}`,[e]),o=new
|
|
600
|
+
}`,[e]),o=new X(`
|
|
601
601
|
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
602
602
|
// Direction of refracted light.
|
|
603
603
|
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
@@ -608,18 +608,18 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
608
608
|
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
609
609
|
// The thickness is specified in local space.
|
|
610
610
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
611
|
-
}`),i=new
|
|
611
|
+
}`),i=new X(`
|
|
612
612
|
float applyIorToRoughness( float roughness, float ior ) {
|
|
613
613
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
614
614
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
615
615
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
616
|
-
} `),s=new
|
|
616
|
+
} `),s=new X(`
|
|
617
617
|
vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
618
618
|
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
619
619
|
float lod = applyIorToRoughness(roughness, ior);
|
|
620
620
|
|
|
621
621
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
622
|
-
}`,[i,r]),l=new
|
|
622
|
+
}`,[i,r]),l=new X(`
|
|
623
623
|
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 ) {
|
|
624
624
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
625
625
|
vec3 refractedRayExit = position + transmissionRay;
|
|
@@ -637,7 +637,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
637
637
|
|
|
638
638
|
// Sample framebuffer to get pixel the refracted ray hits.
|
|
639
639
|
return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
640
|
-
}`,[s,o]);return{transmission:new
|
|
640
|
+
}`,[s,o]);return{transmission:new X(`
|
|
641
641
|
vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
|
|
642
642
|
vec3 v = vec3(0.);
|
|
643
643
|
if (isOrthographic) {
|
|
@@ -651,7 +651,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
651
651
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
652
652
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
653
653
|
return transmission;
|
|
654
|
-
}`,[l])}}();var
|
|
654
|
+
}`,[l])}}();var zn=class extends le{constructor(e,r,o,i,s,l,c,u,a,p,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=u,this.colors=a,this.steps=p,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new X(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
|
|
655
655
|
vec4 color = colors[0];
|
|
656
656
|
#ifdef ${o}_IS_VECTOR
|
|
657
657
|
#ifdef ${o}_LINEAR
|
|
@@ -691,25 +691,25 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
691
691
|
|
|
692
692
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
693
693
|
return color.rgb;
|
|
694
|
-
}`,[
|
|
694
|
+
}`,[zn.Nodes.vectorLinearWorldSpaceDepth,zn.Nodes.vectorLinearObjectSpaceDepth,zn.Nodes.vectorSphericalObjectSpaceDepth,zn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),l=[];return l.push(this.near.build(e,"f")),l.push(this.far.build(e,"f")),l.push(this.origin.build(e,"v3")),l.push(this.direction.build(e,"v3")),l.push(this.colors.build(e,"v4[]")),l.push(this.steps.build(e,"f[]")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ui=zn;Ui.Nodes=function(){let e=new X(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
695
695
|
vec3 n = normalize(direction);
|
|
696
696
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
697
697
|
return ( dist - near ) / ( far - near );
|
|
698
|
-
}`),r=new
|
|
698
|
+
}`),r=new X(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
699
699
|
vec3 n = normalize(direction);
|
|
700
700
|
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
701
701
|
return ( dist - near ) / ( far - near );
|
|
702
|
-
}`),o=new
|
|
702
|
+
}`),o=new X(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
703
703
|
float dist = length(vWPosition - origin);
|
|
704
704
|
return ( dist - near ) / ( far - near );
|
|
705
|
-
}`),i=new
|
|
705
|
+
}`),i=new X(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
706
706
|
float dist = length(position - origin);
|
|
707
707
|
return ( dist - near ) / ( far - near );
|
|
708
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var
|
|
708
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var ki=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 jc=(e=>(e.NOISE="noise",e.MAP="map",e))(jc||{}),Uc=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(jc)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Fn(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(jc)[this.displacementTypeIndex.value]){case"map":{o=e.include(Uc.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(Gi)[this.noiseFunctionIndex.value],c=new X(`vec3 orthogonal(vec3 v) {
|
|
709
709
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
710
|
-
}`),
|
|
710
|
+
}`),u=new X(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
711
711
|
return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
712
|
-
}`,[
|
|
712
|
+
}`,[st.simplex,st.simplexFractal,st.simplexAshima,st.fbm,st.perlin]),a=new X(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
|
|
713
713
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
714
714
|
vec3 tangent1 = orthogonal(normal);
|
|
715
715
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -725,9 +725,9 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
725
725
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
726
726
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
727
727
|
return displaced_position;
|
|
728
|
-
}`,[
|
|
728
|
+
}`,[u,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)}},Hi=Uc;Hi.Nodes=function(){let e=new X(`vec3 orthogonal(vec3 v) {
|
|
729
729
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
730
|
-
}`),r=new
|
|
730
|
+
}`),r=new X(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
731
731
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
732
732
|
vec4 tmp = texture2D(tex, uvs);
|
|
733
733
|
vec3 col = tmp.rgb;
|
|
@@ -737,7 +737,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
737
737
|
}
|
|
738
738
|
}
|
|
739
739
|
return col.r;
|
|
740
|
-
}`);return{map:new
|
|
740
|
+
}`);return{map:new X(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
741
741
|
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
742
742
|
vec3 tangent1 = normalize(orthogonal(normal));
|
|
743
743
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -747,7 +747,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
747
747
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
748
748
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
749
749
|
return displaced_position;
|
|
750
|
-
}`,[e,r])}}();var
|
|
750
|
+
}`,[e,r])}}();var kc=class extends le{constructor(e,r,o,i,s,l,c,u){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=u,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(kc.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)}},Wi=kc;Wi.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) {
|
|
751
751
|
vec4 color = colors[0];
|
|
752
752
|
vec2 m = morph / vUv.xy;
|
|
753
753
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -789,7 +789,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
789
789
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
790
790
|
|
|
791
791
|
return color.xyz;
|
|
792
|
-
}`)}}();var
|
|
792
|
+
}`)}}();var $i=class extends le{constructor(e,r,o,i,s,l,c,u,a,p){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=u,this.alpha=a,this.mode=p,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($i.Nodes.cylindrical);break;case 2:i=e.include($i.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(`
|
|
793
793
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
794
794
|
|
|
795
795
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -808,7 +808,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
808
808
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
809
809
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
810
810
|
return col;
|
|
811
|
-
}`);i=e.include(c);break;default:i=e.include(
|
|
811
|
+
}`);i=e.include(c);break;default:i=e.include($i.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)}},qi=$i;qi.Nodes=function(){let e=new X(`
|
|
812
812
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
813
813
|
vec3 posN = normalize(position);
|
|
814
814
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -838,7 +838,7 @@ vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, v
|
|
|
838
838
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
839
839
|
return col;
|
|
840
840
|
}
|
|
841
|
-
`),r=new
|
|
841
|
+
`),r=new X(`
|
|
842
842
|
vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
843
843
|
vec3 posN = normalize(vPosition);
|
|
844
844
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -866,7 +866,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
866
866
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
867
867
|
return col;
|
|
868
868
|
}
|
|
869
|
-
`),o=new
|
|
869
|
+
`),o=new X(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
870
870
|
|
|
871
871
|
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
872
872
|
vec4 tmp = texture2D( tex, uvs );
|
|
@@ -882,14 +882,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
882
882
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
883
883
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
884
884
|
return col;
|
|
885
|
-
}`);return{cylindrical:e,spherical:r,uv:o}}();var
|
|
885
|
+
}`);return{cylindrical:e,spherical:r,uv:o}}();var Hc=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(Hc.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)}},Yi=Hc;Yi.Nodes=function(){return{customNormal:new X(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
886
886
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
887
887
|
normal *= step( vec3(0.5), cnormal );
|
|
888
888
|
|
|
889
889
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
890
890
|
|
|
891
891
|
return normal;
|
|
892
|
-
}`)}}();var
|
|
892
|
+
}`)}}();var rt={normalRenderTarget:new yt,normalRenderTargetDepth:new yt,transmissionRenderTarget:new yt,transmissionSize:new Qe(2048,2048),transmissionRenderTargetDepth:new yt,pixelRatioNode:new Z(1),resolution:new Qe,penumbraSize:new Yt(5,.5)};for(let n of Object.values(rt))n.isRenderGlobal=!0;var Xi=class extends Ze{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Te(5855577),this.emissive=new Te(0),this.emissiveIntensity=new Z(1),this.shadingAlpha=new Z(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(z_.merge([xh.fog,xh.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(`
|
|
893
893
|
`));let i=["#include <beginnormal_vertex>",`
|
|
894
894
|
#ifndef USE_LAYER_DISPLACE
|
|
895
895
|
#include <defaultnormal_vertex>
|
|
@@ -981,21 +981,21 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
981
981
|
#pragma unroll_loop_end
|
|
982
982
|
#endif
|
|
983
983
|
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
984
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
985
|
-
`));let
|
|
984
|
+
`)}else{e.mergeUniform({penumbraSize:rt.penumbraSize}),this.color===void 0&&(this.color=new Te(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"),u=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(`
|
|
985
|
+
`));let p=["#include <normal_fragment_begin>",`
|
|
986
986
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
987
987
|
vec3 viewdx = dFdx(vViewPosition);
|
|
988
988
|
vec3 viewdy = dFdy(vViewPosition);
|
|
989
989
|
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
990
990
|
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
991
|
-
`,"#include <clipping_planes_fragment>"];
|
|
991
|
+
`,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),a&&p.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),p.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&&p.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),p.push(`
|
|
992
992
|
if (outgoingLight != diffuseColor) {
|
|
993
993
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
994
994
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
995
995
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
996
996
|
}
|
|
997
|
-
`),p
|
|
998
|
-
`)}return r}};import{UniformsLib as
|
|
997
|
+
`),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
998
|
+
`)}return r}};import{UniformsLib as Wc,UniformsUtils as j_}from"three";var Ki=class extends Ze{constructor(){super("standard");this.nodeType="Standard";this.color=new Te(5855577),this.roughness=new Z(.3),this.metalness=new Z(0),this.reflectivity=new Z(.5),this.shadingAlpha=new Z(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(j_.merge([Wc.fog,Wc.lights])),Wc.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(`
|
|
999
999
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1000
1000
|
#if !defined( USE_LAYER_DISPLACE )
|
|
1001
1001
|
#include <defaultnormal_vertex>
|
|
@@ -1013,7 +1013,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1013
1013
|
#include <begin_vertex>
|
|
1014
1014
|
#endif /* !USE_LAYER_DISPLACE */
|
|
1015
1015
|
`];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(`
|
|
1016
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
1016
|
+
`)}else{e.mergeUniform({penumbraSize:rt.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Te(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"),u=this.shadingBlend.flow(e,"i"),a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==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(`
|
|
1017
1017
|
`));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
1018
1018
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1019
1019
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -1022,14 +1022,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1022
1022
|
if (dot(normal, faceNormal) < 0.0) {
|
|
1023
1023
|
normal *= -1.0;
|
|
1024
1024
|
}
|
|
1025
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];f.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+";"),
|
|
1025
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];f.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+";"),p&&f.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),f.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),f.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?f.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):f.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),f.push("#include <lights_fragment_begin>"),f.push("#include <lights_fragment_end>"),f.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),f.push(`
|
|
1026
1026
|
if (outgoingLight != diffuseColor) {
|
|
1027
1027
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1028
1028
|
accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * lightAccu;
|
|
1029
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${
|
|
1029
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${u.result} );
|
|
1030
1030
|
}
|
|
1031
|
-
`),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),
|
|
1032
|
-
`)}return r}};import{UniformsLib as
|
|
1031
|
+
`),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),p?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
1032
|
+
`)}return r}};import{UniformsLib as bh,UniformsUtils as U_}from"three";var Zi=class extends Ze{constructor(){super("toon");this.nodeType="Toon";this.color=new Te(5855577),this.specular=new Te(1118481),this.shininess=new Z(30),this.shadingAlpha=new Z(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(U_.merge([bh.fog,bh.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(`
|
|
1033
1033
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1034
1034
|
#ifndef USE_LAYER_DISPLACE
|
|
1035
1035
|
#include <defaultnormal_vertex>
|
|
@@ -1047,7 +1047,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1047
1047
|
#include <begin_vertex>
|
|
1048
1048
|
#endif
|
|
1049
1049
|
`];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(`
|
|
1050
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
1050
|
+
`)}else{e.mergeUniform({penumbraSize:rt.penumbraSize}),this.color===void 0&&(this.color=new Te(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"),u=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>",`
|
|
1051
1051
|
varying vec3 vViewPosition;
|
|
1052
1052
|
struct ToonMaterial {
|
|
1053
1053
|
vec3 diffuseColor;
|
|
@@ -1068,7 +1068,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1068
1068
|
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
1069
1069
|
#define Material_LightProbeLOD( material ) (0)
|
|
1070
1070
|
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
1071
|
-
`));let
|
|
1071
|
+
`));let p=["#include <normal_fragment_begin>",`
|
|
1072
1072
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1073
1073
|
vec3 viewdx = dFdx(vViewPosition);
|
|
1074
1074
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -1076,14 +1076,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1076
1076
|
if (dot(normal, faceNormal) < 0.0) {
|
|
1077
1077
|
normal *= -1.0;
|
|
1078
1078
|
}
|
|
1079
|
-
`," ToonMaterial material;"];
|
|
1079
|
+
`," ToonMaterial material;"];p.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&&p.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),p.push(`
|
|
1080
1080
|
if (outgoingLight != diffuseColor) {
|
|
1081
1081
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1082
1082
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
1083
1083
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
1084
1084
|
}
|
|
1085
|
-
`),p
|
|
1086
|
-
`)}return r}};import{Vector2 as
|
|
1085
|
+
`),u&&p.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
1086
|
+
`)}return r}};import{Vector2 as Qi,Vector3 as Fr,Vector4 as ka}from"three";function vh(n,t){switch(n.type){case"fresnel":return W_(n,t);case"gradient":return q_(n);case"depth":return $_(n);case"normal":return Y_(n);case"noise":return X_(n,t);case"rainbow":return K_(n);case"toon":return Z_(n,t);case"outline":return Q_(n,t);case"transmission":return J_(n,t);case"color":return H_(n,t)}}function k_(n){return{type:n.type}}function br(n){let{alpha:t,mode:e}=n;return{...k_(n),alpha:t,mode:e}}function H_(n,t){return{...br(n),color:Xe(n.color,t)}}function W_(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n;return{...br(n),color:Xe(s,t),bias:e,scale:r,intensity:o,factor:i}}function q_(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:l}=n;return{...br(n),gradientType:t,smooth:e,colors:r.map(c=>new ka(c[0],c[1],c[2],c[3])),num:r.length,steps:o,offset:new Qi(...s),morph:new Qi(...l),angle:i}}function $_(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...br(n),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new Fr(...s),direction:l?new Fr(...l):new Fr(1,0,0),colors:c.map(p=>p!==void 0?new ka(p[0],p[1],p[2],p[3]):new ka(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function Y_(n){let{cnormal:t}=n;return{...br(n),cnormal:new Fr(t[0],t[1],t[2])}}function X_(n,t){return{...br(n),scale:n.scale,move:n.move,fA:new Qi(...n.fA),fB:new Qi(...n.fB),size:new Fr(...n.size),distortion:new Qi(...n.distortion),colorA:Xe(n.colorA,t),colorB:Xe(n.colorB,t),colorC:Xe(n.colorC,t),colorD:Xe(n.colorD,t),noiseType:n.noiseType}}function K_(n){return{...br(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Fr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Fr(...n.offset)}}function Z_(n,t){return{...br(n),positioning:n.positioning,colors:n.colors.map(e=>new ka(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Fr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Xe(n.shadowColor,t),offset:new Fr(...n.offset)}}function Q_(n,t){return{...br(n),outlineColor:Xe(n.outlineColor,t),contourColor:Xe(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 J_(n,t){return{...br(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var lo=class extends We{};import{Vector4 as tT}from"three";import{Texture as eT}from"three";var Ha=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var $c=class extends Ha{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},qc;function Sh(n){return typeof n=="string"?n:(qc||(qc=new $c),qc.load(n))}var jn=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=Sh(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 eT(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 Oo=class extends jn{};var co=class extends Ce{};var Yc={noise:["noiseType"],texture:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Xc={depth:["colors"]};function rT(n,t,e){let r=Yc[n.type],o=Xc[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let s=i[t]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function Kc(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 Oo||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 wh(n,t,e,r){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Zc(i,e,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof co))switch(o=o||rT(e,i,s),l.constructor){case Te: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 We(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case Ft: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 We(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case Qe:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case tt:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case yt:{Kc(s,t,e);break}case Xt:{l.value=s.map(c=>new tT(...c));break}default:{l.value=s;break}}}return o}var Qc=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(Qc.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)}},Ji=Qc;Ji.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
1087
1087
|
vec3 viewDir = normalize( vViewPosition );
|
|
1088
1088
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1089
1089
|
vec3 y = cross( viewDir, x );
|
|
@@ -1095,14 +1095,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1095
1095
|
|
|
1096
1096
|
return matcapColor.rgb;
|
|
1097
1097
|
}
|
|
1098
|
-
`)}}();var
|
|
1098
|
+
`)}}();var es=class extends co{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as oT}from"three";var Wa=class extends co{constructor(e){super("v3");this.image=e;this._value=new oT}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Jc=class extends le{constructor(e,r,o,i,s,l,c,u,a,p){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=u,this.offset=a,this.alpha=p,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(Jc.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)}},ts=Jc;ts.Nodes=function(){let e=new X(`float rand(float n) {
|
|
1099
1099
|
return fract(sin(n) * 43758.5453123);
|
|
1100
|
-
}`),r=new
|
|
1100
|
+
}`),r=new X(`float hash1(float p) {
|
|
1101
1101
|
p = fract(p * 0.011);
|
|
1102
1102
|
p *= p + 7.5;
|
|
1103
1103
|
p *= p + p;
|
|
1104
1104
|
return fract(p);
|
|
1105
|
-
}`),o=new
|
|
1105
|
+
}`),o=new X(`float valueNoise(vec3 x) {
|
|
1106
1106
|
const vec3 step = vec3(110, 241, 171);
|
|
1107
1107
|
|
|
1108
1108
|
vec3 i = floor(x);
|
|
@@ -1117,13 +1117,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1117
1117
|
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
1118
1118
|
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
1119
1119
|
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
1120
|
-
}`,[r]),i=new
|
|
1120
|
+
}`,[r]),i=new X(`vec3 hash3(vec3 x) {
|
|
1121
1121
|
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
1122
1122
|
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
1123
1123
|
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
1124
1124
|
|
|
1125
1125
|
return fract(sin(x)*43758.5453123);
|
|
1126
|
-
}`),s=new
|
|
1126
|
+
}`),s=new X(`vec3 voronoiNoise(in vec3 x)
|
|
1127
1127
|
{
|
|
1128
1128
|
vec3 p = floor(x);
|
|
1129
1129
|
vec3 f = fract(x);
|
|
@@ -1154,7 +1154,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1154
1154
|
|
|
1155
1155
|
return vec3(sqrt(res), abs(id));
|
|
1156
1156
|
}
|
|
1157
|
-
`,[i]);return{toon:new
|
|
1157
|
+
`,[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) {
|
|
1158
1158
|
float t = 0.0;
|
|
1159
1159
|
float shadow = 1.0;
|
|
1160
1160
|
|
|
@@ -1331,8 +1331,8 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
1331
1331
|
|
|
1332
1332
|
return color.xyz;
|
|
1333
1333
|
|
|
1334
|
-
}`,[it.simplex,e,o,s])}}();import{Matrix3 as j1}from"three";function Lm(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var Ta=class extends _n{constructor(e,r){super(new j1);this.repeat=e;this.offset=r;Lm(this.value,e,r)}updateMatrix(){Lm(this.value,this.repeat,this.offset)}};var fr=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)Sc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return mr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new Bi(i,r.texture.wrapping),l=new _a(i),c=new Ta(r.texture.repeat,r.texture.offset),p=new Y(r.crop?1:0),a=new ye(r.projection??0),u=new ye(["x","y","z"].indexOf(r.axis)??0),d=new ye(r.side??0),f=new Ke(r.size?new go(r.size[0],r.size[1]):new go(100,100)),m=new Y(r.alpha??1),h=new ye(r.mode??0),g=new Ni(s,l,p,a,u,d,f,c,m,h),v=new Se(g.calpha,"f");return new He(t,e,r,{texture:s,textureSize:l,crop:p,projection:a,axis:u,side:d,size:f,mat:c,alpha:m,mode:h},g,h,v)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new Bi(i,r.texture.wrapping),l=new Y(r.alpha??1),c=new ye(r.mode??0),p=new Ei(s,l,c),a=new Se(p.calpha,"f");return new He(t,e,r,{texture:s,alpha:l,mode:c},p,c,a)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new et(new dr(...r.offset)),s=new Y(r.scale??10),l=new Y(r.intensity??8),c=new Y(r.movement??1),p=new ye(r.noiseType??0),a=new Ti(l,c,i,s,p);return new Gi(t,e,r,{offset:i,scale:s,intensity:l,movement:c,noiseType:p},a)}else throw new Error;else return H1(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:Cm(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?bc(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}},He=class extends fr{constructor(e,r,o,i,s,l,c){super(e,r,o,i);this.color=s;this.mode=l;this.alpha=c}},Gi=class extends fr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},mr=class extends fr{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 ye(o.mode),p;if(!o.visible)s=new mo,p={};else if(o.category==="lambert"){s=new Oi;let a=new _e(i.color(o.emissive)??0);p={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new Li;let a=new Y(o.shininess??30),u=new _e(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new Ci;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 ba;let a=new Y(o.shininess??30),u=new _e(i.color(o.specular)??1118481);p={shininess:a,specular:u},s.shininess=a,s.specular=u}return s.alpha=new Y(1),s.shadingAlpha=l,s.shadingBlend=c,p.alpha=s.shadingAlpha,p.mode=s.shadingBlend,new mr(e,r,o,s,p)}};function Mm(n){let t=n instanceof fr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function k1(n,t,e,r){switch(n.type){case"color":{let o=new _e(r.color??5855577),i=new Y(r.alpha??1),s=new Se("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new ye(r.mode??0);return o.alpha=i,new He(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new _e(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 ye(r.mode??0),u=new xi(o,i,s,l,c,p,a),d=new Se(u.calpha,"f");return new He(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 et(r.wavelengths??new dr(0,0,0)),l=new Y(r.noiseStrength??0),c=new Y(r.noiseScale??1),p=new et(r.offset??new dr(0,0,0)),a=new Y(r.alpha??1),u=new vi(o,i,s,l,c,p,a),d=new Se(u.calpha,"f"),f=new ye(r.mode??0);return new He(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:p,alpha:a,mode:f},u,f,d)}case"transmission":{let o=new Y(r.thickness??10),i=new Y(r.ior??1.5),s=new Y(r.roughness??.5),l=tt.transmissionSize,c=tt.transmissionRenderTarget,p=tt.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,d=a>=u?new Ke(u/a,1):new Ke(1,a/u),f=new Y(r.alpha??1),m=new Si(o,i,s,l,c,p,d,f),h=new Se(m.calpha,"f"),g=new ye(r.mode??0);return new He(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:g},m,g,h)}case"toon":{let o=new ye(r.positioning??0),i;r.colors?i=new kt(r.colors.length,r.colors):(i=new kt(10,new Nn(0,0,0,1)),i.value[1]=new Nn(1,1,1,1));let s;r.steps?s=new jt(r.steps.length,r.steps):(s=new jt(10,1),s.value[0]=0);let l=new et(r.source??new dr(0,0,0)),c=new Kr(r.isWorldSpace??!0),p=new Y(r.noiseStrength??0),a=new Y(r.noiseScale??1),u=new Bt(r.shadowColor),d=new et(r.offset??new dr(0,0,0)),f=new Y(r.alpha??1),m=new Di(o,i,s,l,c,p,a,u,d,f),h=new Se(m.calpha,"f"),g=new ye(r.mode??0);return new He(t,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:p,noiseScale:a,shadowColor:u,offset:d,alpha:f,mode:g},m,g,h)}case"outline":{let o=new _e(r.outlineColor??16777215),i=new _e(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 et(r.contourDirections??new dr(0,1,0)),f=new Kr(r.positionalLines??!1),m=new Kr(r.compensation??!0),h=tt.normalRenderTarget,g=tt.normalRenderTargetDepth,v=tt.pixelRatioNode,x=tt.resolution,w=new Y(r.alpha??1),S=new bi(o,i,s,l,c,p,a,u,d,f,m,x,h,g,v,w),b=new Se(S.calpha,"f"),I=new ye(r.mode??0);return new He(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:p,outlineSmoothing:a,contourFrequency:u,contourDirection:d,positionalLines:f,compensation:m,alpha:w,mode:I},S,I,b)}case"depth":{let o=new ye(r.gradientType??0),i=new Kr(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 et(r.origin??new dr),u=new et(r.direction??new dr),d;r.colors?d=new kt(r.colors.length,r.colors):(d=new kt(2,new Nn(0,0,0,1)),d.value[1]=new Nn(1,1,1,1));let f;r.steps?f=new jt(r.steps.length,r.steps):(f=new jt(2,1),f.value[0]=0);let m=new Y(r.alpha??1),h=new ye(r.mode??0),g=new wi(o,i,s,l,c,p,a,u,d,f,m),v=new Se(g.calpha,"f");return new He(t,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:p,origin:a,direction:u,colors:d,steps:f,alpha:m,mode:h},g,h,v)}case"noise":{let o=new Y(r.scale??1),i=new et(r.size??new dr(100,100,100)),s=new Y(r.move??1),l=new Ke(r.fA??new go(1.7,9.2)),c=new Ke(r.fB??new go(8.3,2.8)),p=new Ke(r.distortion??new go(1,1)),a=new Bt(r.colorA),u=new Bt(r.colorB),d=new Bt(r.colorC),f=new Bt(r.colorD),m=new Y(r.alpha??1),h=new ye(r.mode??0),g=new ye(r.noiseType??0),v=new yi(o,i,s,l,c,p,a,u,d,f,m,g),x=new Se(v.calpha,"f");return new He(t,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:p,colorA:a,colorB:u,colorC:d,colorD:f,alpha:m,mode:h,noiseType:g},v,h,x)}case"normal":{let o=new et(r.cnormal??new dr(1,1,1)),i=new Y(r.alpha??1),s=new ye(r.mode??0),l=new Pi(o,i),c=new Se("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new He(t,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new ye(r.gradientType??0),i=new Kr(r.smooth??!1),s;r.colors?s=new kt(r.colors.length,r.colors):(s=new kt(10,new Nn(0,0,0,1)),s.value[1]=new Nn(1,1,1,1));let l;r.steps?l=new jt(r.steps.length,r.steps):(l=new jt(10,1),l.value[0]=0);let c=new Ke(r.offset??new go(0,0)),p=new Ke(r.morph??new go(0,0)),a=new Y(r.angle??0),u=new Y(r.alpha??1),d=new ye(r.mode??0),f=new Ai(o,i,s,l,c,p,a,u),m=new Se(f.calpha,"f");return new He(t,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:p,angle:a,alpha:u,mode:d},f,d,m)}default:{let o=new _e(1,0,0,1),i=new Y(1),s=new Se("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new ye(0);return o.alpha=i,new He(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function H1(n,t,e,r){let o=Pm(e,r);return k1(e,n,t,o)}function Sc(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 _t=class extends q1{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";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??St.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>fr.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 mr),this.lightLayer===void 0&&(this.lightLayer=new mr(0,"",{...Zt.defaultData("light","phong"),visible:!1},new mo,{})),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=fr.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=fr.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 He),r=this.layers.findIndex(o=>o instanceof mr);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 He&&(o=new _i(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Se("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof mr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof He&&(e=new _i(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 Gi);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new ht(r,e[o].position,ht.ADD),r=new ht(r,new Y(.5).setReadonly(!0),ht.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"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}customProgramCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.visible?r.category.toUpperCase():"Basic"}"`;else{let o=(xc[r.type]??[]).map(l=>r[l]),i=(vc[r.type]??[]).map(l=>r[l]?.length??0),s=[...o,...i];s.length?e+=`["${r.type}", "${s.join('","')}"],`:e+=`"${r.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new va;return this.lights=this.lightLayer.data.visible,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>W1,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(_t.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{MathUtils as Tc,BufferAttribute as $1,Vector3 as Ac,Float32BufferAttribute as Em}from"three";function X1(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)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 Ac(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Ac})}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 Em(o,3))}function Y1(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 Ac;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 Em(e,3))}function hr(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof _t)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"||n.objectType==="TextFrame"&&n.data?.geometry?.depth===0?Y1(n):X1(n)}function gr(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=[Tc.seededRandom(r),Tc.seededRandom(r+1e4),Tc.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new $1(e,3))}var Ze=class extends Et(K1){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Q1;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,Math.max(e.getIndex()?.count??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,r){let o=this.geometry,i=tc[o.userData.type],s=this.objectType==="NonParametric"?Object.assign({},o.userData,{geometry:o}):o.userData,l=i.build(i.normalizeInputs(e,s)),c=o.uuid;this.geometry.dispose(),this.geometry=l,this.geometry.uuid=c,this.geometry.computeBoundingSphere(),hr(this),o.getAttribute("randomColor")&&gr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=di(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 co(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new co(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&&(zt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),ir(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)nr(e)&&(e.freeBooleanPointer(),ir(e)&&e.invalidateUpstreamBooleanData())}};var e_=new Nc(0,0,1),Bm=new Nc,Dm=new Nc,Gm=new J1,In=class extends Ze{constructor(e=Je.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new Z1;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,r){if(super.updateGeometry(e,r),"userData"in this.geometry){let o=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:o})}}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),Bm.copy(e_).applyMatrix3(Gm).normalize(),Dm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Bm,Dm)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=Je.create(Object.assign({},i,{shape:r})),l=new In(s,o).copy(this,e);return l.shape=r,r.update(),l}raycast(e,r){Ze.prototype.raycast.call(this,e,r)}};var yr=(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=Xe(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 Ht,Ic=new Ht,Cr=class extends yr(Et(t_),Ys){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=no.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new r_(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new o_(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 Cr().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 Ht){return this.getWorldDirection(Ic),this.getWorldPosition(Pn),Ic.multiplyScalar(this.targetOffset),e.copy(Pn).add(Ic),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Pn),Pn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new n_),r=new Ht(0,0,1).applyQuaternion(e),o=new Ht().copy(Rm.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Ht().copy(Rm.DefaultUp).projectOnPlane(r),s=new Ht().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ht),i=e.getWorldDirection(new Ht).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ht),i=this.getWorldDirection(new Ht).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 Zo(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.zoom),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{BufferGeometry as Vm,Matrix4 as i_}from"three";var Fm=new i_;var Aa=class extends Ze{constructor(e=new Vm,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];ir(s)&&s.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(xm(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=zt.getMeshSet(s.geometry,e===!0,r)),s.booleanMeshSetAddress===-1)return;zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else ir(s)&&s.needsTransformForDownstream===!0?(zt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Fm.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),zt.transformMeshSet(s.booleanMeshSetAddress,Fm),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return zt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Vm,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=zt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,hr(this),gr(this)}updateGeometry(e,r){let o=e.parameters;o.operation!==void 0&&(this.booleanOp=o.operation),o.phongAngle!==void 0&&(this.phongAngle=o.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Group as s_}from"three";var yo=class extends yr(Et(s_),rn){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new yo().fromState(r);return o.uuid=e,o.objectHelper.update(),o}};import{DirectionalLight as a_,CameraHelper as Na}from"three";var On=class extends yr(Et(a_),tn){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 Na(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new On().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 Na&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Na&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Na&&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&&fm(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as l_,Vector3 as Ia,Box3 as c_,Box3Helper as Pa,Color as u_}from"three";var Cn=class extends yr(Et(l_),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 Ia(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ia(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new c_(i,s),c=new Pa(l,new u_(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new Cn().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 Pa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Pa&&(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 Pa){let o=this.shadow.camera,i=new Ia(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ia(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as p_,CameraHelper as Oa,MathUtils as d_,Vector3 as km,Quaternion as f_}from"three";var zm=new km,Um=new km,jm=new f_,Ln=class extends yr(Et(p_),ei){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=d_.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Oa(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,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 Oa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Um.setFromMatrixPosition(this.matrixWorld),jm.setFromRotationMatrix(this.matrixWorld),zm.copy(this.up).applyQuaternion(jm).negate().multiplyScalar(this.distance),this.target.position.copy(Um).add(zm),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 Hm=n=>n.tagName==="VIDEO",Mn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Hm(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];Mm(s)&&Mn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,l=r.image;Hm(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 Ca=class extends Ze{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e,r){super.updateGeometry(e,r),this.material.layers&&Mn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var En=class extends Ze{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var La=class extends En{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var qm,Vi=new Promise(n=>{qm=n}),Wm=!1;async function $m(){if(Wm)return;let n=await import("./opentype.js");qm(n),Wm=!0}var Fi=class{async load(t,e,r=()=>{}){let{load:o}=await Vi;o(t,(i,s)=>{i||!s?r(i??"Something went wrong"):e(s)})}async parse(t){let{parse:e}=await Vi;try{return e(t)}catch(r){console.error(r)}}};async function m_(n){return await(await fetch(n)).arrayBuffer()}var h_=new Fi;async function Pc(n){let t,e,r=!1;if(n.url?(t=await m_(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer),t){let o=await h_.parse(t);if(o)return{font:o,url:e,intercepted:r,arr:t}}}import{Vector3 as g_,Matrix4 as y_,Ray as x_}from"three";var Xm=new g_,Ym=new y_,Km=new x_;function Qm(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Ma=class extends Ze{constructor(e,r,o){super(new hn(r.geometry,o),o.material(r.material));this.data=r;this.objectType="TextFrame";this.wrappedText=[""];this.charWidths=[];this.charCoords=[];this.castShadow=r.castShadow,this.receiveShadow=r.receiveShadow,this.name=r.name,this.uuid=e,this.updateState(r,o)}async updateGeometry(e,r){let o=e.parameters,i={...this.geometry.userData.parameters,...o};this.geometry.userData={parameters:i,type:"TextGeometry"},r&&(o.font||!this.geometry.font&&r.getFont(i.font))&&await this.geometry.updateFont(o.font??i.font,r),await this.geometry.update(i),hr(this),gr(this);let{wrappedText:s,charCoords:l,charWidths:c}=this.geometry;this.wrappedText=s,this.charWidths=c,this.charCoords=l,this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateState(e,r){this.data=e,this.material=r.material(e.material),this.fromState(e,r),this.updateGeometry({parameters:e.geometry},r)}get font(){return this.geometry.font}get initialOffsetY(){return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,this.geometry.userData.parameters.height,this.fontScale,this.geometry.userData.parameters.verticalAlign)??0}get fontScale(){return this.font?this.geometry.userData.parameters.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){return this.geometry.userData.parameters.fontSize*this.geometry.userData.parameters.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(Ym.copy(o).invert(),Km.copy(e.ray).applyMatrix4(Ym),Km.intersectBox(this.singleBBox,Xm)){let i=Xm.applyMatrix4(o),s=e.ray.origin.distanceTo(i);r.push({distance:s,point:i.clone(),object:this})}}};import{Box3 as v_,Matrix4 as xo,Sphere as eh,Vector3 as b_}from"three";var rh=Dc(Jm());var Oc;pa.then(n=>{Oc=n});var oh=new xo,S_=new xo,w_=new xo,Wt=new v_,Jr=new b_,__=new xo,T_=new xo;var Bn=class extends Ze{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new xo;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new xo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}=Ct.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),p=new Bn(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}=Ct.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,hr(this),gr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Ct.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Ct.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Ct.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Ct.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Ze.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,rh.SVD)(r),l=oh.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=S_.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=w_.copy(c).transpose();this.shearScale=__.makeScale(s[0],s[1],s[2]).multiply(p).premultiply(c),this.shearScaleInv=T_.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 eh);let r=e.attributes.position,o=e.boundingSphere.center;Wt.setFromBufferAttribute(r),Wt.getCenter(o),e.boundingSphere.radius=o.distanceTo(Wt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Wt.getSize(Jr);let i={width:Jr.x,height:Jr.y,depth:Jr.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;Wt.min.set(e[0],e[2],e[4]),Wt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(Wt.min.applyMatrix4(this.shearScaleInv),Wt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new eh);let o=r.boundingSphere.center;Wt.getCenter(o),r.boundingSphere.radius=o.distanceTo(Wt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Wt.getSize(Jr);let i={width:Jr.x,height:Jr.y,depth:Jr.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(Oc.free_bvh(this.subdivPointer),Oc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e,r){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,th(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(th(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 th(n,t,e,r){let o=n.position.array,i=n.normal.array,s=oh.makeScale(t,e,r).invert().elements,l,c,p;for(var a=0,u=o.length;a<u;a+=3)o[a]*=t,o[a+1]*=e,o[a+2]*=r,l=i[a],c=i[a+1],p=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*p,i[a+1]=s[1]*l+s[5]*c+s[9]*p,i[a+2]=s[2]*l+s[6]*c+s[10]*p}import{BackSide as A_,BufferGeometry as N_,DoubleSide as I_,FrontSide as P_}from"three";function nh(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=P_:t.side===1?n.side=A_:n.side=I_)}function O_(n,t){if(Array.isArray(n.material))for(let e of n.material)nh(e,t);else{let e=n.material;nh(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function ih(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Bn.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new N_:da(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Mo.is2DParametricMesh(o.userData.type)?r=new Ca(o,i):o?.userData.type==="VectorGeometry"?r=new In(o,i):t.geometry.type==="NonParametricGeometry"?r=new La(o,i):t.geometry.type==="BooleanGeometry"?(r=new Aa(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new En(o,i),r.uuid=n,r.fromState(t,e)}return O_(r,t),r}function sh(n,t,e){return t.type==="Mesh"?t.geometry.type==="TextGeometry"?new Ma(n,t,e):ih(n,t,e):t.type==="Empty"?yo.createFromState(n,t):t.type==="PointLight"?Cn.createFromState(n,t,e):t.type==="SpotLight"?Ln.createFromState(n,t,e):t.type==="DirectionalLight"?On.createFromState(n,t,e):Co.is(t.type)?Cr.createFromState(n,t):(console.error(t),new yo)}var vo=class extends _t{};import{Mesh as ch,Ray as L_,Matrix4 as M_,Raycaster as E_}from"three";function ah(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,gr(n),hr(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function lh(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 uh(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof ch)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)ah(e,e.material[r])&&(t=!0);else ah(e,e.material)&&(t=!0)}),t}function ph(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof ch)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)lh(e,e.material[r])&&(t=!0);else lh(e,e.material)&&(t=!0)}),t}function dh(n){"material"in n&&B_(n.material),"geometry"in n&&n.geometry.dispose()}function B_(n){Gd(n).forEach(t=>{t instanceof vo||t.dispose()})}var D_=new E_,G_=new M_,R_=new L_;function fh(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=D_;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 mh=new z_,Cc=class extends ga(F_){constructor(e,r){super();this.objectType="Scene";this.backupFog=new U_(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 ke(1,1,1,1);this.entityByUuid={};this.ambientLight=new V_(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),this.matrixAutoUpdate=!1}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=ph(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=uh(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(Xe(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 Cr&&this.switchActiveCamera(o)}this.traverse(o=>{ir(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{dh(e)});for(let e of this.children)ar(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Cr.createFromState(Cc.PERSONAL_CAMERA_ID,{...Fs.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)ar(s)&&!s.raycastLock&&s.visible&&((nr(s)||ha(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),fh(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)ar(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)ar(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=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){dm(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(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=sh(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),ir(i)&&nr(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 j_;return o.setFromPoints(r),o.getCenter(mh),mh}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Ze)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof _t&&e(r.material[o]);else r.material instanceof _t&&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})})}},zi=Cc;zi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var xh=Dc(hh());var gh=new Map;function yh(n){if(typeof n=="string")return n;let t=gh.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},gh.set(n,t)),t.url}var Dn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:yh(t),format:"wav"},this.sound=new xh.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 status(){return this._status}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}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}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._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}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()}};import{Box2 as k_,Vector2 as bo,Path as vh,Shape as H_,ShapeUtils as W_,Color as q_}from"three";var Da=class{constructor(){this.type="ShapePath";this.color=new q_;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new vh,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,s){return this.currentPath?.bezierCurveTo(t,e,r,o,i,s),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(h,g,v,x){let w=h.x,S=g.x,b=v.x,I=x.x,_=h.y,y=g.y,P=v.y,A=x.y,O=(I-b)*(_-P)-(A-P)*(w-b),T=(S-w)*(_-P)-(y-_)*(w-b),L=(A-P)*(S-w)-(I-b)*(y-_),B=O/L,j=T/L;if(L===0&&O!==0||B<=0||B>=1||j<0||j>1)return null;if(O===0&&L===0){for(let te=0;te<2;te++)if(i(te===0?v:x,h,g),r.loc===e.ORIGIN){let ne=te===0?v:x;return{x:ne.x,y:ne.y,t:r.t}}else if(r.loc===e.BETWEEN){let ne=+(w+r.t*(S-w)).toPrecision(10),se=+(_+r.t*(y-_)).toPrecision(10);return{x:ne,y:se,t:r.t}}return null}else{for(let se=0;se<2;se++)if(i(se===0?v:x,h,g),r.loc===e.ORIGIN){let U=se===0?v:x;return{x:U.x,y:U.y,t:r.t}}let te=+(w+B*(S-w)).toPrecision(10),ne=+(_+B*(y-_)).toPrecision(10);return{x:te,y:ne,t:B}}}function i(h,g,v){let x=v.x-g.x,w=v.y-g.y,S=h.x-g.x,b=h.y-g.y,I=x*b-S*w;if(h.x===g.x&&h.y===g.y){r.loc=e.ORIGIN,r.t=0;return}if(h.x===v.x&&h.y===v.y){r.loc=e.DESTINATION,r.t=1;return}if(I<-Number.EPSILON){r.loc=e.LEFT;return}if(I>Number.EPSILON){r.loc=e.RIGHT;return}if(x*S<0||w*b<0){r.loc=e.BEHIND;return}if(Math.sqrt(x*x+w*w)<Math.sqrt(S*S+b*b)){r.loc=e.BEYOND;return}let _;x!==0?_=S/x:_=b/w,r.loc=e.BETWEEN,r.t=_}function s(h,g){let v=[],x=[];for(let w=1;w<h.length;w++){let S=h[w-1],b=h[w];for(let I=1;I<g.length;I++){let _=g[I-1],y=g[I],P=o(S,b,_,y);P!==null&&v.find(A=>A.t<=P.t+Number.EPSILON&&A.t>=P.t-Number.EPSILON)===void 0&&(v.push(P),x.push(new bo(P.x,P.y)))}}return x}function l(h,g,v){let x=new bo;g.getCenter(x);let w=[];return v.forEach(S=>{S.boundingBox.containsPoint(x)&&s(h,S.points).forEach(I=>{w.push({identifier:S.identifier,isCW:S.isCW,point:I})})}),w.sort((S,b)=>S.point.x-b.point.x),w}function c(h,g,v,x,w){(w==null||w==="")&&(w="nonzero");let S=new bo;h.boundingBox.getCenter(S);let b=[new bo(v,S.y),new bo(x,S.y)],I=l(b,h.boundingBox,g);I.sort((T,L)=>T.point.x-L.point.x);let _=[],y=[];I.forEach(T=>{T.identifier===h.identifier?_.push(T):y.push(T)});let P=_[0].point.x,A=[],O=0;for(;O<y.length&&y[O].point.x<P;)A.length>0&&A[A.length-1]===y[O].identifier?A.pop():A.push(y[O].identifier),O++;if(A.push(h.identifier),w==="evenodd"){let T=A.length%2===0,L=A[A.length-2];return{identifier:h.identifier,isHole:T,for:L}}else if(w==="nonzero"){let T=!0,L=null,B=null;for(let j=0;j<A.length;j++){let te=A[j];g[te]&&(T?(B=g[te].isCW,T=!1,L=te):B!==g[te].isCW&&(B=g[te].isCW,T=!0))}return{identifier:h.identifier,isHole:T,for:L}}else console.warn('fill-rule: "'+w+'" is currently not implemented.')}let p=0,a=999999999,u=-999999999,d=[];this.subPaths.forEach(h=>{let g=h.getPoints(),v=-999999999,x=999999999,w=-999999999,S=999999999;for(let b=0;b<g.length;b++){let I=g[b];I.y>v&&(v=I.y),I.y<x&&(x=I.y),I.x>w&&(w=I.x),I.x<S&&(S=I.x)}u<=w&&(u=w+1),a>=S&&(a=S-1),g.length&&d.push({curves:h.curves,points:g,isCW:W_.isClockWise(g),identifier:p++,boundingBox:new k_(new bo(S,x),new bo(w,v))})});let f=d.map(h=>c(h,d,a,u,this.userData?.style.fillRule)),m=[];return d.forEach(h=>{let g=f[h.identifier];if(g&&!g.isHole){let v=new H_;v.curves=h.curves,f.filter(w=>w?.isHole&&w.for===h.identifier).forEach(w=>{if(w){let S=d[w.identifier],b=new vh;b.curves=S.curves,v.holes.push(b)}}),m.push(v)}}),m}};import{CubicBezierCurve as K_,LineCurve as Q_,QuadraticBezierCurve as Z_}from"three";import{DRACOLoader as $_}from"three/examples/jsm/loaders/DRACOLoader.js";var eo;function X_(){return eo||(eo=new $_,eo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),eo.decoderPending}async function Y_(n){if(eo){let t={attributeIDs:eo.defaultAttributeIDs,attributeTypes:eo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await eo.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 bh(n,t){let[e,r]=Ha(ss.deserialize(new Uint8Array(n)));kd(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 X_();for(let i of o){let s=await Y_(ut(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}function J_(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var Ga=class{constructor(t,e){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=Pc(t).then(r=>{r&&(this._arrayBuffer=r.arr,this._url=r.url,this.font=r.font,this._intercepted=r.intercepted,this._isLoaded=!0,e())})}update(t,e){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=Pc(t).then(r=>{r&&(this._arrayBuffer=r.arr,this._url=r.url,this.font=r.font,this._intercepted=r.intercepted,this._isLoaded=!0,e())})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}async reverseLigaturesTable(t,e,r){let{Bidi:o}=await Vi,i=new o,s=u=>t.charToGlyphIndex(u.char);i.registerModifier("glyphIndex",null,s),i.applyFeatures(t,t.defaultRenderOptions.features),i.getTextGlyphs(e);let l=i.tokenizer.tokens,c=[],p=0,a=r.length===l.length;for(let u=0;u<r.length;u++){let d=r[u].index,f=String.fromCharCode(r[u].unicode),m=l[p];if(J_(d,m)||a)c.push({char:f,index:d,replacements:[m.state.glyphIndex],replacementChars:[m.char]}),p++;else{let h=m.char,g="",v=[m.state.glyphIndex],x=[],w=!1;for(;!w;)p++,g=e.charAt(p),h+=g,v.push(t.charToGlyphIndex(g)),x=t.stringToGlyphs(h),x.length===1&&x[0].index===d&&(w=!0),p>e.length&&(w=!0);c.push({char:f,index:d,replacements:v,replacementChars:Array.from(h)}),p++}}return c}async generateShapes(t,e){await this._loadingPromise;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=t.map(x=>this.getTextWidth(x,e)),l=e.width,c=this.getCharWidth(`
|
|
1335
|
-
`,e),
|
|
1336
|
-
`:y.unicode?String.fromCharCode(y.unicode):void 0,A=
|
|
1337
|
-
`)
|
|
1338
|
-
`)>=0&&(t-=i),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let s=e*t,l=Math.abs(this.ascender-this.descender)*o,c=t-l,
|
|
1334
|
+
}`,[st.simplex,e,o,s])}}();import{Matrix3 as nT}from"three";function _h(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var qa=class extends Fn{constructor(e,r){super(new nT);this.repeat=e;this.offset=r;_h(this.value,e,r)}updateMatrix(){_h(this.value,this.repeat,this.offset)}};var Sr=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)Zc(i,this,r)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return wr.createLigherLayer(t,e,r,o);if(r.type==="texture"){let i=o.image(r.texture.image),s=new es(i,r.texture.wrapping),l=new Wa(i),c=new qa(r.texture.repeat,r.texture.offset),u=new Z(r.crop?1:0),a=new xe(r.projection??0),p=new xe(["x","y","z"].indexOf(r.axis)??0),d=new xe(r.side??0),f=new Qe(r.size?new Co(r.size[0],r.size[1]):new Co(100,100)),m=new Z(r.alpha??1),h=new xe(r.mode??0),g=new qi(s,l,u,a,p,d,f,c,m,h),b=new we(g.calpha,"f");return new qe(t,e,r,{texture:s,textureSize:l,crop:u,projection:a,axis:p,side:d,size:f,mat:c,alpha:m,mode:h},g,h,b)}else if(r.type==="matcap"){let i=o.image(r.texture.image),s=new es(i,r.texture.wrapping),l=new Z(r.alpha??1),c=new xe(r.mode??0),u=new Ji(s,l,c),a=new we(u.calpha,"f");return new qe(t,e,r,{texture:s,alpha:l,mode:c},u,c,a)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new tt(new vr(...r.offset)),s=new Z(r.scale??10),l=new Z(r.intensity??8),c=new Z(r.movement??1),u=new xe(r.noiseType??0),a=new Hi(l,c,i,s,u);return new rs(t,e,r,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return sT(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:wh(o.props,r,this,e)}else if(o.path[0]==="texture")return"texture"in e?Kc(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}},qe=class extends Sr{constructor(e,r,o,i,s,l,c){super(e,r,o,i);this.color=s;this.mode=l;this.alpha=c}},rs=class extends Sr{constructor(e,r,o,i,s){super(e,r,o,i);this.position=s}},wr=class extends Sr{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 Z(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Po,u={};else if(o.category==="lambert"){s=new Xi;let a=new Te(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new Zi;let a=new Z(o.shininess??30),p=new Te(i.color(o.specular)??1118481);u={shininess:a,specular:p},s.shininess=a,s.specular=p}else if(o.category==="physical"){s=new Ki;let a=new Z(o.roughness??.3),p=new Z(o.metalness??0),d=new Z(o.reflectivity??.5);u={roughness:a,metalness:p,reflectivity:d},s.roughness=a,s.metalness=p,s.reflectivity=d}else{s=new Ua;let a=new Z(o.shininess??30),p=new Te(i.color(o.specular)??1118481);u={shininess:a,specular:p},s.shininess=a,s.specular=p}return s.alpha=new Z(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new wr(e,r,o,s,u)}};function Th(n){let t=n instanceof Sr?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}function iT(n,t,e,r){switch(n.type){case"color":{let o=new Te(r.color??5855577),i=new Z(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 qe(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Te(r.color??16777215),i=new Z(r.bias??.1),s=new Z(r.scale??1),l=new Z(r.intensity??2),c=new Z(r.factor??1),u=new Z(r.alpha??1),a=new xe(r.mode??0),p=new Vi(o,i,s,l,c,u,a),d=new we(p.calpha,"f");return new qe(t,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:u,mode:a},p,a,d)}case"rainbow":{let o=new Z(r.filmThickness??30),i=new Z(r.movement??0),s=new tt(r.wavelengths??new vr(0,0,0)),l=new Z(r.noiseStrength??0),c=new Z(r.noiseScale??1),u=new tt(r.offset??new vr(0,0,0)),a=new Z(r.alpha??1),p=new Fi(o,i,s,l,c,u,a),d=new we(p.calpha,"f"),f=new xe(r.mode??0);return new qe(t,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,alpha:a,mode:f},p,f,d)}case"transmission":{let o=new Z(r.thickness??10),i=new Z(r.ior??1.5),s=new Z(r.roughness??.5),l=rt.transmissionSize,c=rt.transmissionRenderTarget,u=rt.transmissionRenderTargetDepth,a=window.innerWidth,p=window.innerHeight,d=a>=p?new Qe(p/a,1):new Qe(1,a/p),f=new Z(r.alpha??1),m=new ji(o,i,s,l,c,u,d,f),h=new we(m.calpha,"f"),g=new xe(r.mode??0);return new qe(t,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:d,alpha:f,mode:g},m,g,h)}case"toon":{let o=new xe(r.positioning??0),i;r.colors?i=new Xt(r.colors.length,r.colors):(i=new Xt(10,new Un(0,0,0,1)),i.value[1]=new Un(1,1,1,1));let s;r.steps?s=new Yt(r.steps.length,r.steps):(s=new Yt(10,1),s.value[0]=0);let l=new tt(r.source??new vr(0,0,0)),c=new ao(r.isWorldSpace??!0),u=new Z(r.noiseStrength??0),a=new Z(r.noiseScale??1),p=new Ft(r.shadowColor),d=new tt(r.offset??new vr(0,0,0)),f=new Z(r.alpha??1),m=new ts(o,i,s,l,c,u,a,p,d,f),h=new we(m.calpha,"f"),g=new xe(r.mode??0);return new qe(t,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:p,offset:d,alpha:f,mode:g},m,g,h)}case"outline":{let o=new Te(r.outlineColor??16777215),i=new Te(r.contourColor??16777215),s=new Z(r.outlineWidth??.1),l=new Z(r.contourWidth??.1),c=new Z(r.outlineThreshold??.1),u=new Z(r.contourThreshold??.1),a=new Z(r.outlineSmoothing??.1),p=new Z(r.contourFrequency??.1),d=new tt(r.contourDirections??new vr(0,1,0)),f=new ao(r.positionalLines??!1),m=new ao(r.compensation??!0),h=rt.normalRenderTarget,g=rt.normalRenderTargetDepth,b=rt.pixelRatioNode,x=rt.resolution,S=new Z(r.alpha??1),w=new zi(o,i,s,l,c,u,a,p,d,f,m,x,h,g,b,S),v=new we(w.calpha,"f"),N=new xe(r.mode??0);return new qe(t,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:a,contourFrequency:p,contourDirection:d,positionalLines:f,compensation:m,alpha:S,mode:N},w,N,v)}case"depth":{let o=new xe(r.gradientType??0),i=new ao(r.smooth??!1),s=new Z(r.near??50),l=new Z(r.far??200),c=new Z(r.isVector??1),u=new Z(r.isWorldSpace??0),a=new tt(r.origin??new vr),p=new tt(r.direction??new vr),d;r.colors?d=new Xt(r.colors.length,r.colors):(d=new Xt(2,new Un(0,0,0,1)),d.value[1]=new Un(1,1,1,1));let f;r.steps?f=new Yt(r.steps.length,r.steps):(f=new Yt(2,1),f.value[0]=0);let m=new Z(r.alpha??1),h=new xe(r.mode??0),g=new Ui(o,i,s,l,c,u,a,p,d,f,m),b=new we(g.calpha,"f");return new qe(t,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:p,colors:d,steps:f,alpha:m,mode:h},g,h,b)}case"noise":{let o=new Z(r.scale??1),i=new tt(r.size??new vr(100,100,100)),s=new Z(r.move??1),l=new Qe(r.fA??new Co(1.7,9.2)),c=new Qe(r.fB??new Co(8.3,2.8)),u=new Qe(r.distortion??new Co(1,1)),a=new Ft(r.colorA),p=new Ft(r.colorB),d=new Ft(r.colorC),f=new Ft(r.colorD),m=new Z(r.alpha??1),h=new xe(r.mode??0),g=new xe(r.noiseType??0),b=new Ri(o,i,s,l,c,u,a,p,d,f,m,g),x=new we(b.calpha,"f");return new qe(t,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:p,colorC:d,colorD:f,alpha:m,mode:h,noiseType:g},b,h,x)}case"normal":{let o=new tt(r.cnormal??new vr(1,1,1)),i=new Z(r.alpha??1),s=new xe(r.mode??0),l=new Yi(o,i),c=new we("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new qe(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 Xt(r.colors.length,r.colors):(s=new Xt(10,new Un(0,0,0,1)),s.value[1]=new Un(1,1,1,1));let l;r.steps?l=new Yt(r.steps.length,r.steps):(l=new Yt(10,1),l.value[0]=0);let c=new Qe(r.offset??new Co(0,0)),u=new Qe(r.morph??new Co(0,0)),a=new Z(r.angle??0),p=new Z(r.alpha??1),d=new xe(r.mode??0),f=new Wi(o,i,s,l,c,u,a,p),m=new we(f.calpha,"f");return new qe(t,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,alpha:p,mode:d},f,d,m)}default:{let o=new Te(1,0,0,1),i=new Z(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 qe(t,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function sT(n,t,e,r){let o=vh(e,r);return iT(e,n,t,o)}function Zc(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 Nt=class extends lT{constructor(e,r){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";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??Tt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Sr.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 wr),this.lightLayer===void 0&&(this.lightLayer=new wr(0,"",{...nr.defaultData("light","phong"),visible:!1},new Po,{})),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=Sr.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 u=Sr.create(this.layerIdGen++,i,l,o);this.layers.splice(this.layers.findIndex(a=>a.uuid===i),1,u),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof qe),r=this.layers.findIndex(o=>o instanceof wr);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 qe&&(o=new ki(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 wr);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof qe&&(e=new ki(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 rs);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new xt(r,e[o].position,xt.ADD),r=new xt(r,new Z(.5).setReadonly(!0),xt.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"){let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}customProgramCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.visible?r.category.toUpperCase():"Basic"}"`;else{let o=(Yc[r.type]??[]).map(l=>r[l]),i=(Xc[r.type]??[]).map(l=>r[l]?.length??0),s=[...o,...i];s.length?e+=`["${r.type}", "${s.join('","')}"],`:e+=`"${r.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){e=e??{};let r=e.builder??new ja;return this.lights=this.lightLayer.data.visible,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>aT,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Nt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{MathUtils as eu,BufferAttribute as cT,Vector3 as tu,Float32BufferAttribute as Ah}from"three";function uT(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)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 tu(r[i],r[i+1],r[i+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new tu})}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 Ah(o,3))}function pT(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 tu;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 Ah(e,3))}function _r(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Nt)||n.material.getLayersOfType("outline").length===0)return;n.objectType==="Mesh2D"||n.objectType==="TextFrame"&&n.data?.geometry?.depth===0?pT(n):uT(n)}function Tr(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=[eu.seededRandom(r),eu.seededRandom(r+1e4),eu.seededRandom(r+2e4)];for(let i=0;i<t.length;i++)e[i]=o[i%3];n.geometry.setAttribute("randomColor",new cT(e,3))}import{Group as dT}from"three";var Ar=(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=Xe(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 zr=class extends Ar(Bt(dT),Sn){constructor(){super(...arguments);this.objectType="EmptyObject"}createFromState(e,r){let o=new zr().fromState(r);return o.uuid=e,o.objectHelper.update(),o.setFromClonerState(r.cloner||null),o}get cloner(){return this._cloner}set cloner(e){this._cloner&&(this.remove(this._cloner),this._cloner.removeSampleObjectClones()),e&&this.add(e),this._cloner=e}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Dr(this,e)),this.cloner.fromClonerState(e))}};function hT(n){let t=n.parent;for(;t;){if(t instanceof zr&&t.cloner?.parameters.hideBase)return!0;t=t.parent}return!1}var Fe=class extends Bt(fT){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new mT;this.booleanExclude=null;Array.isArray(r)&&e.groups.length===0&&e.addGroup(0,Math.max(e.getIndex()?.count??0,e.getAttribute("position").count),0)}get isGroup(){return this._cloner?.parameters.hideBase===!0||hT(this)}get isMesh(){return!this.isGroup}set isMesh(e){}get cloner(){return this._cloner}set cloner(e){this._cloner&&(this.remove(this._cloner),this._cloner.removeSampleObjectClones()),e&&this.add(e),this._cloner=e}updateGeometry(e,r){let o=this.geometry,i=Ec[o.userData.type],s=this.objectType==="NonParametric"?Object.assign({},o.userData,{geometry:o}):o.userData,l=i.build(i.normalizeInputs(e,s)),c=o.uuid;this.geometry.dispose(),this.geometry=l,this.geometry.uuid=c,this.geometry.computeBoundingSphere(),_r(this),o.getAttribute("randomColor")&&Tr(this)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=Ei(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 Dr(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Dr(this,e)),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&&(qt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),lr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)ar(e)&&(e.freeBooleanPointer(),lr(e)&&e.invalidateUpstreamBooleanData())}};var xT=new ru(0,0,1),Nh=new ru,Ih=new ru,Ph=new yT,kn=class extends Fe{constructor(e=et.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new gT;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,r){if(super.updateGeometry(e,r),"userData"in this.geometry){let o=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:o})}}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),Ph.getNormalMatrix(this.matrixWorld),Nh.copy(xT).applyMatrix3(Ph).normalize(),Ih.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Nh,Ih)}clone(e){let r=this.shape.clone(),o=this.material,i=this.geometry.userData,s=et.create(Object.assign({},i,{shape:r})),l=new kn(s,o).copy(this,e);return l.shape=r,r.update(),l}raycast(e,r){Fe.prototype.raycast.call(this,e,r)}};var Hn=new Kt,ou=new Kt,jr=class extends Ar(Bt(bT),va){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 vT(e*-.5,e*.5,r*.5,r*-.5,i??-5e4,s),this.perspCamera=new ST(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 jr().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(Hn),this.targetOffset=Hn.distanceTo(e)}getTarget(e=new Kt){return this.getWorldDirection(ou),this.getWorldPosition(Hn),ou.multiplyScalar(this.targetOffset),e.copy(Hn).add(ou),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Hn),Hn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new wT),r=new Kt(0,0,1).applyQuaternion(e),o=new Kt().copy(Oh.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new Kt().copy(Oh.DefaultUp).projectOnPlane(r),s=new Kt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Kt),i=e.getWorldDirection(new Kt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Kt),i=this.getWorldDirection(new Kt).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 dn(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.type==="PerspectiveCamera"?(this.zoom=this.perspCamera.zoom,this.fov=this.perspCamera.fov,this.near=this.perspCamera.near):(this.near=this.orthoCamera.near,this.zoom=this.orthoCamera.zoom),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{BufferGeometry as Ch,Matrix4 as _T}from"three";var Mh=new _T;var $a=class extends Fe{constructor(e=new Ch,r){super(e,r);this.booleanOp=2;this.phongAngle=35;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.objectType="BooleanObject",this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.objectType="BooleanObject",this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e,r=!0){if(this.booleanMeshSetAddress!==-1)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];lr(s)&&s.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(Ef(s)&&s.booleanExclude===!1&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=qt.getMeshSet(s.geometry,e===!0,r)),s.booleanMeshSetAddress===-1)return;qt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else lr(s)&&s.needsTransformForDownstream===!0?(qt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(Mh.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),qt.transformMeshSet(s.booleanMeshSetAddress,Mh),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return qt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Ch,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=qt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(i){this.booleanMeshSetAddress=0,console.error(i)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,_r(this),Tr(this)}updateGeometry(e,r){let o=e.parameters;o.operation!==void 0&&(this.booleanOp=o.operation),o.phongAngle!==void 0&&(this.phongAngle=o.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{DirectionalLight as TT,CameraHelper as Ya}from"three";var Wn=class extends Ar(Bt(TT),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,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 Ya(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Wn().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ya&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ya&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ya&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),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&&Pf(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as AT,Vector3 as Xa,Box3 as NT,Box3Helper as Ka,Color as IT}from"three";var qn=class extends Ar(Bt(AT),wn){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 Xa(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Xa(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),l=new NT(i,s),c=new Ka(l,new IT(16755200));c.visible=!1,this._gizmos.shadowmap=c,this.update()}static createFromState(e,r,o){let i=new qn().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 Ka&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ka&&(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 Ka){let o=this.shadow.camera,i=new Xa(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Xa(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.objectHelper&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as PT,CameraHelper as Za,MathUtils as OT,Vector3 as Dh,Quaternion as CT}from"three";var Lh=new Dh,Eh=new Dh,Bh=new CT,$n=class extends Ar(Bt(PT),Si){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=OT.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Za(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new $n().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 Za&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Za&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Za&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Eh.setFromMatrixPosition(this.matrixWorld),Bh.setFromRotationMatrix(this.matrixWorld),Lh.copy(this.up).applyQuaternion(Bh).negate().multiplyScalar(this.distance),this.target.position.copy(Eh).add(Lh),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 Gh=n=>n.tagName==="VIDEO",Yn=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Gh(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];Th(s)&&Yn.resizeTextureLayer(t,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(t,e,r,o){let i=t/e,s,l=r.image;Gh(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 Qa=class extends Fe{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e,r){super.updateGeometry(e,r),this.material.layers&&Yn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Xn=class extends Fe{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Ja=class extends Xn{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var Vh,ns=new Promise(n=>{Vh=n}),Rh=!1;async function Fh(){if(Rh)return;let n=await import("./opentype.js");Vh(n),Rh=!0}var is=class{async load(t,e,r=()=>{}){let{load:o}=await ns;o(t,(i,s)=>{i||!s?r(i??"Something went wrong"):e(s)})}async parse(t){let{parse:e}=await ns;try{return e(t)}catch(r){console.error(r)}}};async function MT(n){return await(await fetch(n)).arrayBuffer()}var LT=new is;async function nu(n){let t,e,r=!1;if(n.url?(t=await MT(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer),t){let o=await LT.parse(t);if(o)return{font:o,url:e,intercepted:r,arr:t}}}import{Vector3 as ET,Matrix4 as BT,Ray as DT}from"three";var zh=new ET,jh=new BT,Uh=new DT;function kh(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var el=class extends Fe{constructor(e,r,o){super(new En(r.geometry,o),o.material(r.material));this.data=r;this.objectType="TextFrame";this.wrappedText=[""];this.charWidths=[];this.charCoords=[];this.castShadow=r.castShadow,this.receiveShadow=r.receiveShadow,this.name=r.name,this.uuid=e,this.updateState(r,o)}async updateGeometry(e,r){let o=e.parameters,i={...this.geometry.userData.parameters,...o};this.geometry.userData={parameters:i,type:"TextGeometry"},r&&(o.font||!this.geometry.font&&r.getFont(i.font))&&await this.geometry.updateFont(o.font??i.font,r),await this.geometry.update(i),_r(this),Tr(this);let{wrappedText:s,charCoords:l,charWidths:c}=this.geometry;this.wrappedText=s,this.charWidths=c,this.charCoords=l,this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateState(e,r){this.data=e,this.material=r.material(e.material),this.fromState(e,r),this.updateGeometry({parameters:e.geometry},r)}get font(){return this.geometry.font}get initialOffsetY(){return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,this.geometry.userData.parameters.height,this.fontScale,this.geometry.userData.parameters.verticalAlign)??0}get fontScale(){return this.font?this.geometry.userData.parameters.fontSize/this.font.unitsPerEm:1}get AD(){return Math.abs(this.ascender-this.descender)}get ascender(){return(this.font?.ascender??1)*this.fontScale}get descender(){return(this.font?.descender??1)*this.fontScale}get lineHeight(){return this.geometry.userData.parameters.fontSize*this.geometry.userData.parameters.lineHeight}raycast(e,r){let{matrixWorld:o}=this;if(jh.copy(o).invert(),Uh.copy(e.ray).applyMatrix4(jh),Uh.intersectBox(this.singleBBox,zh)){let i=zh.applyMatrix4(o),s=e.ray.origin.distanceTo(i);r.push({distance:s,point:i.clone(),object:this})}}};import{Box3 as GT,Matrix4 as Mo,Sphere as qh,Vector3 as RT}from"three";var Yh=ll(Wh());var iu;yn.then(n=>{iu=n});var Xh=new Mo,VT=new Mo,FT=new Mo,Zt=new GT,uo=new RT,zT=new Mo,jT=new Mo;var Kn=class extends Fe{constructor(e,r,o,i){super(o??r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Mo;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Mo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:l}=Vt.build(r.geometry,void 0,void 0,!r.flatShading),c=o.material(r.material),u=new Kn(i,s,l||void 0,c);return r.geometry.phongAngle!==void 0&&(u.phongAngle=r.geometry.phongAngle),u.calcBoundingBox(),u.freeSubdivPointer(),u.uuid=e,u.fromState(r),u}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=Vt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,_r(this),Tr(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Vt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Vt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Vt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Vt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,Fe.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,Yh.SVD)(r),l=Xh.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=VT.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),u=FT.copy(c).transpose();this.shearScale=zT.makeScale(s[0],s[1],s[2]).multiply(u).premultiply(c),this.shearScaleInv=jT.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,u),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 qh);let r=e.attributes.position,o=e.boundingSphere.center;Zt.setFromBufferAttribute(r),Zt.getCenter(o),e.boundingSphere.radius=o.distanceTo(Zt.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Zt.getSize(uo);let i={width:uo.x,height:uo.y,depth:uo.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;Zt.min.set(e[0],e[2],e[4]),Zt.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(Zt.min.applyMatrix4(this.shearScaleInv),Zt.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new qh);let o=r.boundingSphere.center;Zt.getCenter(o),r.boundingSphere.radius=o.distanceTo(Zt.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Zt.getSize(uo);let i={width:uo.x,height:uo.y,depth:uo.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(iu.free_bvh(this.subdivPointer),iu.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e,r){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,$h(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&($h(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 $h(n,t,e,r){let o=n.position.array,i=n.normal.array,s=Xh.makeScale(t,e,r).invert().elements,l,c,u;for(var a=0,p=o.length;a<p;a+=3)o[a]*=t,o[a+1]*=e,o[a+2]*=r,l=i[a],c=i[a+1],u=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*u,i[a+1]=s[1]*l+s[5]*c+s[9]*u,i[a+2]=s[2]*l+s[6]*c+s[10]*u}import{BackSide as UT,BufferGeometry as kT,DoubleSide as HT,FrontSide as WT}from"three";function Kh(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=WT:t.side===1?n.side=UT:n.side=HT)}function qT(n,t){if(Array.isArray(n.material))for(let e of n.material)Kh(e,t);else{let e=n.material;Kh(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function Zh(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Kn.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new kT:Ga(t.geometry,e),i="materials"in t?t.materials.map(s=>e.material(s)):e.material(t.material);Wo.is2DParametricMesh(o.userData.type)?r=new Qa(o,i):o?.userData.type==="VectorGeometry"?r=new kn(o,i):t.geometry.type==="NonParametricGeometry"?r=new Ja(o,i):t.geometry.type==="BooleanGeometry"?(r=new $a(void 0,i),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Xn(o,i),r.uuid=n,r.fromState(t,e)}return qT(r,t),r}function Qh(n,t,e){return t.type==="Mesh"?t.geometry.type==="TextGeometry"?new el(n,t,e):Zh(n,t,e):t.type==="Empty"?new zr().createFromState(n,t):t.type==="PointLight"?qn.createFromState(n,t,e):t.type==="SpotLight"?$n.createFromState(n,t,e):t.type==="DirectionalLight"?Wn.createFromState(n,t,e):ko.is(t.type)?jr.createFromState(n,t):(console.error(t),new zr)}var Lo=class extends Nt{};import{Mesh as tg,Ray as YT,Matrix4 as XT,Raycaster as KT}from"three";function Jh(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,Tr(n),_r(n)),r.length===0&&o.length===0&&n.layers.set(0),e}function eg(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 rg(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof tg)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Jh(e,e.material[r])&&(t=!0);else Jh(e,e.material)&&(t=!0)}),t}function og(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof tg)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)eg(e,e.material[r])&&(t=!0);else eg(e,e.material)&&(t=!0)}),t}function ng(n){"material"in n&&ZT(n.material),"geometry"in n&&n.geometry.dispose()}function ZT(n){df(n).forEach(t=>{t instanceof Lo||t.dispose()})}var QT=new KT,JT=new XT,eA=new YT;function ig(n,t,e){let r=n.cloner;if(r)for(let o of r.children){let i=JT.copy(o.matrixWorld).invert(),s=eA.copy(t.ray).applyMatrix4(i),l=n.matrixWorld;s.applyMatrix4(l);let c=QT;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 sg=new oA,su=class extends ma(rA){constructor(e,r){super();this.objectType="Scene";this.backupFog=new nA(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 We(1,1,1,1);this.entityByUuid={};this.ambientLight=new tA(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.objectsData=e.objects.map(({data:o,id:i})=>({data:o,id:i})),this.init(e,r),this.matrixAutoUpdate=!1}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=og(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=rg(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(Xe(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 jr&&this.switchActiveCamera(o)}this.traverse(o=>{lr(o)&&o.recomputeBoolean()}),setTimeout(()=>this.updateCloner())}clearScene(){this.traverseEntity(e=>{ng(e)});for(let e of this.children)Et(e)&&e.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=jr.createFromState(su.PERSONAL_CAMERA_ID,{...na.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)Et(s)&&!s.raycastLock&&s.visible&&((ar(s)||fa(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,r),ig(s,e,r)),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)Et(r)&&r.traverseEntity(e)}traverseVisibleEntity(e){for(let r of this.children)Et(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=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,r){If(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(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)}updateObjectCloner(e){if(e.parameters.type==="toObject"){let r=e.parameters.toObject.object;if(!r)return;let o=this.find(r);if(o){let i,s=this.objectsData.find(l=>l.id===o.uuid);if(s&&(i=s.data),o.objectType==="SubdivObject"){let l=o;i&&!l.subdivPointer&&l.buildFromStore(i.geometry)}e.setObjectForSample(o),e.update()}}}updateCloner(){this.traverse(e=>{let r=e;r.cloner&&this.updateObjectCloner(r.cloner)})}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=Qh(e,r,s);return l&&(this.entityByUuid[e]=l,i.add(l),lr(i)&&ar(l)&&(l.prevBooleanObjectParent=i),this.createChildrenObjects(o,l,s)),"cloner"in l&&(l.cloner?._updateCount(0),l.cloner?.update()),l}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],u=this.find(l),a=c?u.recursiveBBox:u.singleBBox;r.push(...a.vertices)}let o=new iA;return o.setFromPoints(r),o.getCenter(sg),sg}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 Fe)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof Nt&&e(r.material[o]);else r.material instanceof Nt&&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})})}},ss=su;ss.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var ug=ll(ag());var lg=new Map;function cg(n){if(typeof n=="string")return n;let t=lg.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},lg.set(n,t)),t.url}var Zn=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:cg(t),format:"wav"},this.sound=new ug.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 status(){return this._status}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}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}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._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}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()}};import{Box2 as sA,Vector2 as Eo,Path as pg,Shape as aA,ShapeUtils as lA,Color as cA}from"three";var ol=class{constructor(){this.type="ShapePath";this.color=new cA;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new pg,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,s){return this.currentPath?.bezierCurveTo(t,e,r,o,i,s),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(h,g,b,x){let S=h.x,w=g.x,v=b.x,N=x.x,_=h.y,y=g.y,I=b.y,A=x.y,P=(N-v)*(_-I)-(A-I)*(S-v),T=(w-S)*(_-I)-(y-_)*(S-v),C=(A-I)*(w-S)-(N-v)*(y-_),L=P/C,j=T/C;if(C===0&&P!==0||L<=0||L>=1||j<0||j>1)return null;if(P===0&&C===0){for(let Y=0;Y<2;Y++)if(i(Y===0?b:x,h,g),r.loc===e.ORIGIN){let te=Y===0?b:x;return{x:te.x,y:te.y,t:r.t}}else if(r.loc===e.BETWEEN){let te=+(S+r.t*(w-S)).toPrecision(10),ie=+(_+r.t*(y-_)).toPrecision(10);return{x:te,y:ie,t:r.t}}return null}else{for(let ie=0;ie<2;ie++)if(i(ie===0?b:x,h,g),r.loc===e.ORIGIN){let U=ie===0?b:x;return{x:U.x,y:U.y,t:r.t}}let Y=+(S+L*(w-S)).toPrecision(10),te=+(_+L*(y-_)).toPrecision(10);return{x:Y,y:te,t:L}}}function i(h,g,b){let x=b.x-g.x,S=b.y-g.y,w=h.x-g.x,v=h.y-g.y,N=x*v-w*S;if(h.x===g.x&&h.y===g.y){r.loc=e.ORIGIN,r.t=0;return}if(h.x===b.x&&h.y===b.y){r.loc=e.DESTINATION,r.t=1;return}if(N<-Number.EPSILON){r.loc=e.LEFT;return}if(N>Number.EPSILON){r.loc=e.RIGHT;return}if(x*w<0||S*v<0){r.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+v*v)){r.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=v/S,r.loc=e.BETWEEN,r.t=_}function s(h,g){let b=[],x=[];for(let S=1;S<h.length;S++){let w=h[S-1],v=h[S];for(let N=1;N<g.length;N++){let _=g[N-1],y=g[N],I=o(w,v,_,y);I!==null&&b.find(A=>A.t<=I.t+Number.EPSILON&&A.t>=I.t-Number.EPSILON)===void 0&&(b.push(I),x.push(new Eo(I.x,I.y)))}}return x}function l(h,g,b){let x=new Eo;g.getCenter(x);let S=[];return b.forEach(w=>{w.boundingBox.containsPoint(x)&&s(h,w.points).forEach(N=>{S.push({identifier:w.identifier,isCW:w.isCW,point:N})})}),S.sort((w,v)=>w.point.x-v.point.x),S}function c(h,g,b,x,S){(S==null||S==="")&&(S="nonzero");let w=new Eo;h.boundingBox.getCenter(w);let v=[new Eo(b,w.y),new Eo(x,w.y)],N=l(v,h.boundingBox,g);N.sort((T,C)=>T.point.x-C.point.x);let _=[],y=[];N.forEach(T=>{T.identifier===h.identifier?_.push(T):y.push(T)});let I=_[0].point.x,A=[],P=0;for(;P<y.length&&y[P].point.x<I;)A.length>0&&A[A.length-1]===y[P].identifier?A.pop():A.push(y[P].identifier),P++;if(A.push(h.identifier),S==="evenodd"){let T=A.length%2===0,C=A[A.length-2];return{identifier:h.identifier,isHole:T,for:C}}else if(S==="nonzero"){let T=!0,C=null,L=null;for(let j=0;j<A.length;j++){let Y=A[j];g[Y]&&(T?(L=g[Y].isCW,T=!1,C=Y):L!==g[Y].isCW&&(L=g[Y].isCW,T=!0))}return{identifier:h.identifier,isHole:T,for:C}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,a=999999999,p=-999999999,d=[];this.subPaths.forEach(h=>{let g=h.getPoints(),b=-999999999,x=999999999,S=-999999999,w=999999999;for(let v=0;v<g.length;v++){let N=g[v];N.y>b&&(b=N.y),N.y<x&&(x=N.y),N.x>S&&(S=N.x),N.x<w&&(w=N.x)}p<=S&&(p=S+1),a>=w&&(a=w-1),g.length&&d.push({curves:h.curves,points:g,isCW:lA.isClockWise(g),identifier:u++,boundingBox:new sA(new Eo(w,x),new Eo(S,b))})});let f=d.map(h=>c(h,d,a,p,this.userData?.style.fillRule)),m=[];return d.forEach(h=>{let g=f[h.identifier];if(g&&!g.isHole){let b=new aA;b.curves=h.curves,f.filter(S=>S?.isHole&&S.for===h.identifier).forEach(S=>{if(S){let w=d[S.identifier],v=new pg;v.curves=w.curves,b.holes.push(v)}}),m.push(b)}}),m}};import{CubicBezierCurve as fA,LineCurve as mA,QuadraticBezierCurve as hA}from"three";import{DRACOLoader as uA}from"three/examples/jsm/loaders/DRACOLoader.js";var po;function pA(){return po||(po=new uA,po.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),po.decoderPending}async function dA(n){if(po){let t={attributeIDs:po.defaultAttributeIDs,attributeTypes:po.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await po.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 dg(n,t){let[e,r]=ml(Ns.deserialize(new Uint8Array(n)));bf(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 pA();for(let i of o){let s=await dA(dt(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:u,itemSize:a})=>{l[c]={array:u,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}function gA(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var nl=class{constructor(t,e){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=nu(t).then(r=>{r&&(this._arrayBuffer=r.arr,this._url=r.url,this.font=r.font,this._intercepted=r.intercepted,this._isLoaded=!0,e())})}update(t,e){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=nu(t).then(r=>{r&&(this._arrayBuffer=r.arr,this._url=r.url,this.font=r.font,this._intercepted=r.intercepted,this._isLoaded=!0,e())})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}async reverseLigaturesTable(t,e,r){let{Bidi:o}=await ns,i=new o,s=p=>t.charToGlyphIndex(p.char);i.registerModifier("glyphIndex",null,s),i.applyFeatures(t,t.defaultRenderOptions.features),i.getTextGlyphs(e);let l=i.tokenizer.tokens,c=[],u=0,a=r.length===l.length;for(let p=0;p<r.length;p++){let d=r[p].index,f=String.fromCharCode(r[p].unicode),m=l[u];if(gA(d,m)||a)c.push({char:f,index:d,replacements:[m.state.glyphIndex],replacementChars:[m.char]}),u++;else{let h=m.char,g="",b=[m.state.glyphIndex],x=[],S=!1;for(;!S;)u++,g=e.charAt(u),h+=g,b.push(t.charToGlyphIndex(g)),x=t.stringToGlyphs(h),x.length===1&&x[0].index===d&&(S=!0),u>e.length&&(S=!0);c.push({char:f,index:d,replacements:b,replacementChars:Array.from(h)}),u++}}return c}async generateShapes(t,e){await this._loadingPromise;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=t.map(x=>this.getTextWidth(x,e)),l=e.width,c=this.getCharWidth(`
|
|
1335
|
+
`,e),u=e.horizontalAlign===1?c:0,a=this.computeSpaceWidthForLine(t,0,e),p=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,t[0],c),d=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),f=[],m=t.map(x=>[]),h=t.map(x=>[]),g;for(let x=0;x<t.length;x++){let S=t[x],w={features:{liga:!0}},v=[];try{v=r.stringToGlyphs(S,w)}catch(_){console.warn(_)}p=this.getLineInitialOffsetX(s[x],l,e.horizontalAlign,S,c);let N=[];try{N=await this.reverseLigaturesTable(r,S,v)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(t,x,e);for(let _=0;_<v.length;_++){let y=v[_],I=y.index===0?`
|
|
1336
|
+
`:y.unicode?String.fromCharCode(y.unicode):void 0,A=N[_],P=0,T=0;_===0&&e.horizontalAlign===2&&y.leftSideBearing!==void 0&&(T=-y.leftSideBearing*o),g&&(P=r.getKerningValue(y,g)*o),p+=T+P;let C=0;if(I===`
|
|
1337
|
+
`)C=u;else if(I===" ")C=a;else{let L=this.createPath(y,o,p,d,e);L&&(C=L.offsetX-(P+T),f.push(L.path))}if(A.replacements.length===1)h[x].push([p,d]),m[x].push(C);else{let L=A.replacements.map(ie=>(r.glyphs.get(ie).advanceWidth??0)*o),j=L.reduce((ie,U)=>ie+=U,0),Y=L.map(ie=>ie/j),te=p;for(let ie=0;ie<Y.length;ie++){let U=C*Y[ie];h[x].push([te,d]),m[x].push(U),te+=U}}p+=C,g=y}d-=i}let b=[];for(let x=0,S=f.length;x<S;x++)b.push(...f[x].toShapes());return{shapes:b,charWidths:m,lineWidths:s,charCoords:h}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,o,i){return(r===3||r===2)&&o.indexOf(`
|
|
1338
|
+
`)>=0&&(t-=i),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let s=e*t,l=Math.abs(this.ascender-this.descender)*o,c=t-l,u=-this.ascender*o-c/2;return i===3?-(r-s-u):i===2?-(r*.5-s*.5-u):u}createPath(t,e,r,o,i){let s=t.getPath(r,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let l=new ol,c=(t.advanceWidth??1)*e;if(t)for(let u of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&u.type!=="Z"&&a.x===u.x&&-a.y===u.y))switch(u.type){case"M":l.moveTo(u.x,-u.y);break;case"L":l.lineTo(u.x,-u.y);break;case"Q":l.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":l.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return l.subPaths.forEach(u=>{let a=yA(u.curves);a!==void 0&&u.currentPoint.distanceTo(a)>0&&u.lineTo(a.x,a.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:l}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r){let o=this.getCharWidth(" ",r),i=t[e];if(i){let s=this.countSpaces(i.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&s){let l=r.width,c=this.getTextWidth(i,r);return(l-(c-s*o))/s}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};function yA(n){if(n.length){let t=n[0];if(t instanceof mA)return t.v1;if(t instanceof fA||t instanceof hA)return t.v0}}var as=class{constructor(t,e={}){this.deletedMaterial=new Lo(Tt.defaultTwoLayerData("phong"),this);this.deletedImage=new Oo(ua.emptyImage);this.materials={};this.images={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.onFontLoad=()=>{this._onFontLoad&&this._onFontLoad()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o.data);this.reset(t)}setOnImageLoad(t){this._onImageLoad=t}setOnFontLoad(t){this._onFontLoad=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);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r);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 Nt(t,this)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.images[t].updateSrc(e.data),!0):(this.images[t]=new Oo(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 jn(t,this.onImageLoad)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(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]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate(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 We(0,0,0,0))}else return"a"in t?new We(t.r,t.g,t.b,t.a):new We(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 Zn)return e;{let r=new Zn({src:e});return this.audios[t]=r,r}}deleteAudio(t){this.audios[t]&&delete this.audios[t]}addFont(t,e){this.fonts[t]=new nl(e,this.onFontLoad)}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._onImageLoad=void 0,this._onFontLoad=void 0,Object.values(this.audios).forEach(e=>{e instanceof Zn&&e.dispose()}),this.audios={}}},p8=new as(sa.emptyData());import{Mesh as h8}from"three";import{mergeBufferGeometries as x8}from"three/examples/jsm/utils/BufferGeometryUtils.js";function fg(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as mg,ShaderLib as xA}from"three";function hg(n){let t=new Set;return n.traverse(e=>{if(ar(e))if(Ge(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(bA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new mg,specularColor:new mg});let o=0;e.onBeforeCompile=(i,s)=>{r&&r(i,s),i.uniforms=Object.assign({},xA.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(l=>{if(i.uniforms.transmissionSamplerMap.value){let c=l.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value)}else o++,o<2&&(e.needsUpdate=!0)})}}else vA(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function bA(n){return n.getLayersOfType("transmission").length>0}function vA(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 gg(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function yg(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(l=>{l.name=l.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as SA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function xg(n){let t=[];return n.traverse(e=>{e instanceof Dr&&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&&fg(c),c}),s=SA(e.parameters.hideBase?i:[r instanceof Fe?r.geometry:[],...i]);r instanceof Fe&&(r.geometry=s),r.remove(e),r.cloner=void 0}),n}function bg(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function vg(n){Object.values(n.shared.materials).forEach(t=>{au(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?au(e.material):"materials"in e&&e.materials.forEach(r=>{au(r)})})}function au(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 Sg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",lu=class extends _A{load(t,e,r,o=console.error){let i=new wA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Sg+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Sg),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 dg(t,vg);kh(e)&&await Fh();let r=new as(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new ss(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&&Nf(s)&&Object.assign(s,{makeDefault:!0})}return o=xg(o),o=hg(o),o=gg(o),o=yg(o),o=bg(o),o}};export{lu as default};
|