@splinetool/loader 0.9.348 → 0.9.350

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.
@@ -1,10 +1,10 @@
1
- var Qg=Object.create;var Xl=Object.defineProperty;var Jg=Object.getOwnPropertyDescriptor;var e0=Object.getOwnPropertyNames;var t0=Object.getPrototypeOf,r0=Object.prototype.hasOwnProperty;var Hs=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),o0=(n,r)=>{for(var e in r)Xl(n,e,{get:r[e],enumerable:!0})},n0=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of e0(r))!r0.call(n,o)&&o!==e&&Xl(n,o,{get:()=>r[o],enumerable:!(t=Jg(r,o))||t.enumerable});return n};var Ws=(n,r,e)=>(e=n!=null?Qg(t0(n)):{},n0(r||!n||!n.__esModule?Xl(e,"default",{value:n,enumerable:!0}):e,n));var Um=Hs((_c,km)=>{(function(n,r){typeof _c=="object"?km.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(_c,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,s=1;e.length==0&&(e=[+new Date]);var l=r();t=l(" "),o=l(" "),i=l(" ");for(var c=0;c<e.length;c++)t-=l(e[c]),t<0&&(t+=1),o-=l(e[c]),o<0&&(o+=1),i-=l(e[c]),i<0&&(i+=1);l=null;var d=function(){var a=2091639*t+s*23283064365386963e-26;return t=o,o=i,i=a-(s=a|0)};return d.next=d,d.uint32=function(){return d()*4294967296},d.fract53=function(){return d()+(d()*2097152|0)*11102230246251565e-32},d.version="Alea 0.9",d.args=e,d.exportState=function(){return[t,o,i,s]},d.importState=function(a){t=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[3]||0},d}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=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 t.version="Mash 0.9",t}})});var Xm=Hs((Xa,$m)=>{(function(n,r){typeof Xa=="object"&&typeof $m<"u"?r(Xa):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Xa,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,l,c,d,a,u,p,f,m,h,y,g,v=r[0].length,b=r.length;if(b<v)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],T=[],_=e==="f"?b:v,x=h=p=0;x<b;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var N,P=new Array(v).fill(0);for(x=0;x<b;x++)for(s=0;s<v;s++)S[x][s]=r[x][s];for(x=0;x<v;x++){for(w[x]=p,m=0,c=x+1,s=x;s<b;s++)m+=Math.pow(S[s][x],2);if(m<i)p=0;else for(f=(u=S[x][x])*(p=u<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x]=u-p,s=c;s<v;s++){for(m=0,l=x;l<b;l++)m+=S[l][x]*S[l][s];for(u=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+u*S[l][x]}for(P[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(S[x][s],2);if(m<i)p=0;else{for(f=(u=S[x][x+1])*(p=u<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x+1]=u-p,s=c;s<v;s++)w[s]=S[x][s]/f;for(s=c;s<b;s++){for(m=0,l=c;l<v;l++)m+=S[s][l]*S[x][l];for(l=c;l<v;l++)S[s][l]=S[s][l]+m*w[l]}}h<(y=Math.abs(P[x])+Math.abs(w[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=S[x][x+1]*p,s=c;s<v;s++)T[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[x][x]=1,p=w[x],c=x}if(e){if(e==="f")for(x=v;x<b;x++){for(s=v;s<b;s++)S[x][s]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=P[x],s=c;s<_;s++)S[x][s]=0;if(p!==0){for(f=S[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<b;l++)m+=S[l][x]*S[l][s];for(u=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+u*S[l][x]}for(s=x;s<b;s++)S[s][x]=S[s][x]/p}else for(s=x;s<b;s++)S[s][x]=0;S[x][x]=S[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var C=0;C<50;C++){for(N=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(P[c-1])<=o)break}if(!N){for(a=0,d=c-(m=1),x=c;x<l+1&&(u=m*w[x],w[x]=a*w[x],!(Math.abs(u)<=o));x++)if(p=P[x],P[x]=Math.sqrt(u*u+p*p),a=p/(f=P[x]),m=-u/f,e)for(s=0;s<b;s++)y=S[s][d],g=S[s][x],S[s][d]=y*a+g*m,S[s][x]=-y*m+g*a}if(g=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],u=(((y=P[l-1])-g)*(y+g)+((p=w[l-1])-(f=w[l]))*(p+f))/(2*f*y),p=Math.sqrt(u*u+1),u=((h-g)*(h+g)+f*(y/(u<0?u-p:u+p)-f))/h,x=c+(m=a=1);x<l+1;x++){if(p=w[x],y=P[x],f=m*p,p*=a,g=Math.sqrt(u*u+f*f),u=h*(a=u/(w[x-1]=g))+p*(m=f/g),p=-h*m+p*a,f=y*m,y*=a,t)for(s=0;s<v;s++)h=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(u*u+f*f),u=(a=u/(P[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<b;s++)y=S[s][x-1],g=S[s][x],S[s][x-1]=y*a+g*m,S[s][x]=-y*m+g*a}w[c]=0,w[l]=u,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:S,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Ey=Hs(Cl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||r;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||r;if(a=parseFloat(a),u.ctx||d(),typeof a<"u"&&a>=0&&a<=1){if(u._volume=a,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a,r.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return u}return u._volume},mute:function(a){var u=this||r;u.ctx||d(),u._muted=a,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(a?0:u._volume,r.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=u._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return u},stop:function(){for(var a=this||r,u=0;u<a._howls.length;u++)a._howls[u].stop();return a},unload:function(){for(var a=this||r,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,d()),a},codecs:function(a){return(this||r)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||r;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||r,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return a}if(!u||typeof u.canPlayType!="function")return a;var p=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),v=y&&g&&parseInt(g[1],10)<15;return a._codecs={mp3:!!(!h&&(p||u.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!u.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!u.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(u.canPlayType('audio/wav; codecs="1"')||u.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!u.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!u.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(u.canPlayType("audio/x-m4a;")||u.canPlayType("audio/m4a;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(u.canPlayType("audio/x-m4b;")||u.canPlayType("audio/m4b;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(u.canPlayType("audio/x-mp4;")||u.canPlayType("audio/mp4;")||u.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||r;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(p){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=a._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var b=0;b<a._howls.length;b++)a._howls[b]._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||r;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||r;return a._unlocked&&u._html5AudioPool.push(a),u},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var u=0;u<a._howls.length;u++)if(a._howls[u]._webAudio){for(var p=0;p<a._howls[u]._sounds.length;p++)if(!a._howls[u]._sounds[p]._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"||!r.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 r=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 r.ctx||d(),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=r.usingWebAudio&&!u._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._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(r.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var p=0;p<a._src.length;p++){var f,m;if(a._format&&a._format[p])f=a._format[p];else{if(m=a._src[p],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&&r.codecs(f)){u=a._src[p];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 t(a),a._webAudio&&i(a),a},play:function(a,u){var p=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&p._state==="loaded"&&!p._sprite[a])return null;if(typeof a>"u"&&(a="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?a=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),p._state!=="loaded"){y._sprite=a,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return u||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var v=Math.max(0,y._seek>0?y._seek:p._sprite[a][0]/1e3),b=Math.max(0,(p._sprite[a][0]+p._sprite[a][1])/1e3-v),w=b*1e3/Math.abs(y._rate),S=p._sprite[a][0]/1e3,T=(p._sprite[a][0]+p._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var _=function(){y._paused=!1,y._seek=v,y._start=S,y._stop=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){p._ended(y);return}var x=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,v,86400):x.bufferSource.noteGrainOn(0,v,b):y._loop?x.bufferSource.start(0,v,86400):x.bufferSource.start(0,v,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),u||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var P=function(){x.currentTime=v,x.muted=y._muted||p._muted||r._muted||x.muted,x.volume=y._volume*r.volume(),x.playbackRate=y._rate;try{var A=x.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,x._unlocked=!0,u?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):u||(p._playLock=!1,_(),p._emit("play",y._id)),x.playbackRate=y._rate,x.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}a!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(R){p._emit("playerror",y._id,R)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var C=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||C)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),x.removeEventListener(r._canPlayEvent,O,!1)};x.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(a)}}),u;for(var p=u._getSoundIds(a),f=0;f<p.length;f++){u._clearTimer(p[f]);var m=u._soundById(p[f]);if(m&&!m._paused&&(m._seek=u.seek(p[f]),m._rateSeek=0,m._paused=!0,u._stopFade(p[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 p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(a)}}),p;for(var f=p._getSoundIds(a),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._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&&p._clearSound(h._node))),u||p._emit("stop",h._id))}return p},mute:function(a,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,u)}}),p;if(typeof u>"u")if(typeof a=="boolean")p._muted=a;else return p._muted;for(var f=p._getSoundIds(u),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=a,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:a),p._emit("mute",h._id))}return p},volume:function(){var a=this,u=arguments,p,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):p=parseFloat(u[0])}else u.length>=2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof p<"u"&&p>=0&&p<=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=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)y=a._soundById(f[g]),y&&(y._volume=p,u[2]||a._stopFade(f[g]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,u,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,u,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),u=Math.min(Math.max(0,parseFloat(u)),1),p=parseFloat(p),m.volume(a,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var v=r.ctx.currentTime,b=v+p/1e3;g._volume=a,g._node.gain.setValueAtTime(a,v),g._node.gain.linearRampToValueAtTime(u,b)}m._startFadeInterval(g,a,u,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,u,p,f,m,h){var y=this,g=u,v=p-u,b=Math.abs(v/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var T=(Date.now()-S)/f;S=Date.now(),g+=v*T,g=Math.round(g*100)/100,v<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?a._volume=g:y.volume(g,a._id,!0),h&&(y._volume=g),(p<u&&g<=p||p>u&&g>=p)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(p,a._id),y._emit("fade",a._id))},w)},_stopFade:function(a){var u=this,p=u._soundById(a);return p&&p._interval&&(u._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,u.volume(p._fadeTo,a),p._fadeTo=null,u._emit("fade",a)),u},loop:function(){var a=this,u=arguments,p,f,m;if(u.length===0)return a._loop;if(u.length===1)if(typeof u[0]=="boolean")p=u[0],a._loop=p;else return m=a._soundById(parseInt(u[0],10)),m?m._loop:!1;else u.length===2&&(p=u[0],f=parseInt(u[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=p,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,u=arguments,p,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):p=parseFloat(u[0])}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));var y;if(typeof p=="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=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=a._soundById(f[g]),y){a.playing(f[g])&&(y._rateSeek=a.seek(f[g]),y._playStart=a._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var v=a.seek(f[g]),b=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,w=b*1e3/Math.abs(y._rate);(a._endTimers[f[g]]||!y._paused)&&(a._clearTimer(f[g]),a._endTimers[f[g]]=setTimeout(a._ended.bind(a,y),w)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,u=arguments,p,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,p=parseFloat(u[0]))}else u.length===2&&(p=parseFloat(u[0]),f=parseInt(u[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,u)}}),a;var y=a._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=a.playing(f);g&&a.pause(f,!0),y._seek=p,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var v=function(){g&&a.play(f,!0),a._emit("seek",f)};if(g&&!a._webAudio){var b=function(){a._playLock?setTimeout(b,0):v()};setTimeout(b,0)}else v()}else if(a._webAudio){var w=a.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var u=this;if(typeof a=="number"){var p=u._soundById(a);return p?!p._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,p=u._duration,f=u._soundById(a);return f&&(p=u._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,u=a._sounds,p=0;p<u.length;p++)u[p]._paused||a.stop(u[p]._id),a._webAudio||(a._clearSound(u[p]._node),u[p]._node.removeEventListener("error",u[p]._errorFn,!1),u[p]._node.removeEventListener(r._canPlayEvent,u[p]._loadFn,!1),u[p]._node.removeEventListener("ended",u[p]._endFn,!1),r._releaseHtml5Audio(u[p]._node)),delete u[p]._node,a._clearTimer(u[p]._id);var f=r._howls.indexOf(a);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===a._src||a._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],r.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,u,p,f){var m=this,h=m["_on"+a];return typeof u=="function"&&h.push(f?{id:p,fn:u,once:f}:{id:p,fn:u}),m},off:function(a,u,p){var f=this,m=f["_on"+a],h=0;if(typeof u=="number"&&(p=u,u=null),u||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(u===m[h].fn&&y||!u&&y){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(a,u,p){var f=this;return f.on(a,u,p,1),f},_emit:function(a,u,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===u||a==="load")&&(setTimeout(function(y){y.call(this,u,p)}.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 p=u._queue[0];p.event===a&&(u._queue.shift(),u._loadQueue()),a||p.action()}return u},_ended:function(a){var u=this,p=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[p][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=r.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),r._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 p=u._soundById(a);p&&p._node&&p._node.removeEventListener("ended",u._endTimers[a],!1)}delete u._endTimers[a]}return u},_soundById:function(a){for(var u=this,p=0;p<u._sounds.length;p++)if(a===u._sounds[p]._id)return u._sounds[p];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 t(a)},_drain:function(){var a=this,u=a._pool,p=0,f=0;if(!(a._sounds.length<u)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=u)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),p--)}}},_getSoundIds:function(a){var u=this;if(typeof a>"u"){for(var p=[],f=0;f<u._sounds.length;f++)p.push(u._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var u=this;return a._node.bufferSource=r.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,r.ctx.currentTime),u},_cleanBuffer:function(a){var u=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),p))try{a.bufferSource.buffer=r._scratchBuffer}catch{}return a.bufferSource=null,u},_clearSound:function(a){var u=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);u||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.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=++r._counter,u._sounds.push(a),a.create(),a},create:function(){var a=this,u=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return u._webAudio?(a._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),a._node.gain.setValueAtTime(p,r.ctx.currentTime),a._node.paused=!0,a._node.connect(r.masterGain)):r.noAudio||(a._node=r._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(r._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=p*r.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=++r._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(r._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 p=atob(u.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,u,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[u],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,u){var p=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&u._sounds.length>0?(o[u._src]=m,c(u,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(a).then(f).catch(p):r.ctx.decodeAudioData(a,f,p)},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())},d=function(){if(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),u=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=u?parseInt(u[1],10):null;if(a&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof Cl<"u"&&(Cl.Howler=r,Cl.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],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(r,e,t,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,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof r=="number")l._orientation=[r,e,t,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,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(r,e,t,o,i,s);else return c;return l},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._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},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),s=0;s<i.length;s++){var l=t._soundById(i[s]);if(l)if(typeof r=="number")l._stereo=r,l._pos=[r,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(r,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(r,0,0):l._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];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 r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];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 r=="number")c._orientation=[r,e,t],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(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var s=r._getSoundIds(o),l=0;l<s.length;l++)if(i=r._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.panningModel:c.panningModel};var d=i._panner;d?(d.coneInnerAngle=c.coneInnerAngle,d.coneOuterAngle=c.coneOuterAngle,d.coneOuterGain=c.coneOuterGain,d.distanceModel=c.distanceModel,d.maxDistance=c.maxDistance,d.refDistance=c.refDistance,d.rolloffFactor=c.rolloffFactor,d.panningModel=c.panningModel):(i._pos||(i._pos=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var kg=Hs((H7,jg)=>{jg.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),l=Number(o[i]);if(s>l)return 1;if(l>s)return-1;if(!isNaN(s)&&isNaN(l))return 1;if(isNaN(s)&&!isNaN(l))return-1}return 0}});import{FileLoader as zA,Loader as FA}from"three";var Ne=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,Ne.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,l={...e,[i]:s};return Object.setPrototypeOf(l,Ne.prototype),{data:l,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ne.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Ri(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&Ri(t)}return Object.freeze(n)}function yd(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var Xo=class extends Error{};function qs(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function mr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function Yo(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 gd(){return typeof process<"u"}function xd(n,r){for(let e of n)r(e.id,e.data)!==!0&&xd(e.children,r)}function vd(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)vd(e,r)}var He=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,He.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ri(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);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,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)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,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&vd(o,t)}}traverse(e){xd(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,t){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:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let l=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let d=i.findIndex(a=>a.id===c);if(d<0)throw new Error;i=[...i],i[d]={...i[d],children:l}}Object.setPrototypeOf(i,He.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:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:s,children:l}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,d=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return d=[...d,a],d.sort((p,f)=>p.fi-f.fi),e.localIndex=d.indexOf(a),{data:this.modifyArrayBy(c,d),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(d=>d.id===t);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:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Xo("cyclic tree");f=this.parent(f)}}let s=this.parent(i);if(s===void 0)return null;let l=s,c=this.childrenArray(s),d=c.findIndex(f=>f.id===i);c=[...c];let a=c.splice(d,1)[0],u=this.modifyArrayBy(s,c);s=t,c=u.childrenArray(s);let p=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:p,id:i}}}previous(e,t){if(t===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===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>yd(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return mr(0,o,o);{let s=i[0].fi;return mr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==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 mr(c,c+o,o)}else return mr(s.fi,l.fi,o)}}};var Ko;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},s=[...e],l=!1;if(o)for(let c of Object.keys(o)){let d=parseInt(c);if(isNaN(d))throw new Error("wrong index");i[c]=s[d],s[d]=o[c],l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},s={...e},l=!1;if(o)for(let c of Object.keys(o)){i[c]=s[c];let d=o[c];d===void 0?delete s[c]:s[c]=d,l=!0}return l?{data:s,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(Ko||(Ko={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ri(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,t){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(d=>d.id===e);if(s<0)throw new Error("not expected");let l=i[s];return i=[...i],i[s]={...l,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return gd()||t.fillCaches(),t}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:t,id:o,data:i}=e,s=this,l={fi:t,id:o,data:i};return s=[...s,l],s.sort((d,a)=>d.fi-a.fi),e.localIndex=s.indexOf(l),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,i=o.findIndex(c=>c.id===t);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:t,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:t};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 t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return mr(0,t,t);{let i=o[0].fi;return mr(i-t,i,t)}}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 mr(l,l+t,t)}else return mr(i.fi,s.fi,t)}}};function Zo(n){return n&&typeof n=="object"&&n instanceof Le}var Le=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!Zo(t))return null;o+=1}t=t?qs(t):new Le;for(let[c,d]of Object.entries(r.props)){let a=t[c];i[c]=a,d===void 0?delete t[c]:t[c]=d}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=qs(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let d=qs(c);d[r.path[o-1]]=t,t=d}else{let d=new Le;d[r.path[o-1]]=t,t=d}}o-=1}let s=Object.setPrototypeOf(t,Le.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},Gr;(t=>{function n(o,i){return Vi(o,i)??o}t.apply=n;function r(o,i){return Kl(o,i)}t.merge=r;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=mt.zoomOnce(c,l[s]),c===void 0)return i;if(!Zo(c))return;s+=1}if(c===void 0)return i;if(!!Zo(c))if(i.type===0){let d={...i.props};for(let a of Object.keys(c))delete d[a];return{...i,props:d}}else if(i.type===1||i.type===4||i.type===7){let d=Yl([i],c);return d?(console.log(d),d):i}else return i}t.filterOp=e})(Gr||(Gr={}));function Yl(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=Vi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Yl(o.children,r);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}}else return{...o,id:i,data:s}});if(e)return t}function i0(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=Vi(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Vi(n,r){if(!Zo(r))return r;if(n instanceof He){let e=Yl(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return i0(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=Vi(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Le)return Kl(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=Vi(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Kl(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Zo(r))return r;if(!Zo(n))return Gr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Le;for(let o of e){let i=Kl(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function bd(n,r){let e={cur:[],result:[],len:0};return n=zi(n,r,e)??n,[n,e.result]}function $s(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Xs(n){n&&(n.len-=1)}function s0(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Sd(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=zi(i.data,r,$s(e,s));Xs(e),t=t||c!==void 0,c===void 0&&(c=i.data);let d=Sd(i.children,r,e);return d!==void 0?t=!0:d=i.children,{...i,id:s,data:c,children:d}});if(t)return o}function a0(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=zi(i.data,r,$s(e,s));return Xs(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function zi(n,r,e){if(n instanceof He){let t=Sd(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return a0(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=zi(i,r,$s(e,s));return Xs(e),t=t||l!==void 0,l===void 0&&(l=i),l});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!Yo(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=r[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=zi(s,r,$s(e,i));Xs(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");s0(e)}return t}else return}}var Ys;(r=>{function n(e,t){let o=mt.zoom(t,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:{}}}r.replaceProps=n})(Ys||(Ys={}));var it;(l=>{function n(c,d){return{...c,path:c.path.slice(d)}}l.drop=n;function r(c,d){return e(c,d)?.data??c}l.applySimple=r;function e(c,d){let a=d.path;for(var u=[];;){let p;if(c instanceof Le&&d.type===0&&(p=c.runOp({...d,path:a.slice(u.length)}),p===null&&(p=void 0)),p===void 0&&u.length===a.length&&(c instanceof He||c instanceof he||c instanceof Ne?p=c.runOp(d):p=Ko.runOp(c,d)),p!==void 0)if(p!==null){let h=p.data;for(let y=u.length-1;y>=0;y--){let g=a[y],v=u[y];if(v instanceof He){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ne){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Le){let b={...v,[g]:h};h=Object.setPrototypeOf(b,Le.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...v],h[g]=b}else h={...v,[g]:h};else return null}return{data:h,actual:{...p.actual,path:a},reverse:{...p.reverse,path:a}}}else return null;let f=a[u.length],m;if(c instanceof He){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)u.push(c),c=m;else return null}}l.apply=e;function t(c,d){for(let a=0;a<c.length&&a<d.length;a++)if(c[a]!==d[a])return!0;return!1}l.pathDisjoint=t;function o(c,d){if(c.length!==d.length)return!1;for(let a=0;a<c.length;a++)if(c[a]!==d[a])return!1;return!0}l.pathEq=o;function i(c,d){return t(c.path,d.path)}l.commutative=i;function s(c,d){return c.type===0&&d.type===0&&o(c.path,d.path)?Object.keys(c.props).every(a=>d.props[a]!==void 0):!1}l.subsumed=s})(it||(it={}));var Zl;(c=>{function n(){return[]}c.empty=n;function r(d,a){let u=[];for(let p of d){let[f,...m]=p.path;f===a&&u.push({...p,path:m})}return u}c.removePrefix=r;function e(d,a){return d.map(u=>({...u,path:[a,...u.path]}))}c.addPrefix=e;function t(d,a){return[...d,...a]}c.concat=t;function o(d,a){return[...d.filter(p=>!a.some(f=>it.subsumed(p,f))),...a]}c.compress=o;function i(d,a){return d.every(u=>a.every(p=>it.commutative(u,p)))}c.commutative=i;function s(d,a){for(let u of a){let p=l(d,u);p!==null&&(d=p.data)}return d}c.applyAll=s;function l(d,a){var u=d;let p=[],f=[];for(let m of a)try{if(m.type===3){let h=mt.zoom(u,[...m.path,m.id]),y=it.apply(u,{...m,type:2});if(y!==null){u=y.data;let[g,v]=bd(u,{[m.id]:h});u=g;for(let b of v){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=it.apply(u,m);h!==null&&(p.push(h.actual),u=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Xo)return null;throw h}return{data:u,actual:p,reverse:f.reverse()}}c.apply=l})(Zl||(Zl={}));var wd=Symbol(),l0=Symbol(),Zs=Symbol(),So=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Ks);){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,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Zs];t&&t(),delete this._children[r]}}}},Jl=class extends So{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Ko.runOp(this._current,r),r.path)}},ec=class extends So{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,Ne.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},_d={get(n,r){if(r===Zs)return()=>{n._parent=null};if(r===wd)return n._current;if(r===l0)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],s=Qs(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):i},has(n,r){return r 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,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},c0={..._d,set(n,r,e){let t={type:0,props:{[r]:Ke(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},u0={..._d,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},Qo=class extends So{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Zs]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=Qs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},Jo=class extends So{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Zs]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=Qs(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function Ql(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&mt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Ks=class extends So{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){Ql(this.ts,e,r),Ql(this.actual,t,r),Ql(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Qs(n,r,e){return e instanceof He?new Qo(n,r,e):e instanceof he?new Jo(n,r,e):e instanceof Ne?new Proxy(new ec(n,r,e),u0):e!==null&&typeof e=="object"?Yo(e)?e:new Proxy(new Jl(n,r,e),c0):e}function tc(n){let r=new Ks(n);return[Qs(r,"",n),r]}function en(n,r){let[e,t]=tc(n);return r(e),t.result()}function Ke(n){return n instanceof Qo||n instanceof Jo?n._current:n!==null&&typeof n=="object"?n[wd]:n}var mt;(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 r(i,s,l){let c=t(l,i);if(c!==void 0&&typeof c=="object"&&c!==null){let d={...s};return Object.keys(c).forEach(a=>{delete d[a]}),d}else return s}o.removeOverridden=r;function e(i,s){if((i instanceof He||i instanceof Qo)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof Jo)&&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 t(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=t})(mt||(mt={}));function Td(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function $t(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Js=class{},Fi=class extends Js{constructor(e){super();this.id=e}},ji=class extends Js{constructor(e){super();this.data=e}};var oc;try{oc=new TextDecoder}catch{}var ne,Jr,I=0;var Ed=[],nc=Ed,ic=0,St={},_e,Qr,zt=0,hr=0,Mt,Rr,ht=[],Oe,Pd={useRecords:!1,mapsAsObjects:!0},ki=class{},ac=new ki;ac.name="MessagePack 0xC1";var tn=!1,yr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(ne)return Rd(()=>(ta(),this?this.unpack(r,e):yr.prototype.unpack.call(Pd,r,e)));Jr=e>-1?e:r.length,I=0,ic=0,hr=0,Qr=null,nc=Ed,Mt=null,ne=r;try{Oe=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof yr){if(St=this,this.structures)return _e=this.structures,ea();(!_e||_e.length>0)&&(_e=[])}else St=Pd,(!_e||_e.length>0)&&(_e=[]);return ea()}unpackMultiple(r,e){let t,o=0;try{tn=!0;let i=r.length,s=this?this.unpack(r,i):na.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(ea())===!1)return}else{for(t=[s];I<i;)o=I,t.push(ea());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{tn=!1,ta()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function ea(){try{if(!St.trusted&&!tn){let r=_e.sharedLength||0;r<_e.length&&(_e.length=r)}let n=Re();if(I==Jr)_e.restoreStructures&&Od(),_e=null,ne=null,Rr&&(Rr=null);else if(I>Jr){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!tn)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw _e.restoreStructures&&Od(),ta(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Od(){for(let n in _e.restoreStructures)_e[n]=_e.restoreStructures[n];_e.restoreStructures=null}function Re(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let r=_e[n&63]||St.getStructures&&Ld()[n&63];return r?(r.read||(r.read=lc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,St.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Dd()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}else if(n<192){let r=n-160;if(hr>=I)return Qr.slice(I-zt,(I+=r)-zt);if(hr==0&&Jr<140){let e=r<16?cc(r):Bd(r);if(e!=null)return e}return sc(r)}else{let r;switch(n){case 192:return null;case 193:return Mt?(r=Re(),r>0?Mt[1].slice(Mt.position1,Mt.position1+=r):Mt[0].slice(Mt.position0,Mt.position0-=r)):ac;case 194:return!1;case 195:return!0;case 196:return rc(ne[I++]);case 197:return r=Oe.getUint16(I),I+=2,rc(r);case 198:return r=Oe.getUint32(I),I+=4,rc(r);case 199:return wo(ne[I++]);case 200:return r=Oe.getUint16(I),I+=2,wo(r);case 201:return r=Oe.getUint32(I),I+=4,wo(r);case 202:if(r=Oe.getFloat32(I),St.useFloat32>2){let e=oa[(ne[I]&127)<<1|ne[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Oe.getFloat64(I),I+=8,r;case 204:return ne[I++];case 205:return r=Oe.getUint16(I),I+=2,r;case 206:return r=Oe.getUint32(I),I+=4,r;case 207:return St.int64AsNumber?(r=Oe.getUint32(I)*4294967296,r+=Oe.getUint32(I+4)):r=Oe.getBigUint64(I),I+=8,r;case 208:return Oe.getInt8(I++);case 209:return r=Oe.getInt16(I),I+=2,r;case 210:return r=Oe.getInt32(I),I+=4,r;case 211:return St.int64AsNumber?(r=Oe.getInt32(I)*4294967296,r+=Oe.getUint32(I+4)):r=Oe.getBigInt64(I),I+=8,r;case 212:if(r=ne[I++],r==114)return Md(ne[I++]&63);{let e=ht[r];if(e)return e.read?(I++,e.read(Re())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=ne[I],r==114?(I++,Md(ne[I++]&63,ne[I++])):wo(2);case 214:return wo(4);case 215:return wo(8);case 216:return wo(16);case 217:return r=ne[I++],hr>=I?Qr.slice(I-zt,(I+=r)-zt):p0(r);case 218:return r=Oe.getUint16(I),I+=2,hr>=I?Qr.slice(I-zt,(I+=r)-zt):f0(r);case 219:return r=Oe.getUint32(I),I+=4,hr>=I?Qr.slice(I-zt,(I+=r)-zt):m0(r);case 220:return r=Oe.getUint16(I),I+=2,Cd(r);case 221:return r=Oe.getUint32(I),I+=4,Cd(r);case 222:return r=Oe.getUint16(I),I+=2,Nd(r);case 223:return r=Oe.getUint32(I),I+=4,Nd(r);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 d0=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function lc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>d0.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Re);return n.highByte===0&&(n.read=Ad(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Re()}return t}return e.count=0,n.highByte===0?Ad(r,e):e}var Ad=(n,r)=>function(){let e=ne[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=_e[t]||Ld()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=lc(o,n)),o.read()};function Ld(){let n=Rd(()=>(ne=null,St.getStructures()));return _e=St._mergeStructures(n,_e)}var sc=ra,p0=ra,f0=ra,m0=ra;function ra(n){let r;if(n<16&&(r=cc(n)))return r;if(n>64&&oc)return oc.decode(ne.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=ne[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[I++]&63,s=ne[I++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[I++]&63,s=ne[I++]&63,l=ne[I++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=Ze.apply(String,t),t.length=0)}return t.length>0&&(r+=Ze.apply(String,t)),r}function Cd(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}function Nd(n){if(St.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Dd()]=Re();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Re(),Re());return r}}var Ze=String.fromCharCode;function Bd(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=ne[I++];if((o&128)>0){I=r;return}e[t]=o}return Ze.apply(String,e)}function cc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[I++];if((r&128)>1){I-=1;return}return Ze(r)}}else{let r=ne[I++],e=ne[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return Ze(r,e);let t=ne[I++];if((t&128)>0){I-=3;return}return Ze(r,e,t)}else{let r=ne[I++],e=ne[I++],t=ne[I++],o=ne[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return Ze(r,e,t,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return Ze(r,e,t,o,i)}}else if(n<8){let i=ne[I++],s=ne[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return Ze(r,e,t,o,i,s);let l=ne[I++];if((l&128)>0){I-=7;return}return Ze(r,e,t,o,i,s,l)}else{let i=ne[I++],s=ne[I++],l=ne[I++],c=ne[I++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return Ze(r,e,t,o,i,s,l,c);{let d=ne[I++];if((d&128)>0){I-=9;return}return Ze(r,e,t,o,i,s,l,c,d)}}else if(n<12){let d=ne[I++],a=ne[I++];if((d&128)>0||(a&128)>0){I-=10;return}if(n<11)return Ze(r,e,t,o,i,s,l,c,d,a);let u=ne[I++];if((u&128)>0){I-=11;return}return Ze(r,e,t,o,i,s,l,c,d,a,u)}else{let d=ne[I++],a=ne[I++],u=ne[I++],p=ne[I++];if((d&128)>0||(a&128)>0||(u&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return Ze(r,e,t,o,i,s,l,c,d,a,u,p);{let f=ne[I++];if((f&128)>0){I-=13;return}return Ze(r,e,t,o,i,s,l,c,d,a,u,p,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return Ze(r,e,t,o,i,s,l,c,d,a,u,p,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return Ze(r,e,t,o,i,s,l,c,d,a,u,p,f,m,h)}}}}}function rc(n){return St.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function wo(n){let r=ne[I++];if(ht[r])return ht[r](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Id=new Array(4096);function Dd(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,hr>=I)return Qr.slice(I-zt,(I+=n)-zt);if(!(hr==0&&Jr<180))return sc(n)}else return I--,Re();let r=(n<<5^(n>1?Oe.getUint16(I):n>0?ne[I]:0))&4095,e=Id[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Oe.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],Id[r]=e,e.bytes=n;t<o;)i=Oe.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?cc(n):Bd(n);return l!=null?e.string=l:e.string=sc(n)}var Md=(n,r)=>{var e=Re();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=_e[n];return o&&o.isShared&&((_e.restoreStructures||(_e.restoreStructures=[]))[n]=o),_e[n]=e,e.read=lc(e,t),e.read()},Gd=typeof self=="object"?self:global;ht[0]=()=>{};ht[0].noBuffer=!0;ht[101]=()=>{let n=Re();return(Gd[n[0]]||Error)(n[1])};ht[105]=n=>{let r=Oe.getUint32(I-4);Rr||(Rr=new Map);let e=ne[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Rr.set(r,o);let i=Re();return o.used?Object.assign(t,i):(o.target=i,i)};ht[112]=n=>{let r=Oe.getUint32(I-4),e=Rr.get(r);return e.used=!0,e.target};ht[115]=()=>new Set(Re());var uc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ht[116]=n=>{let r=n[0],e=uc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Gd[e](Uint8Array.prototype.slice.call(n,1).buffer)};ht[120]=()=>{let n=Re();return new RegExp(n[0],n[1])};ht[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,Mt=[Re(),Re()],Mt.position0=0,Mt.position1=0;let t=I;I=e;try{return Re()}finally{I=t}};ht[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 Rd(n){let r=Jr,e=I,t=ic,o=zt,i=hr,s=Qr,l=nc,c=Rr,d=Mt,a=new Uint8Array(ne.slice(0,Jr)),u=_e,p=_e.slice(0,_e.length),f=St,m=tn,h=n();return Jr=r,I=e,ic=t,zt=o,hr=i,Qr=s,nc=l,Rr=c,Mt=d,ne=a,tn=m,_e=u,_e.splice(0,_e.length,...p),St=f,Oe=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function ta(){ne=null,Rr=null,_e=null}function Vd(n){n.unpack?ht[n.type]=n.unpack:ht[n.type]=n}var oa=new Array(147);for(let n=0;n<256;n++)oa[n]=+("1e"+Math.floor(45.15-n*.30103));var na=new yr({useRecords:!1}),h0=na.unpack,y0=na.unpackMultiple,g0=na.unpack,ia={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},x0=new Float32Array(1),HC=new Uint8Array(x0.buffer,0,4);var sa;try{sa=new TextEncoder}catch{}var aa,pc,la=typeof Buffer<"u",dc=la?Buffer.allocUnsafeSlow:Uint8Array,kd=la?Buffer:Uint8Array,zd=la?4294967296:2144337920,z,je,E=0,gr,xr=null,v0=/[\u0080-\uFFFF]/,Ui=Symbol("record-id"),_o=class extends yr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,d=kd.prototype.utf8Write?function(x,N,P){return z.utf8Write(x,N,P)}:sa&&sa.encodeInto?function(x,N){return sa.encodeInto(x,z.subarray(N)).written}:!1,a=this;r||(r={});let u=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),u&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],b=0,w=0;this.pack=this.encode=function(x,N){if(z||(z=new dc(8192),je=new DataView(z.buffer,0,8192),E=0),gr=z.length-10,gr-E<2048?(z=new dc(z.length),je=new DataView(z.buffer,0,z.length),gr=z.length-10,E=0):E=E+7&2147483640,t=E,l=a.structuredClone?new Map:null,a.bundleStrings?(xr=["",""],z[E++]=214,z[E++]=98,xr.position=E-t,E+=4):xr=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let P=o.sharedLength||0;if(P>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 C=0;C<P;C++){let O=o[C];if(!O)continue;let A,R=o.transitions;for(let k=0,$=O.length;k<$;k++){let te=O[k];A=R[te],A||(A=R[te]=Object.create(null)),R=A}R[Ui]=C+64}c=P}u||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(S(x),xr){je.setUint32(xr.position+t,E-xr.position-t);let P=xr;xr=null,S(P[0]),S(P[1])}if(a.offset=E,l&&l.idsToInsert){E+=l.idsToInsert.length*6,E>gr&&_(E),a.offset=E;let P=S0(z.subarray(t,E),l.idsToInsert);return l=null,P}return N&Hd?(z.start=t,z.end=E,z):z.subarray(t,E)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,v.length>0&&(v=[]);else if(v.length>0&&!u){for(let P=0,C=v.length;P<C;P++)v[P][Ui]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let C=z.subarray(t,E);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,C)}}N&C0&&(E=t)}};let S=x=>{E>gr&&(z=_(E));var N=typeof x,P;if(N==="string"){let C=x.length;if(xr&&C>=8&&C<4096){let R=v0.test(x);xr[R?0:1]+=x,z[E++]=193,S(R?-C:C);return}let O;C<32?O=1:C<256?O=2:C<65536?O=3:O=5;let A=C*3;if(E+A>gr&&(z=_(E+A)),C<64||!d){let R,k,$,te=E+O;for(R=0;R<C;R++)k=x.charCodeAt(R),k<128?z[te++]=k:k<2048?(z[te++]=k>>6|192,z[te++]=k&63|128):(k&64512)===55296&&(($=x.charCodeAt(R+1))&64512)===56320?(k=65536+((k&1023)<<10)+($&1023),R++,z[te++]=k>>18|240,z[te++]=k>>12&63|128,z[te++]=k>>6&63|128,z[te++]=k&63|128):(z[te++]=k>>12|224,z[te++]=k>>6&63|128,z[te++]=k&63|128);P=te-E-O}else P=d(x,E+O,A);P<32?z[E++]=160|P:P<256?(O<2&&z.copyWithin(E+2,E+1,E+1+P),z[E++]=217,z[E++]=P):P<65536?(O<3&&z.copyWithin(E+3,E+2,E+2+P),z[E++]=218,z[E++]=P>>8,z[E++]=P&255):(O<5&&z.copyWithin(E+5,E+3,E+3+P),z[E++]=219,je.setUint32(E,P),E+=4),E+=P}else if(N==="number")if(x>>>0===x)x<64?z[E++]=x:x<256?(z[E++]=204,z[E++]=x):x<65536?(z[E++]=205,z[E++]=x>>8,z[E++]=x&255):(z[E++]=206,je.setUint32(E,x),E+=4);else if(x>>0===x)x>=-32?z[E++]=256+x:x>=-128?(z[E++]=208,z[E++]=x+256):x>=-32768?(z[E++]=209,je.setInt16(E,x),E+=2):(z[E++]=210,je.setInt32(E,x),E+=4);else{let C;if((C=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){z[E++]=202,je.setFloat32(E,x);let O;if(C<4||(O=x*oa[(z[E]&127)<<1|z[E+1]>>7])>>0===O){E+=4;return}else E--}z[E++]=203,je.setFloat64(E,x),E+=8}else if(N==="object")if(!x)z[E++]=192;else{if(l){let O=l.get(x);if(O){if(!O.id){let A=l.idsToInsert||(l.idsToInsert=[]);O.id=A.push(O)}z[E++]=214,z[E++]=112,je.setUint32(E,O.id),E+=4;return}else l.set(x,{offset:E-t})}let C=x.constructor;if(C===Object)T(x,!0);else if(C===Array){P=x.length,P<16?z[E++]=144|P:P<65536?(z[E++]=220,z[E++]=P>>8,z[E++]=P&255):(z[E++]=221,je.setUint32(E,P),E+=4);for(let O=0;O<P;O++)S(x[O])}else if(C===Map){P=x.size,P<16?z[E++]=128|P:P<65536?(z[E++]=222,z[E++]=P>>8,z[E++]=P&255):(z[E++]=223,je.setUint32(E,P),E+=4);for(let[O,A]of x)S(O),S(A)}else{for(let O=0,A=aa.length;O<A;O++){let R=pc[O];if(x instanceof R){let k=aa[O];if(k.write){k.type&&(z[E++]=212,z[E++]=k.type,z[E++]=0),S(k.write.call(this,x));return}let $=z,te=je,X=E;z=null;let q;try{q=k.pack.call(this,x,H=>(z=$,$=null,E+=H,E>gr&&_(E),{target:z,targetView:je,position:E-H}),S)}finally{$&&(z=$,je=te,E=X,gr=z.length-10)}q&&(q.length+E>gr&&_(q.length+E),E=b0(q,z,E,k.type));return}}T(x,!x.hasOwnProperty)}}else if(N==="boolean")z[E++]=x?195:194;else if(N==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))z[E++]=211,je.setBigInt64(E,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)z[E++]=207,je.setBigUint64(E,x);else if(this.largeBigIntToFloat)z[E++]=203,je.setFloat64(E,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(N==="undefined")this.encodeUndefinedAsNil?z[E++]=192:(z[E++]=212,z[E++]=0,z[E++]=0);else if(N==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},T=this.useRecords===!1?this.variableMapSize?x=>{let N=Object.keys(x),P=N.length;P<16?z[E++]=128|P:P<65536?(z[E++]=222,z[E++]=P>>8,z[E++]=P&255):(z[E++]=223,je.setUint32(E,P),E+=4);let C;for(let O=0;O<P;O++)S(C=N[O]),S(x[C])}:(x,N)=>{z[E++]=222;let P=E-t;E+=2;let C=0;for(let O in x)(N||x.hasOwnProperty(O))&&(S(O),S(x[O]),C++);z[P+++t]=C>>8,z[P+t]=C&255}:x=>{let N=Object.keys(x),P,C=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,k=N.length;R<k;R++){let $=N[R];P=C[$],P||(P=C[$]=Object.create(null),O++),C=P}let A=C[Ui];if(A)A>=96&&h?(z[E++]=((A-=96)&31)+96,z[E++]=A>>5):z[E++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let R=N.highByte=A>=96&&h?A-96>>5:-1;C[Ui]=A,s[A-64]=N,A<y?(N.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(z[E++]=(A&31)+96,z[E++]=R):z[E++]=A):(R>=0?(z[E++]=213,z[E++]=114,z[E++]=(A&31)+96,z[E++]=R):(z[E++]=212,z[E++]=114,z[E++]=A),O&&(b+=w*O),v.length>=m&&(v.shift()[Ui]=0),v.push(C),S(N))}for(let R=0,k=N.length;R<k;R++)S(x[N[R]])},_=x=>{let N;if(x>16777216){if(x-t>zd)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(zd,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(x-t<<2,z.length-1)>>12)+1<<12;let P=new dc(N);return je=new DataView(P.buffer,0,N),z.copy?z.copy(P,0,t,x):P.set(z.slice(t,x)),E-=t,t=0,gr=P.length-10,z=P}}useBuffer(r){z=r,je=new DataView(z.buffer,z.byteOffset,z.byteLength),E=0}};pc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ki];aa=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?Fd(n,16,r):jd(la?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==kd&&this.structuredClone?Fd(n,uc.indexOf(e.name),r):jd(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Fd(n,r,e,t){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++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function jd(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function b0(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function S0(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let l=i+t;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 eo(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)");pc.unshift(n.Class),aa.unshift(n)}Vd(n)}var Ud=new _o({useRecords:!1}),w0=Ud.pack,_0=Ud.pack;var{NEVER:T0,ALWAYS:P0,DECIMAL_ROUND:O0,DECIMAL_FIT:A0}=ia,Hd=512,C0=1024;var Wd=new _o({structuredClone:!0});eo({Class:Ne.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ne.prototype),n}});eo({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});eo({Class:He.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,He.prototype),n}});eo({Class:Fi.prototype.constructor,type:4,write(n){return n.id},read(n){return new Fi(n)}});eo({Class:ji.prototype.constructor,type:5,write(n){return n.data},read(n){return new ji(n)}});eo({Class:Le.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});function N0(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function fc(n){if(Yo(n))return n;if(Array.isArray(n))return n.map(fc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=fc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var ca;(t=>{function n(o){return Wd.pack(o)}t.serialize=n;function r(o){return Wd.unpack(o)}t.deserialize=r;function e(o){return N0(n(fc(o))).toString()}t.checksum=e})(ca||(ca={}));var qd;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(qd||(qd={}));var to;(l=>{function n(c,d){return c[0]===d[0]&&c[1]===d[1]&&c[2]===d[2]}l.isEqual=n;function r(c,d){return[c[0]+d[0],c[1]+d[1],c[2]+d[2]]}l.add=r;function e(c,d){return[c[0]-d[0],c[1]-d[1],c[2]-d[2]]}l.sub=e;function t(c,d){return[c[0]/d[0],c[1]/d[1],c[2]/d[2]]}l.div=t;function o(c,d){return[c[0]*d[0],c[1]*d[1],c[2]*d[2]]}l.mul=o;function i(c,d){return Math.hypot(c[0]-d[0],c[1]-d[1],c[2]-d[2])}l.dist=i;function s(c,d,a){return[c[0]+(d[0]-c[0])*a,c[1]+(d[1]-c[1])*a,c[2]+(d[2]-c[2])*a]}l.lerp=s})(to||(to={}));var $d;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})($d||($d={}));var ro;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,s){let l=s.slice(0);for(var c=0,d=s.length;c<d;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=t})(ro||(ro={}));var pt;(d=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}d.isRGB=n,d.white={r:1,g:1,b:1},d.red={r:1,g:0,b:0},d.black={r:0,g:0,b:0};function o(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:1}}d.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}d.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}d.fromHex=s;function l(a,u){return a.r===u.r&&a.g===u.g&&a.b===u.b}d.equals=l;function c(a,u,p){return{r:a.r+(u.r-a.r)*p,g:a.g+(u.g-a.g)*p,b:a.b+(u.b-a.b)*p}}d.lerp=c})(pt||(pt={}));var Xt;(l=>{l.white={...pt.white,a:1},l.transparent={...pt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function t(c,d){return{...pt.fromHex(c),a:d}}l.fromHexAndA=t;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,d){return pt.equals(c,d)&&c.a===d.a}l.equals=i;function s(c,d,a){return{r:c.r+(d.r-c.r)*a,g:c.g+(d.g-c.g)*a,b:c.b+(d.b-c.b)*a,a:c.a+(d.a-c.a)*a}}l.lerp=s})(Xt||(Xt={}));var ua;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ua||(ua={}));var Xd;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Xd||(Xd={}));var Yd;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(Yd||(Yd={}));var Yt;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Yt||(Yt={}));var To;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1,autoZoom:!1,autoZoomFrustumSize:790},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(To||(To={}));var vr;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[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:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.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 r(t,o){let i={...t};if(I0.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;M0.forEach(c=>{Object.assign(i.radial,{[c]:l[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,l=o.linear;E0.forEach(c=>{Object.assign(i.linear,{[c]:l[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,l=o.grid;L0.forEach(c=>{Object.assign(i.grid,{[c]:l[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,l=o.toObject;B0.forEach(c=>{Object.assign(i.toObject,{[c]:l[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,l=o.randomnessObject;D0.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(vr||(vr={}));var da;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let l of r){let c=o[l];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,l],props:c})}return s}t.toOps=e})(da||(da={}));var I0=["count"],M0=["radius","start","end","position","scale","rotation"],E0=["position","scale","rotation"],L0=["count","size"],B0=["count","position","scale","rotation"],D0=["strength","scale","rotation","position","movement","seed","freqScale"];var pa;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(pa||(pa={}));var fa;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Xt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:Xt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Xt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(fa||(fa={}));var mc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(mc||(mc={}));var hc;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(hc||(hc={}));var ma;(r=>r.defaultData={...hc.defaultData,...mc.defaultData})(ma||(ma={}));var rn;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(rn||(rn={}));var Kd;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(Kd||(Kd={}));function Qd(n){return n.type!=="displace"}var Zd;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Zd||(Zd={}));var Jd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],ep=["wrapping","image","video"],yt;(o=>{function n(i,s){let{texture:l,...c}=s;if(Object.assign(i,c),l){let d=i.texture;d&&Object.assign(d,l)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){let s={mode:0,isMask:!1,visible:!0};switch(i){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1}}}function t(i){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...s,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:rn.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:pt.fromHex(5526619)};case"depth":return{...s,type:"depth",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{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,type:"gradient",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{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...pt.fromHex(6710886),a:1},colorB:{...pt.fromHex(6710886),a:1},colorC:{...pt.fromHex(16777215),a:1},colorD:{...pt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...s,type:"fresnel",color:Xt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,type:"toon",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:Xt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:Xt.fromHexAndA(0,1),contourColor:Xt.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{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...s,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...pt.fromHex(0),a:1},colorB:{...pt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(yt||(yt={}));var wt;(c=>{function n(d){return!d.layers.some(u=>u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")}c.isMergable=n;function r(d){let a="";return d.layers.forEach(u=>{Object.entries(u.data).forEach(([p,f])=>{a+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>a+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?a+=`${m.toFixed(4)}`:a+=`${m}`}):a+=`${f}`})}),a}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(d="layer1",a="layer2"){return i("phong",d,a)}c.defaultData=t;function o(d,a){return{...d,name:a}}c.withName=o;function i(d,a="layer1",u="layer2"){let p=new he;return p.push({fi:0,data:yt.defaultData("light",d),id:a}),p.push({fi:1,data:yt.defaultData("color"),id:u}),{layers:p}}c.defaultTwoLayerData=i;function s(d,a="phong",u="layer1",p="layer2"){let f=yt.defaultData("texture");Object.assign(f.texture,{image:d});let m=new he;return m.push({fi:0,data:f,id:u}),m.push({fi:1,data:yt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(d,a="phong",u="layer1",p="layer2"){let f=yt.defaultData("video");Object.assign(f.texture,{video:d});let m=new he;return m.push({fi:0,data:f,id:u}),m.push({fi:1,data:yt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(wt||(wt={}));var on;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(on||(on={}));var nn;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(nn||(nn={}));var yc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var ha;(r=>{function n(e,t){let o={...e};return G0.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(ha||(ha={}));var ya={shape:yc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},G0=["depth","offset","angle","twist","startScale","endScale"];var Hi;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Hi||(Hi={}));var ga;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,ha.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ga||(ga={}));var oo;(r=>{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==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:nn.defaultData(),extrusion:ya};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:on.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};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};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI};throw new Error("not implemented")}r.defaultData=n})(oo||(oo={}));function tp(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Vr(n,r){return Object.setPrototypeOf(n,r),n}function xa(n){return Array.isArray(n)?n:[n]}function rp(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var R0=typeof global=="object"&&global&&global.Object===Object&&global,va=R0;var V0=typeof self=="object"&&self&&self.Object===Object&&self,z0=va||V0||Function("return this")(),We=z0;var F0=We.Symbol,Qe=F0;var op=Object.prototype,j0=op.hasOwnProperty,k0=op.toString,Wi=Qe?Qe.toStringTag:void 0;function U0(n){var r=j0.call(n,Wi),e=n[Wi];try{n[Wi]=void 0;var t=!0}catch{}var o=k0.call(n);return t&&(r?n[Wi]=e:delete n[Wi]),o}var np=U0;var H0=Object.prototype,W0=H0.toString;function q0(n){return W0.call(n)}var ip=q0;var $0="[object Null]",X0="[object Undefined]",sp=Qe?Qe.toStringTag:void 0;function Y0(n){return n==null?n===void 0?X0:$0:sp&&sp in Object(n)?np(n):ip(n)}var Et=Y0;function K0(n){return n!=null&&typeof n=="object"}var st=K0;var Z0="[object Symbol]";function Q0(n){return typeof n=="symbol"||st(n)&&Et(n)==Z0}var sn=Q0;function J0(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var ba=J0;var ex=Array.isArray,Ve=ex;var tx=1/0,ap=Qe?Qe.prototype:void 0,lp=ap?ap.toString:void 0;function cp(n){if(typeof n=="string")return n;if(Ve(n))return ba(n,cp)+"";if(sn(n))return lp?lp.call(n):"";var r=n+"";return r=="0"&&1/n==-tx?"-0":r}var up=cp;function rx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Lt=rx;function ox(n){return n}var dp=ox;var nx="[object AsyncFunction]",ix="[object Function]",sx="[object GeneratorFunction]",ax="[object Proxy]";function lx(n){if(!Lt(n))return!1;var r=Et(n);return r==ix||r==sx||r==nx||r==ax}var Sa=lx;var cx=We["__core-js_shared__"],wa=cx;var pp=function(){var n=/[^.]+$/.exec(wa&&wa.keys&&wa.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function ux(n){return!!pp&&pp in n}var fp=ux;var dx=Function.prototype,px=dx.toString;function fx(n){if(n!=null){try{return px.call(n)}catch{}try{return n+""}catch{}}return""}var zr=fx;var mx=/[\\^$.*+?()[\]{}|]/g,hx=/^\[object .+?Constructor\]$/,yx=Function.prototype,gx=Object.prototype,xx=yx.toString,vx=gx.hasOwnProperty,bx=RegExp("^"+xx.call(vx).replace(mx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Sx(n){if(!Lt(n)||fp(n))return!1;var r=Sa(n)?bx:hx;return r.test(zr(n))}var mp=Sx;function wx(n,r){return n?.[r]}var hp=wx;function _x(n,r){var e=hp(n,r);return mp(e)?e:void 0}var _t=_x;var Tx=_t(We,"WeakMap"),_a=Tx;var yp=Object.create,Px=function(){function n(){}return function(r){if(!Lt(r))return{};if(yp)return yp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),gp=Px;function Ox(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var xp=Ox;function Ax(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var vp=Ax;var Cx=800,Nx=16,Ix=Date.now;function Mx(n){var r=0,e=0;return function(){var t=Ix(),o=Nx-(t-e);if(e=t,o>0){if(++r>=Cx)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var bp=Mx;function Ex(n){return function(){return n}}var Sp=Ex;var Lx=function(){try{var n=_t(Object,"defineProperty");return n({},"",{}),n}catch{}}(),an=Lx;var Bx=an?function(n,r){return an(n,"toString",{configurable:!0,enumerable:!1,value:Sp(r),writable:!0})}:dp,wp=Bx;var Dx=bp(wp),_p=Dx;function Gx(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Tp=Gx;var Rx=9007199254740991,Vx=/^(?:0|[1-9]\d*)$/;function zx(n,r){var e=typeof n;return r=r??Rx,!!r&&(e=="number"||e!="symbol"&&Vx.test(n))&&n>-1&&n%1==0&&n<r}var ln=zx;function Fx(n,r,e){r=="__proto__"&&an?an(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Ta=Fx;function jx(n,r){return n===r||n!==n&&r!==r}var cn=jx;var kx=Object.prototype,Ux=kx.hasOwnProperty;function Hx(n,r,e){var t=n[r];(!(Ux.call(n,r)&&cn(t,e))||e===void 0&&!(r in n))&&Ta(n,r,e)}var un=Hx;function Wx(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var l=r[i],c=t?t(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?Ta(e,l,c):un(e,l,c)}return e}var br=Wx;var Pp=Math.max;function qx(n,r,e){return r=Pp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Pp(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var l=Array(r+1);++o<r;)l[o]=t[o];return l[r]=e(s),xp(n,this,l)}}var Op=qx;var $x=9007199254740991;function Xx(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=$x}var dn=Xx;function Yx(n){return n!=null&&dn(n.length)&&!Sa(n)}var Pa=Yx;var Kx=Object.prototype;function Zx(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Kx;return n===e}var pn=Zx;function Qx(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Ap=Qx;var Jx="[object Arguments]";function ev(n){return st(n)&&Et(n)==Jx}var gc=ev;var Cp=Object.prototype,tv=Cp.hasOwnProperty,rv=Cp.propertyIsEnumerable,ov=gc(function(){return arguments}())?gc:function(n){return st(n)&&tv.call(n,"callee")&&!rv.call(n,"callee")},fn=ov;function nv(){return!1}var Np=nv;var Ep=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ip=Ep&&typeof module=="object"&&module&&!module.nodeType&&module,iv=Ip&&Ip.exports===Ep,Mp=iv?We.Buffer:void 0,sv=Mp?Mp.isBuffer:void 0,av=sv||Np,Po=av;var lv="[object Arguments]",cv="[object Array]",uv="[object Boolean]",dv="[object Date]",pv="[object Error]",fv="[object Function]",mv="[object Map]",hv="[object Number]",yv="[object Object]",gv="[object RegExp]",xv="[object Set]",vv="[object String]",bv="[object WeakMap]",Sv="[object ArrayBuffer]",wv="[object DataView]",_v="[object Float32Array]",Tv="[object Float64Array]",Pv="[object Int8Array]",Ov="[object Int16Array]",Av="[object Int32Array]",Cv="[object Uint8Array]",Nv="[object Uint8ClampedArray]",Iv="[object Uint16Array]",Mv="[object Uint32Array]",Ee={};Ee[_v]=Ee[Tv]=Ee[Pv]=Ee[Ov]=Ee[Av]=Ee[Cv]=Ee[Nv]=Ee[Iv]=Ee[Mv]=!0;Ee[lv]=Ee[cv]=Ee[Sv]=Ee[uv]=Ee[wv]=Ee[dv]=Ee[pv]=Ee[fv]=Ee[mv]=Ee[hv]=Ee[yv]=Ee[gv]=Ee[xv]=Ee[vv]=Ee[bv]=!1;function Ev(n){return st(n)&&dn(n.length)&&!!Ee[Et(n)]}var Lp=Ev;function Lv(n){return function(r){return n(r)}}var mn=Lv;var Bp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,qi=Bp&&typeof module=="object"&&module&&!module.nodeType&&module,Bv=qi&&qi.exports===Bp,xc=Bv&&va.process,Dv=function(){try{var n=qi&&qi.require&&qi.require("util").types;return n||xc&&xc.binding&&xc.binding("util")}catch{}}(),Fr=Dv;var Dp=Fr&&Fr.isTypedArray,Gv=Dp?mn(Dp):Lp,Oa=Gv;var Rv=Object.prototype,Vv=Rv.hasOwnProperty;function zv(n,r){var e=Ve(n),t=!e&&fn(n),o=!e&&!t&&Po(n),i=!e&&!t&&!o&&Oa(n),s=e||t||o||i,l=s?Ap(n.length,String):[],c=l.length;for(var d in n)(r||Vv.call(n,d))&&!(s&&(d=="length"||o&&(d=="offset"||d=="parent")||i&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||ln(d,c)))&&l.push(d);return l}var Aa=zv;function Fv(n,r){return function(e){return n(r(e))}}var Ca=Fv;var jv=Ca(Object.keys,Object),Gp=jv;var kv=Object.prototype,Uv=kv.hasOwnProperty;function Hv(n){if(!pn(n))return Gp(n);var r=[];for(var e in Object(n))Uv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Rp=Hv;function Wv(n){return Pa(n)?Aa(n):Rp(n)}var hn=Wv;function qv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Vp=qv;var $v=Object.prototype,Xv=$v.hasOwnProperty;function Yv(n){if(!Lt(n))return Vp(n);var r=pn(n),e=[];for(var t in n)t=="constructor"&&(r||!Xv.call(n,t))||e.push(t);return e}var zp=Yv;function Kv(n){return Pa(n)?Aa(n,!0):zp(n)}var yn=Kv;var Zv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Qv=/^\w*$/;function Jv(n,r){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||sn(n)?!0:Qv.test(n)||!Zv.test(n)||r!=null&&n in Object(r)}var Fp=Jv;var eb=_t(Object,"create"),jr=eb;function tb(){this.__data__=jr?jr(null):{},this.size=0}var jp=tb;function rb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var kp=rb;var ob="__lodash_hash_undefined__",nb=Object.prototype,ib=nb.hasOwnProperty;function sb(n){var r=this.__data__;if(jr){var e=r[n];return e===ob?void 0:e}return ib.call(r,n)?r[n]:void 0}var Up=sb;var ab=Object.prototype,lb=ab.hasOwnProperty;function cb(n){var r=this.__data__;return jr?r[n]!==void 0:lb.call(r,n)}var Hp=cb;var ub="__lodash_hash_undefined__";function db(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=jr&&r===void 0?ub:r,this}var Wp=db;function gn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}gn.prototype.clear=jp;gn.prototype.delete=kp;gn.prototype.get=Up;gn.prototype.has=Hp;gn.prototype.set=Wp;var vc=gn;function pb(){this.__data__=[],this.size=0}var qp=pb;function fb(n,r){for(var e=n.length;e--;)if(cn(n[e][0],r))return e;return-1}var no=fb;var mb=Array.prototype,hb=mb.splice;function yb(n){var r=this.__data__,e=no(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():hb.call(r,e,1),--this.size,!0}var $p=yb;function gb(n){var r=this.__data__,e=no(r,n);return e<0?void 0:r[e][1]}var Xp=gb;function xb(n){return no(this.__data__,n)>-1}var Yp=xb;function vb(n,r){var e=this.__data__,t=no(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var Kp=vb;function xn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}xn.prototype.clear=qp;xn.prototype.delete=$p;xn.prototype.get=Xp;xn.prototype.has=Yp;xn.prototype.set=Kp;var io=xn;var bb=_t(We,"Map"),so=bb;function Sb(){this.size=0,this.__data__={hash:new vc,map:new(so||io),string:new vc}}var Zp=Sb;function wb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Qp=wb;function _b(n,r){var e=n.__data__;return Qp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var ao=_b;function Tb(n){var r=ao(this,n).delete(n);return this.size-=r?1:0,r}var Jp=Tb;function Pb(n){return ao(this,n).get(n)}var ef=Pb;function Ob(n){return ao(this,n).has(n)}var tf=Ob;function Ab(n,r){var e=ao(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var rf=Ab;function vn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}vn.prototype.clear=Zp;vn.prototype.delete=Jp;vn.prototype.get=ef;vn.prototype.has=tf;vn.prototype.set=rf;var Oo=vn;var Cb="Expected a function";function bc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Cb);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(bc.Cache||Oo),e}bc.Cache=Oo;var of=bc;var Nb=500;function Ib(n){var r=of(n,function(t){return e.size===Nb&&e.clear(),t}),e=r.cache;return r}var nf=Ib;var Mb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Eb=/\\(\\)?/g,Lb=nf(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Mb,function(e,t,o,i){r.push(o?i.replace(Eb,"$1"):t||e)}),r}),sf=Lb;function Bb(n){return n==null?"":up(n)}var af=Bb;function Db(n,r){return Ve(n)?n:Fp(n,r)?[n]:sf(af(n))}var Ft=Db;var Gb=1/0;function Rb(n){if(typeof n=="string"||sn(n))return n;var r=n+"";return r=="0"&&1/n==-Gb?"-0":r}var lo=Rb;function Vb(n,r){r=Ft(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[lo(r[e++])];return e&&e==t?n:void 0}var Na=Vb;function zb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var bn=zb;var lf=Qe?Qe.isConcatSpreadable:void 0;function Fb(n){return Ve(n)||fn(n)||!!(lf&&n&&n[lf])}var cf=Fb;function uf(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=cf),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?uf(l,r-1,e,t,o):bn(o,l):t||(o[o.length]=l)}return o}var df=uf;function jb(n){var r=n==null?0:n.length;return r?df(n,1):[]}var pf=jb;function kb(n){return _p(Op(n,void 0,pf),n+"")}var Ia=kb;var Ub=Ca(Object.getPrototypeOf,Object),Sn=Ub;var Hb="[object Object]",Wb=Function.prototype,qb=Object.prototype,ff=Wb.toString,$b=qb.hasOwnProperty,Xb=ff.call(Object);function Yb(n){if(!st(n)||Et(n)!=Hb)return!1;var r=Sn(n);if(r===null)return!0;var e=$b.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&ff.call(e)==Xb}var mf=Yb;function Kb(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var hf=Kb;function Zb(){this.__data__=new io,this.size=0}var yf=Zb;function Qb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var gf=Qb;function Jb(n){return this.__data__.get(n)}var xf=Jb;function eS(n){return this.__data__.has(n)}var vf=eS;var tS=200;function rS(n,r){var e=this.__data__;if(e instanceof io){var t=e.__data__;if(!so||t.length<tS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new Oo(t)}return e.set(n,r),this.size=e.size,this}var bf=rS;function wn(n){var r=this.__data__=new io(n);this.size=r.size}wn.prototype.clear=yf;wn.prototype.delete=gf;wn.prototype.get=xf;wn.prototype.has=vf;wn.prototype.set=bf;var _n=wn;function oS(n,r){return n&&br(r,hn(r),n)}var Sf=oS;function nS(n,r){return n&&br(r,yn(r),n)}var wf=nS;var Of=typeof exports=="object"&&exports&&!exports.nodeType&&exports,_f=Of&&typeof module=="object"&&module&&!module.nodeType&&module,iS=_f&&_f.exports===Of,Tf=iS?We.Buffer:void 0,Pf=Tf?Tf.allocUnsafe:void 0;function sS(n,r){if(r)return n.slice();var e=n.length,t=Pf?Pf(e):new n.constructor(e);return n.copy(t),t}var Af=sS;function aS(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var Cf=aS;function lS(){return[]}var Ma=lS;var cS=Object.prototype,uS=cS.propertyIsEnumerable,Nf=Object.getOwnPropertySymbols,dS=Nf?function(n){return n==null?[]:(n=Object(n),Cf(Nf(n),function(r){return uS.call(n,r)}))}:Ma,Tn=dS;function pS(n,r){return br(n,Tn(n),r)}var If=pS;var fS=Object.getOwnPropertySymbols,mS=fS?function(n){for(var r=[];n;)bn(r,Tn(n)),n=Sn(n);return r}:Ma,Ea=mS;function hS(n,r){return br(n,Ea(n),r)}var Mf=hS;function yS(n,r,e){var t=r(n);return Ve(n)?t:bn(t,e(n))}var La=yS;function gS(n){return La(n,hn,Tn)}var $i=gS;function xS(n){return La(n,yn,Ea)}var Ba=xS;var vS=_t(We,"DataView"),Da=vS;var bS=_t(We,"Promise"),Ga=bS;var SS=_t(We,"Set"),Ra=SS;var Ef="[object Map]",wS="[object Object]",Lf="[object Promise]",Bf="[object Set]",Df="[object WeakMap]",Gf="[object DataView]",_S=zr(Da),TS=zr(so),PS=zr(Ga),OS=zr(Ra),AS=zr(_a),Ao=Et;(Da&&Ao(new Da(new ArrayBuffer(1)))!=Gf||so&&Ao(new so)!=Ef||Ga&&Ao(Ga.resolve())!=Lf||Ra&&Ao(new Ra)!=Bf||_a&&Ao(new _a)!=Df)&&(Ao=function(n){var r=Et(n),e=r==wS?n.constructor:void 0,t=e?zr(e):"";if(t)switch(t){case _S:return Gf;case TS:return Ef;case PS:return Lf;case OS:return Bf;case AS:return Df}return r});var kr=Ao;var CS=Object.prototype,NS=CS.hasOwnProperty;function IS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&NS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Rf=IS;var MS=We.Uint8Array,Pn=MS;function ES(n){var r=new n.constructor(n.byteLength);return new Pn(r).set(new Pn(n)),r}var On=ES;function LS(n,r){var e=r?On(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Vf=LS;var BS=/\w*$/;function DS(n){var r=new n.constructor(n.source,BS.exec(n));return r.lastIndex=n.lastIndex,r}var zf=DS;var Ff=Qe?Qe.prototype:void 0,jf=Ff?Ff.valueOf:void 0;function GS(n){return jf?Object(jf.call(n)):{}}var kf=GS;function RS(n,r){var e=r?On(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Uf=RS;var VS="[object Boolean]",zS="[object Date]",FS="[object Map]",jS="[object Number]",kS="[object RegExp]",US="[object Set]",HS="[object String]",WS="[object Symbol]",qS="[object ArrayBuffer]",$S="[object DataView]",XS="[object Float32Array]",YS="[object Float64Array]",KS="[object Int8Array]",ZS="[object Int16Array]",QS="[object Int32Array]",JS="[object Uint8Array]",e1="[object Uint8ClampedArray]",t1="[object Uint16Array]",r1="[object Uint32Array]";function o1(n,r,e){var t=n.constructor;switch(r){case qS:return On(n);case VS:case zS:return new t(+n);case $S:return Vf(n,e);case XS:case YS:case KS:case ZS:case QS:case JS:case e1:case t1:case r1:return Uf(n,e);case FS:return new t;case jS:case HS:return new t(n);case kS:return zf(n);case US:return new t;case WS:return kf(n)}}var Hf=o1;function n1(n){return typeof n.constructor=="function"&&!pn(n)?gp(Sn(n)):{}}var Wf=n1;var i1="[object Map]";function s1(n){return st(n)&&kr(n)==i1}var qf=s1;var $f=Fr&&Fr.isMap,a1=$f?mn($f):qf,Xf=a1;var l1="[object Set]";function c1(n){return st(n)&&kr(n)==l1}var Yf=c1;var Kf=Fr&&Fr.isSet,u1=Kf?mn(Kf):Yf,Zf=u1;var d1=1,p1=2,f1=4,Qf="[object Arguments]",m1="[object Array]",h1="[object Boolean]",y1="[object Date]",g1="[object Error]",Jf="[object Function]",x1="[object GeneratorFunction]",v1="[object Map]",b1="[object Number]",em="[object Object]",S1="[object RegExp]",w1="[object Set]",_1="[object String]",T1="[object Symbol]",P1="[object WeakMap]",O1="[object ArrayBuffer]",A1="[object DataView]",C1="[object Float32Array]",N1="[object Float64Array]",I1="[object Int8Array]",M1="[object Int16Array]",E1="[object Int32Array]",L1="[object Uint8Array]",B1="[object Uint8ClampedArray]",D1="[object Uint16Array]",G1="[object Uint32Array]",Me={};Me[Qf]=Me[m1]=Me[O1]=Me[A1]=Me[h1]=Me[y1]=Me[C1]=Me[N1]=Me[I1]=Me[M1]=Me[E1]=Me[v1]=Me[b1]=Me[em]=Me[S1]=Me[w1]=Me[_1]=Me[T1]=Me[L1]=Me[B1]=Me[D1]=Me[G1]=!0;Me[g1]=Me[Jf]=Me[P1]=!1;function Va(n,r,e,t,o,i){var s,l=r&d1,c=r&p1,d=r&f1;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Lt(n))return n;var a=Ve(n);if(a){if(s=Rf(n),!l)return vp(n,s)}else{var u=kr(n),p=u==Jf||u==x1;if(Po(n))return Af(n,l);if(u==em||u==Qf||p&&!o){if(s=c||p?{}:Wf(n),!l)return c?Mf(n,wf(s,n)):If(n,Sf(s,n))}else{if(!Me[u])return o?n:{};s=Hf(n,u,l)}}i||(i=new _n);var f=i.get(n);if(f)return f;i.set(n,s),Zf(n)?n.forEach(function(y){s.add(Va(y,r,e,y,n,i))}):Xf(n)&&n.forEach(function(y,g){s.set(g,Va(y,r,e,g,n,i))});var m=d?c?Ba:$i:c?yn:hn,h=a?void 0:m(n);return Tp(h||n,function(y,g){h&&(g=y,y=n[g]),un(s,g,Va(y,r,e,g,n,i))}),s}var za=Va;var R1=1,V1=4;function z1(n){return za(n,R1|V1)}var Ur=z1;var F1="__lodash_hash_undefined__";function j1(n){return this.__data__.set(n,F1),this}var tm=j1;function k1(n){return this.__data__.has(n)}var rm=k1;function Fa(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Oo;++r<e;)this.add(n[r])}Fa.prototype.add=Fa.prototype.push=tm;Fa.prototype.has=rm;var om=Fa;function U1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var nm=U1;function H1(n,r){return n.has(r)}var im=H1;var W1=1,q1=2;function $1(n,r,e,t,o,i){var s=e&W1,l=n.length,c=r.length;if(l!=c&&!(s&&c>l))return!1;var d=i.get(n),a=i.get(r);if(d&&a)return d==r&&a==n;var u=-1,p=!0,f=e&q1?new om:void 0;for(i.set(n,r),i.set(r,n);++u<l;){var m=n[u],h=r[u];if(t)var y=s?t(h,m,u,r,n,i):t(m,h,u,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!nm(r,function(g,v){if(!im(f,v)&&(m===g||o(m,g,e,t,i)))return f.push(v)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var ja=$1;function X1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var sm=X1;function Y1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var am=Y1;var K1=1,Z1=2,Q1="[object Boolean]",J1="[object Date]",ew="[object Error]",tw="[object Map]",rw="[object Number]",ow="[object RegExp]",nw="[object Set]",iw="[object String]",sw="[object Symbol]",aw="[object ArrayBuffer]",lw="[object DataView]",lm=Qe?Qe.prototype:void 0,Sc=lm?lm.valueOf:void 0;function cw(n,r,e,t,o,i,s){switch(e){case lw:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case aw:return!(n.byteLength!=r.byteLength||!i(new Pn(n),new Pn(r)));case Q1:case J1:case rw:return cn(+n,+r);case ew:return n.name==r.name&&n.message==r.message;case ow:case iw:return n==r+"";case tw:var l=sm;case nw:var c=t&K1;if(l||(l=am),n.size!=r.size&&!c)return!1;var d=s.get(n);if(d)return d==r;t|=Z1,s.set(n,r);var a=ja(l(n),l(r),t,o,i,s);return s.delete(n),a;case sw:if(Sc)return Sc.call(n)==Sc.call(r)}return!1}var cm=cw;var uw=1,dw=Object.prototype,pw=dw.hasOwnProperty;function fw(n,r,e,t,o,i){var s=e&uw,l=$i(n),c=l.length,d=$i(r),a=d.length;if(c!=a&&!s)return!1;for(var u=c;u--;){var p=l[u];if(!(s?p in r:pw.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++u<c;){p=l[u];var g=n[p],v=r[p];if(t)var b=s?t(v,g,p,r,n,i):t(g,v,p,n,r,i);if(!(b===void 0?g===v||o(g,v,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var um=fw;var mw=1,dm="[object Arguments]",pm="[object Array]",ka="[object Object]",hw=Object.prototype,fm=hw.hasOwnProperty;function yw(n,r,e,t,o,i){var s=Ve(n),l=Ve(r),c=s?pm:kr(n),d=l?pm:kr(r);c=c==dm?ka:c,d=d==dm?ka:d;var a=c==ka,u=d==ka,p=c==d;if(p&&Po(n)){if(!Po(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new _n),s||Oa(n)?ja(n,r,e,t,o,i):cm(n,r,c,e,t,o,i);if(!(e&mw)){var f=a&&fm.call(n,"__wrapped__"),m=u&&fm.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new _n),o(h,y,e,t,i)}}return p?(i||(i=new _n),um(n,r,e,t,o,i)):!1}var mm=yw;function hm(n,r,e,t,o){return n===r?!0:n==null||r==null||!st(n)&&!st(r)?n!==n&&r!==r:mm(n,r,e,t,hm,o)}var ym=hm;function gw(n,r){return n!=null&&r in Object(n)}var gm=gw;function xw(n,r,e){r=Ft(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=lo(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&dn(o)&&ln(s,o)&&(Ve(n)||fn(n)))}var xm=xw;function vw(n,r){return n!=null&&xm(n,r,gm)}var vm=vw;function bw(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var bm=bw;function Sw(n,r){return r.length<2?n:Na(n,hf(r,0,-1))}var Sm=Sw;function ww(n,r){return ym(n,r)}var Xi=ww;function _w(n,r){return r=Ft(r,n),n=Sm(n,r),n==null||delete n[lo(bm(r))]}var wm=_w;function Tw(n){return mf(n)?void 0:n}var _m=Tw;var Pw=1,Ow=2,Aw=4,Cw=Ia(function(n,r){var e={};if(n==null)return e;var t=!1;r=ba(r,function(i){return i=Ft(i,n),t||(t=i.length>1),i}),br(n,Ba(n),e),t&&(e=za(e,Pw|Ow|Aw,_m));for(var o=r.length;o--;)wm(e,r[o]);return e}),An=Cw;function Nw(n,r,e,t){if(!Lt(n))return n;r=Ft(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=lo(r[o]),d=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];d=t?t(a,c,l):void 0,d===void 0&&(d=Lt(a)?a:ln(r[o+1])?[]:{})}un(l,c,d),l=l[c]}return n}var Tm=Nw;function Iw(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=Na(n,s);e(l,s)&&Tm(i,Ft(s,n),l)}return i}var Pm=Iw;function Mw(n,r){return Pm(n,r,function(e,t){return vm(n,t)})}var Om=Mw;var Ew=Ia(function(n,r){return n==null?{}:Om(n,r)}),Cn=Ew;var Am;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Am||(Am={}));var Nn;(o=>{o.identity={...ua.identity,hiddenMatrix:ro.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;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 t(i,s){return tp({position:to.isEqual(i.position,s.position)?void 0:s.position,rotation:to.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:to.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:ro.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(Nn||(Nn={}));var Cm;(r=>r.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]})(Cm||(Cm={}));var Bt;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,collision:"visibility",physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Nn.identity,cloner:null})(Bt||(Bt={}));var Nm;(r=>r.defaultData={type:"Empty",...Bt.defaultData})(Nm||(Nm={}));var Im;(r=>r.defaultData={type:"Component",...Bt.defaultData})(Im||(Im={}));var Co;(r=>r.defaultData={type:"Mesh",...Bt.defaultData,...ma.defaultData})(Co||(Co={}));var In;(r=>r.defaultData={...Bt.defaultData,...Nn.identity,...To.defaultData})(In||(In={}));var Mm;(r=>{function n(e){return{...Bt.defaultData,...fa.defaultData(e)}}r.defaultData=n})(Mm||(Mm={}));var Mn;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let l=Object.keys(s);if(l.length===1&&l[0]==="descendants")return}return s}e.resolve=r})(Mn||(Mn={}));var co;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Bt.defaultData,...l,component:s,overrides:new Le,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=Nn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(co||(co={}));var Em;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:ro.identity,name:"Play Camera",visible:!0,raycastLock:!1,collision:"visibility",physics:null,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...To.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...Bt.defaultData,...Co.defaultData,geometry:oo.defaultData("RectangleGeometry"),material:wt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Bt.defaultData,...Co.defaultData,geometry:oo.defaultData("BooleanGeometry"),material:wt.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Bt.defaultData,...Co.defaultData,geometry:oo.defaultData("TextGeometry"),material:wt.defaultTwoLayerData("phong","layer1","layer2")}))(Em||(Em={}));var No;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Le}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Le})))):Yt.is(i.type)&&(l.perspective={},l.orthographic={}),l}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let l={...i};return"material"in l&&"material"in s&&s.material&&(l.material=en(l.material,c=>{if(typeof c!="string")for(let[d,a]of Object.entries(s.material.layers)){let u=c.layers.data(d);u&&yt.patch(u,a)}}).data),l.materials&&s.materials&&(l.materials=en(l.materials,c=>{for(let d=0;d<l.materials.length;d++){let a=s.materials[d];if(typeof a!="string")for(let[u,p]of Object.entries(a.layers)){let f=c[d]?.layers?.data(u);f&&yt.patch(f,p)}}}).data),l}function e(i,s){let l,c=[],d={orthographic:0,perspective:0,geometry:0};function a(u,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...u,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...u,"layers",f],props:y,type:0};c.push(g)}}}for(let[u,p]of Object.entries(s))if(u!=="name")if(u==="cloner")c.push(...da.toOps(p,["cloner"]));else if(u==="pathSnapping")c.push({path:[u],props:{slide:p.slide,offset:p.offset},type:0});else if(u==="material")a(["material"],p);else if(u==="materials")for(let[f,m]of Object.entries(p))a(["materials",f],m);else if(d[u]===0){if(u==="geometry"&&p.extrusion!==void 0){let f={path:[u,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[u],props:p,type:0};c.push(f)}}else l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[u]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,Nn.merge(l,s)),Object.assign(l,{pathSnapping:Object.assign({},l.pathSnapping,{slide:s.pathSnapping?.slide??l.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??l.pathSnapping?.offset??0})}),Yt.is(i.type)){l.orthographic={...l.orthographic},l.perspective={...l.perspective};let c=s;c.orthographic?.zoom!==void 0&&(l.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(l.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(l.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(l.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(l,{geometry:ga.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:vr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:vr.merge(l.cloner,s.cloner)});else if(pa.is(i.type)){let c=s;c.intensity!==void 0&&(l.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?l.color=c.color:l.color=pt.clone(c.color))}return l}o.patch=t})(No||(No={}));var En;(r=>r.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,autoZoom:!1})(En||(En={}));var Ua;(r=>r.defaultData={orbitControls:En.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null,hdTransmission:!1})(Ua||(Ua={}));var Ln;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Ln||(Ln={}));var Ha;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Vr(o,Ne.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Ln.emptyImage,name:"AI generated image"}),Vr(i,Ne.prototype)}t.defaultImages=r;function e(){return{materials:new Ne,images:new Ne,videos:new Ne,colors:new Ne,audios:new Ne,fonts:new Ne,penumbraSize:[2,2,2]}}t.emptyData=e})(Ha||(Ha={}));import{MathUtils as Wa}from"three";function Lm(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...Cn(Ke(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Ke(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Ki(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Zi(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material)})}function Lw(n){Object.assign(n.scene.publish,{orbitControls:{...En.defaultData,...Ke(n.scene.publish.orbitControls)}})}function Bw(n){Object.assign(n.scene.publish.settings,{video:{...Ua.defaultData.settings.video,...Ke(n.scene.publish.settings.video)}})}function Dw(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Jd.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(ep.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function Gw(n){n.scene.publish.withBackground=!0}function Rw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function Vw(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function zw(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function Fw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Ke(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ke(e).booleanExclude!==!0)}})}function jw(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function kw(n){function r(t){Object.setPrototypeOf(t,Le.prototype),t.texture&&Object.setPrototypeOf(t.texture,Le.prototype)}function e(t){Object.setPrototypeOf(t,Le.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let l=Ke(s.material).layers;e(l),s.material.layers=l}if(s.materials)for(let l=0;l<s.materials.length;l++){let c=s.materials[l],d=Ke(c).layers;e(d),c.layers=d}})})}function Bm(n){n.layers===void 0&&Object.assign(n,wt.defaultTwoLayerData("lambert"))}function wc(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...Ke(r),colors:e,steps:t};Object.assign(r,o)}})}function Uw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Dm(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&wc(t)}):"material"in e&&typeof e.material!="string"&&wc(e.material)}),Object.values(n.shared.materials).forEach(r=>wc(r))}function Hw(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,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 Ww(n){n.shared.audios=Vr({},Ne.prototype)}function qw(n){n.shared.videos=Vr({},Ne.prototype)}function $w(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.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(r,{[e]:o})}})}function Xw(n){Object.entries(Ke(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Ke(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function Yw(n){n.scene.publish.settings.web.preload=!1}function Gm(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Rm(n){n.layers&&n.layers.forEach(r=>{Qd(r)&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle=0,r.highCut=1,r.lowCut=0,r.smoothness=.3,r.seed=0,r.quality=1)})}function Kw(n){n.shared.fonts=Vr({},Ne.prototype)}function Zw(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 Qw(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=wt.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=Zw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Bt.defaultData,...Co.defaultData,flatShading:!1,wireframe:!1,geometry:{...oo.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:Ke(o.states),events:Ke(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},d=Ke(n.scene.objects).parent(e);n.scene.objects.insertAfter(d??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function Jw(n){let r={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,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[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:Wa.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((s,l,c)=>{let d={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,Cn(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"},p={state:s.state,...u,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:Wa.generateUUID(),data:d},{fi:1,id:Wa.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function e_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,l=[];if(e.events.forEach((c,d,a)=>{if(c.type==="Audio"&&c.trigger===i){let u;l.push(d),c.interaction==="play"?u={...Cn(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={...Cn(c,"interaction","delay","object","playAudio"),type:"Audio"}),u&&s.push({fi:a,id:d,data:u})}}),l.forEach(c=>e.events.delete(c)),s.length){let c=e.events.find(d=>d.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,s):e.events.insertBefore(null,[{id:Wa.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Vm(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=yt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function zm(n){Ki(n,Vm),Zi(n,Vm)}function t_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function r_(n){n.scene.objects.traverse((r,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"}})})}function o_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=wt.defaultTwoLayerData("phong"))})}function n_(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function i_(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function s_(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function a_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function l_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function c_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}var Fm=38;function jm(n){let r=n.schema??0;r!==Fm&&(console.warn("updating from ",r,"to ",Fm),r<1&&(Zi(n,Lm),Ki(n,Lm),n.schema=1),r<2&&(Lw(n),n.schema=2),r<3&&(Dw(n),n.schema=3),r<4&&(Gw(n),n.schema=4),r<5&&(Rw(n),n.schema=5),r<6&&(Vw(n),n.schema=6),r<7&&(zw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Dm(n),n.schema=9),r<10&&(Uw(n),n.schema=10),r<11&&(Hw(n),n.schema=11),r<12&&(Dm(n),n.schema=12),r<13&&(Ww(n),n.schema=13),r<14&&($w(n),n.schema=14),r<15&&(Xw(n),n.schema=15),r<16&&(Yw(n),n.schema=16),r<17&&(Zi(n,Gm),Ki(n,Gm),n.schema=17),r<18&&(Zi(n,Bm),Ki(n,Bm),n.schema=18),r<19&&(Bw(n),n.schema=19),r<20&&(Kw(n),Qw(n),n.schema=20),r<21&&(Jw(n),e_(n),n.schema=21),r<22&&(zm(n),n.schema=22),r<23&&(t_(n),n.schema=23),r<24&&(r_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(qw(n),r<25&&(n.schema=25)),r<26&&(Fw(n),n.schema=26),r<27&&(jw(n),n.schema=27),r<28&&(zm(n),n.schema=28),r<29&&(kw(n),n.schema=29),r<30&&(o_(n),n.schema=30),r<31&&(n_(n),n.schema=31),r<33&&(i_(n),n.schema=33),r<34&&(s_(n),n.schema=34),r<35&&(a_(n),n.schema=35),r<36&&(l_(n),n.schema=36),r<37&&(c_(n),n.schema=37),r<38&&(Zi(n,Rm),Ki(n,Rm),n.schema=38))}var Ai=Ws(Um());import{Object3D as LO,Vector3 as Rt,Euler as ed,MathUtils as rg,Matrix4 as qo}from"three";var u_=.5*(Math.sqrt(3)-1),Ji=(3-Math.sqrt(3))/6,d_=1/3,Sr=1/6,gR=(Math.sqrt(5)-1)/4,xR=(5-Math.sqrt(5))/20,es=n=>Math.floor(n)|0,Hm=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]),Tc=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 qa(n=Math.random){let r=qm(n),e=new Float64Array(r).map(o=>Hm[o%12*2]),t=new Float64Array(r).map(o=>Hm[o%12*2+1]);return function(i,s){let l=0,c=0,d=0,a=(i+s)*u_,u=es(i+a),p=es(s+a),f=(u+p)*Ji,m=u-f,h=p-f,y=i-m,g=s-h,v,b;y>g?(v=1,b=0):(v=0,b=1);let w=y-v+Ji,S=g-b+Ji,T=y-1+2*Ji,_=g-1+2*Ji,x=u&255,N=p&255,P=.5-y*y-g*g;if(P>=0){let A=x+r[N],R=e[A],k=t[A];P*=P,l=P*P*(R*y+k*g)}let C=.5-w*w-S*S;if(C>=0){let A=x+v+r[N+b],R=e[A],k=t[A];C*=C,c=C*C*(R*w+k*S)}let O=.5-T*T-_*_;if(O>=0){let A=x+1+r[N+1],R=e[A],k=t[A];O*=O,d=O*O*(R*T+k*_)}return 70*(l+c+d)}}function Wm(n=Math.random){let r=qm(n),e=new Float64Array(r).map(i=>Tc[i%12*3]),t=new Float64Array(r).map(i=>Tc[i%12*3+1]),o=new Float64Array(r).map(i=>Tc[i%12*3+2]);return function(s,l,c){let d,a,u,p,f=(s+l+c)*d_,m=es(s+f),h=es(l+f),y=es(c+f),g=(m+h+y)*Sr,v=m-g,b=h-g,w=y-g,S=s-v,T=l-b,_=c-w,x,N,P,C,O,A;S>=T?T>=_?(x=1,N=0,P=0,C=1,O=1,A=0):S>=_?(x=1,N=0,P=0,C=1,O=0,A=1):(x=0,N=0,P=1,C=1,O=0,A=1):T<_?(x=0,N=0,P=1,C=0,O=1,A=1):S<_?(x=0,N=1,P=0,C=0,O=1,A=1):(x=0,N=1,P=0,C=1,O=1,A=0);let R=S-x+Sr,k=T-N+Sr,$=_-P+Sr,te=S-C+2*Sr,X=T-O+2*Sr,q=_-A+2*Sr,H=S-1+3*Sr,V=T-1+3*Sr,G=_-1+3*Sr,B=m&255,L=h&255,D=y&255,Y=.6-S*S-T*T-_*_;if(Y<0)d=0;else{let M=B+r[L+r[D]];Y*=Y,d=Y*Y*(e[M]*S+t[M]*T+o[M]*_)}let W=.6-R*R-k*k-$*$;if(W<0)a=0;else{let M=B+x+r[L+N+r[D+P]];W*=W,a=W*W*(e[M]*R+t[M]*k+o[M]*$)}let F=.6-te*te-X*X-q*q;if(F<0)u=0;else{let M=B+C+r[L+O+r[D+A]];F*=F,u=F*F*(e[M]*te+t[M]*X+o[M]*q)}let j=.6-H*H-V*V-G*G;if(j<0)p=0;else{let M=B+1+r[L+1+r[D+1]];j*=j,p=j*j*(e[M]*H+t[M]*V+o[M]*G)}return 32*(d+a+u+p)}}function qm(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}import{Triangle as p_}from"three";var Zt=new p_,$a=class{constructor(r){this.weightAttribute=null;let e=r.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 r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Zt.a.fromBufferAttribute(r,o),Zt.b.fromBufferAttribute(r,o+1),Zt.c.fromBufferAttribute(r,o+2),i*=Zt.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Zt.a.fromBufferAttribute(this.positionAttribute,r*3),Zt.b.fromBufferAttribute(this.positionAttribute,r*3+1),Zt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Zt.a,o).addScaledVector(Zt.b,i).addScaledVector(Zt.c,1-(o+i)),Zt.getNormal(t),this}};import{Object3D as g_}from"three";var Ym=Ws(Xm());import{Object3D as f_,Matrix4 as Hr}from"three";var m_=new Hr,h_=new Hr,y_=new Hr,ts;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(ts||(ts={}));var Bn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new Hr;this.matrixWorldRigid=new Hr;this.shearScale=new Hr;this.shearScaleInv=new Hr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof f_&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(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,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&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)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)ts.is(s)&&s.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:l}=(0,Ym.SVD)(o),c=m_.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),d=h_.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),a=y_.copy(d).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(d),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(u=>Math.abs(l[0]-u)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new Hr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Hr?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}};var Pc=class extends Bn(g_){},x_=n=>n.type==="Mesh",Wr=class extends Pc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Wr(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return x_(this.object)}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}};import{Box3 as sP,BufferGeometry as aP,MeshBasicMaterial as lP}from"three";import{Matrix4 as nP,Mesh as iP}from"three";import{Matrix4 as Ka,Vector3 as T_,Euler as P_}from"three";import{Box3 as v_,Line3 as b_,Matrix4 as Oc,Vector3 as Dt}from"three";var Io=new Dt,Mo=new Dt,Dn=new Oc,Zm=[new Dt(-1,1,1),new Dt(-1,-1,1),new Dt(1,-1,1),new Dt(1,1,1),new Dt(-1,1,-1),new Dt(-1,-1,-1),new Dt(1,-1,-1),new Dt(1,1,-1)],S_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],w_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Km=(n,r,e)=>{n.updateEntityBoxSize(Io,Mo),Dn.copy(r).multiply(n.matrixWorld),Mo.x===0&&Mo.y===0&&Mo.z===0?e.push(new Dt(Io.x,Io.y,Io.z).applyMatrix4(Dn)):Zm.forEach(t=>{e.push(t.clone().multiply(Mo).add(Io).applyMatrix4(Dn))})},rs=class extends v_{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(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Oc().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Dt);return}Km(s,t,i)}}):Km(e,t,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(Dn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Mo).multiplyScalar(.5),this.getCenter(Io),Dn.copy(this.matrix).setPosition(Io),this.vertices=Zm.map(e=>e.clone().multiply(Mo).applyMatrix4(Dn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=S_.map(([e,t])=>new b_(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Dt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=w_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Qt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as __,CubicBezierCurve3 as Ac,Vector3 as Jt}from"three";var Nc=class extends __{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let l=0,c=this.curves;l<c.length;l++){let d=c[l],a=l===0?o[l]:o[l]-o[l-1],u=Math.ceil(r*a/s),p=d.getPoints(u);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Ic=.001;function Mc(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Ic}function Cc(n,r){let e=new Jt(...n.position),t=new Jt(...n.controlNext.position),o=new Jt(...r.controlPrevious.position),i=new Jt(...r.position);return Mc(e,t,i)&&Mc(e,o,i)}function Ya(n){let r=n.points.map(a=>new Jt(...a.data.position)),e=[n.points[0]],t=new Jt(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)Mc(t,r[a],r[a+1])||(e.push(n.points[a]),t=r[a]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,l=[];for(let a=0;a<s;a++){let u=e[a].data,p=new Jt(...u.position),f=new Jt(...u.controlPrevious.position),m=new Jt(...u.controlNext.position),h={position:p,baseRoundness:u.roundness,controlPrevious:f,controlNext:m};if(u.roundness===0||!n.isClosed&&(a===0||a===s-1)){l[a]={...h,removedLength:0};continue}let y=o&&a==0?s-1:a-1,g=o&&a==s-1?0:a+1,v=e[y].data,b=e[g].data,w=new Jt(...v.position),S=new Jt(...b.position),T=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=Cc(v,u),N=Cc(u,b);if(!x||!N)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),C=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:C,removedLength:u.roundness/C}}}for(let a=0;a<i;a++){let u=a,p=o&&a===s-1?0:a+1,f=l[u],m=l[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let a=0;a<i;a++){let u=a,p=o&&a===s-1?0:a+1,f=l[u],m=l[p],h=null;if(!Cc(e[u].data,e[p].data))f.position.distanceTo(m.position)>Ic&&(h=new Ac(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Ic&&(h=new Ac(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*a+1]=h}for(let a=0;a<s;a++){let u=l[a];if(u.removedLength===0){c[2*a]=null;continue}let p=u.position,f=u.prevDir.clone().multiplyScalar(u.removedLength).add(p),m=u.nextDir.clone().multiplyScalar(u.removedLength).add(p),h=u.tan*u.removedLength,y=u.prevDir.clone().add(u.nextDir).normalize(),g=f.clone().lerp(m,.5),v=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(v,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),T=u.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),x=f.clone().lerp(T,4/3),N=m.clone().lerp(_,4/3);c[2*a]=new Ac(f,x,N,m)}let d=new Nc;return c.forEach(a=>{a&&d.add(a)}),d}var Ce;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Ce||(Ce={}));var os=n=>Ce.is(n),O_={type:"completeState",isfromEntity:!0},Za=n=>class extends Bn(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new rs;this._recursiveBBox=new rs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Ce.is(o))return o}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Ce.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let s of this.data.states)No.toOps(this.data,s.data).forEach(c=>{let d=Ys.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(d,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=No.patch(this.data,s),No.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}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}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{os(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Ce.is(o[i]))return o[i];if(Ce.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ce.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)os(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Ce.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)os(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)os(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>os(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){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 An(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??ro.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ce.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ce.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return An(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,d=$t(t.path,["states","*"]);if(d!==null){if(t.type===0){let[a]=d;if(this?.stateSelection===a){let u={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=mt.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(u[m]=f[m])}}c={...t,props:u,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:p,...f}=a;a=f}if(t.props.material!==void 0&&"material"in a){let{material:p,...f}=a;a=f}let u=mt.removeOverridden(t.path,t.props,a);c={...t,props:u}}}if(this.updateByPatchedOpBase(c,No.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),$t(t.path,["overrides"])){let a=[],u=[...t.path];for(a.push(u[1]),u.splice(0,2);u.length>0&&u[0]==="descendants";)a.push(u[1]),u.splice(0,2);if(a[a.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){a[a.length-1]=p;let f=i.scene.findInstance([this.uuid,...a]);f&&(f.overrideData=t.props[p],f.updateState(Gr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=mt.zoom(p.component.data,u);if(t={...t,path:u},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=Mn.resolve(o.overrides,a),p.updateByOp(t,it.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let u;for(let p of co.rootOverrideProps)p in t.props&&(u===void 0&&(u={}),u[p]=t.props[p]);u&&(a={...t,props:u})}else for(let u of co.rootOverrideProps)if($t(t.path,[u])){a=t;break}a!==void 0&&this.instances.forEach(u=>{if(u.isInstanceRoot){let p=Gr.filterOp(u.overrideData,a);p&&u.updateByOp(p,it.applySimple(u.data,p),i,!0)}}),this.instances.forEach(u=>{if(!u.isInstanceRoot){let p=Gr.filterOp(u.overrideData,t);if(p){let f;l===u.data&&t===p?f=o:f=it.applySimple(u.data,p),u.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!Yt.is(t.props.type)&&Qt.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Qt.changeEntityProptotype(this,o,i);for(let s of this.children)Ce.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),$t(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),$t(t.path,["cloner"])!==null){let s=it.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,l=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let d=c.data,a=Ya(d.geometry.path),u=(i+s)%1;i+s===1&&u===0&&(u=1);let p=a.getPointAt(u),f=this.parent?this.parent?.matrixWorld:new Ka;c.updateMatrixWorld();let m=new Ka().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:d.rotation};if(l==="tangential"){let y=new Ka().extractRotation(c.matrixWorld),g=a.getTangentAt(u).applyMatrix4(y).add(p),v=new Ka().lookAt(p,g,new T_(0,1,0)),b=new P_().setFromRotationMatrix(v);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(O_)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Qt.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Qt.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};import{ConeGeometry as N_}from"three";import{BufferGeometry as A_,CylinderGeometry as C_,Float32BufferAttribute as Ec,Vector2 as er,Vector3 as Qa}from"three";var Jm=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters),t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{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:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:d,radiusBottom:a,cornerRadius:u,cornerSegments:p,hollow:f}=n.parameters,m;return u||f?m=new ns(d,a,t,o,i,s,l,c*Math.PI/180,u,u,p,f):m=new C_(d,a,t,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function uo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Qm(n){return new er(n.y,-n.x)}var ns=class extends A_{constructor(r,e,t,o,i,s,l,c,d,a,u,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||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&&(d=0,a=0);let m=[],h=[],y=[],g=[],v=0,b=t/2,w=new Qa,S=new Qa;f&&r==0&&(r=d),f&&e==0&&(e=a);let T=new er(r,b),_=new er(e,-b),x=null,N=null,P=null,C=null,O=T.clone().sub(_),A=0,R=0,k=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,k=e-A);let $=T.clone();$.x-=A;let te=Math.PI-O.angle(),X=O.angle(),q=Math.tan(X/2),H=Math.tan(te/2),V=q+H,G=p?V:H,B=p?V:q;if(d=Math.min(d,(r-R)/G,O.length()/V),a=Math.min(a,(e-k)/B,O.length()/V),d>0){let j=d/q;x=T.clone().sub(new er(j,d)),p&&(P=x.clone(),P.x-=A-V*d),T.sub(O.clone().setLength(j))}if(a>0){let j=a/H;N=_.clone().sub(new er(j,-a)),_.add(O.clone().setLength(j)),p&&(C=N.clone(),C.x-=A-V*a,$.sub(O.clone().setLength(j)))}O=T.clone().sub(_);let L=O.length()<.5,D=[];for(let j=0;j<=o;j++){let M=[],Q=j/o,re=Q*c+l,oe=new er(Math.sin(re),Math.cos(re));C&&N?(Y(M,Q,oe,te,a,C,-1,!0),Y(M,Q,oe,X,a,N,-1,!1)):N?(W(M,oe,N.x,0,-1),Y(M,Q,oe,X,a,N,-1,!1)):s||W(M,oe,e,k,-1);let K=Qm(O).normalize();if(uo(K,oe,w),!L)for(let ee=0;ee<=i;ee++){let J=ee/i,ie=O.clone().multiplyScalar(J).add(_);uo(ie,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(v++)}if(P&&x?(Y(M,Q,oe,te,d,x,1,!1),Y(M,Q,oe,X,d,P,1,!0)):x?(Y(M,Q,oe,te,d,x,1,!1),W(M,oe,x.x,0,1)):s||W(M,oe,r,R,1),p&&!L){let ee=Qm(O).multiplyScalar(-1).normalize();uo(ee,oe,w);for(let J=0;J<=i;J++){let ie=J/i,ce=O.clone().multiplyScalar(-ie).add($);uo(ce,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(v++)}}p&&!s&&M.push(M[0]),D.push(M)}for(let j=0;j<D.length-1;j++)for(let M=0;M<D[0].length-1;M++){if(s&&p&&M==i)continue;let Q=D[j][M],re=D[j+1][M],oe=D[j+1][M+1],K=D[j][M+1],ee=h[oe*3+0],J=h[oe*3+2];m.push(Q,re,K),(ee!=0||J!=0)&&m.push(re,oe,K)}c<Math.PI*2&&(F(-1,D[0],l),F(1,D[D.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Ec(h,3)),this.setAttribute("normal",new Ec(y,3)),this.setAttribute("uv",new Ec(g,2));function Y(j,M,Q,re,oe,K,ee,J){for(let ie=0;ie<u+1;ie++){let ce=ie/u,se=ee<0?ce:1-ce;J&&(se-=1),se*=re;let fe=new er(Math.sin(se),Math.cos(se)*ee),Ge=fe.clone().multiplyScalar(oe).add(K);uo(Ge,Q,S),h.push(S.x,S.y,S.z),uo(fe,Q,w),y.push(w.x,w.y,w.z),g.push(M,.5+S.y/t),j.push(v++)}}function W(j,M,Q,re,oe){let K=new Qa,ee=new er,J=[Q,re];oe<0&&J.reverse();for(let ie of J)ee.set(ie,b*oe),uo(ee,M,K),h.push(K.x,K.y,K.z),y.push(0,oe,0),g.push(.5,.5),j.push(v++)}function F(j,M,Q){let re=new er(Math.sin(Q),Math.cos(Q)),oe=new er(-Math.cos(Q),Math.sin(Q)),K=new Qa,ee=j<0?(ce,se,fe)=>m.push(ce,se,fe):(ce,se,fe)=>m.push(ce,fe,se),J=new er((r+e+R+k)/4,0);uo(J,re,K),h.push(K.x,K.y,K.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let ie=v++;for(let ce of M){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(oe.x,0,oe.y);let fe=g.slice(ce*2,ce*2+2);g.push(...fe),v++}for(let ce=ie+1;ce<v-1;ce++)ee(ie,ce,ce+1);ee(ie,v-1,ie+1)}}};var eh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,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:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:d,cornerRadiusBottom:a,cornerSegments:u}=n.parameters,p;return d>0||a>0||c<360?p=new ns(0,r/2,t,o,i,s,l,c*Math.PI/180,d,a,u,0,!0):p=new N_(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as I_,BufferGeometry as M_,Float32BufferAttribute as Lc,Vector3 as is}from"three";var th=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,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:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,d;return l==0?d=new I_(r,e,t,o,i,s):d=new Dc(r,e,t,o,i,s,l,c),Object.assign(d,{userData:{...n,type:"CubeGeometry"}})}},Bc=Math.PI/2,Dc=class extends M_{constructor(r=1,e=1,t=1,o=1,i=1,s=1,l=0,c=4){super(),this.type="BoxGeometry";let d=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),c=Math.floor(c),l=Math.min(l,r/2,e/2,t/2);let a=[],u=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),l>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new Lc(u,3)),this.setAttribute("normal",new Lc(p,3)),this.setAttribute("uv",new Lc(f,2));function y(b,w,S,T,_,x,N,P,C,O,A){let R=(x-2*l)/C,k=(N-2*l)/O,$=x/2-l,te=N/2-l,X=P/2,q=C+1,H=O+1,V=0,G=0,B=new is;for(let L=0;L<H;L++){let D=L*k-te;for(let Y=0;Y<q;Y++){let W=Y*R-$;B[b]=W*T,B[w]=D*_,B[S]=X,u.push(B.x,B.y,B.z),B[b]=0,B[w]=0,B[S]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(Y/C),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let D=0;D<C;D++){let Y=m+D+q*L,W=m+D+q*(L+1),F=m+(D+1)+q*(L+1),j=m+(D+1)+q*L;a.push(Y,W,j),a.push(W,F,j),G+=6}d.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,T,_,x,N,P,C,O,A){let R=(N-2*l)/O,k=N/2-l,$=P/2-l,te=C/2,X=O+1,q=0,H=0,V=new is,G=new is;for(let B=0;B<c+1;B++){let L=B/c*Bc,D=Math.sin(L)*l,Y=(1-Math.cos(L))*l,W=Math.sin(L),F=Math.cos(L);V[w]=($+D)*_,V[S]=(te-Y)*x,G[b]=0,G[w]=W*Math.sign(V[w]),G[S]=F*Math.sign(V[S]);for(let j=0;j<X;j++){let M=j*R-k;V[b]=M*T,u.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(j/O),f.push(0),q+=1}}for(let B=0;B<c;B++)for(let L=0;L<O;L++){let D=m+L+X*B,Y=m+L+X*(B+1),W=m+(L+1)+X*(B+1),F=m+(L+1)+X*B;a.push(D,Y,F),a.push(Y,W,F),H+=6}d.addGroup(h,H,A),h+=H,m+=q}function v(b,w,S){let T=new is,_=new is(r/2,e/2,t/2);_.subScalar(l);let x=[],N=b*w*S>0?(C,O,A)=>a.push(C,O,A):(C,O,A)=>a.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=Bc*(1-C/c),R=Math.cos(A),k=Math.sin(A),$=0;for(let te=0;te<=C;te++){let X=Math.cos($),q=Math.sin($);T.x=R*X,T.y=k,T.z=R*q;let H=_.clone().addScaledVector(T,l);u.push(b*H.x,w*H.y,S*H.z),p.push(b*T.x,w*T.y,S*T.z),f.push(0,0),O.push(m++),$+=Bc/C}x.push(O)}let P=x.length-1;for(let C=0;C<P;C++){let O=x[C],A=x[C+1],R=O.length-1;N(O[0],A[1],A[0]);for(let k=1;k<=R;k++)N(O[k-1],O[k],A[k]),N(O[k],A[k+1],A[k])}}}};import{BufferGeometry as E_,Float32BufferAttribute as Gc,Triangle as L_,Vector3 as qr,Vector2 as Rc}from"three";var po=class extends E_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],d=[];a(),u(),this.setAttribute("position",new Gc(l,3)),this.setAttribute("normal",new Gc(d,3)),this.setAttribute("uv",new Gc(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}[t],m=new qr,h=m.clone(),y=new L_,g=i*o,v=o-g,b=s+1,w=new qr,S=(q,H)=>w.subVectors(q,H).normalize(),T=(q,H)=>Array(q).fill(void 0).map(H),_=T(r.length/3,(q,H)=>new qr().fromArray(r,H*3).setLength(o)),x=[],N=1e6;for(let q=0;q<_.length;q++){let H=_[q],V=[],G,B,L,D=1e10,Y=-1;for(;(Y=e.indexOf(q,Y+1))!=-1;){let M=Y-Y%3;G=e[M+(Y+1)%3],B=e[M+(Y+2)%3],L=H.distanceToSquared(_[G]),D=Math.min(D,L),V.push([G,B,L])}D+=1e-6;let W=[],F=0,j=V.length;for(let M=0;M<j;M++){[G,B,L]=V[F];let Q=x[G]?.includes(q)==!0;L<=D&&W.push(G+ +Q*N),F=V.findIndex(re=>re[0]==B)}x.push(W)}let P=[];{let q=0,H=0,V,G,B=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let D=0;D<s-L;D++)[q,H]=[V+D+L+2,G+D+L+3],P.push(V,G,...B?[H,V]:[q,G],H,q),[V,G]=[q,H];P.push(V,G,V+s+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),k=m.clone(),$=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),C.copy(m).multiplyScalar(v);let H=x[q];for(let W=0;W<H.length;W++){let F=H[W],j=H[(W+1)%f];y.setFromPointsAndIndices(_,q,F%N,j%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,te[q][W])}let V=[],G=[],B=[],L=new qr;s==0&&[...te[q]].reduce((W,F)=>W.add(F),L).multiplyScalar(1/f);for(let W=0;W<f;W++){let F=[],j=(W-1+f)%f,M=te[q][j],Q=te[q][W];m.copy(M).sub(C),h.copy(Q).sub(C);let re=C.angleTo(m),oe=m.angleTo(h),K=Math.cos(re)*g;s==0?O.copy(L):O.copy(C).setLength(v+K),G.push(K);let ee=[O,M,Q];for(let J=0;J<2;J++){let ie=ee[J],ce=ee[J+1];R.subVectors(ie,C),k.subVectors(ce,C),A.crossVectors(R,k).normalize();for(let se=0;se<b;se++){let fe=[re,oe][J]*se/b;m.copy(R).applyAxisAngle(A,fe).add(C),V.push(m.clone()),J&&(S(m,C),F.push([se==0?ie:m.clone(),w.clone()]))}J&&(S(ce,C),F.push([ce,w.clone()]))}B.push(F)}$.push(B);let D=2*b,Y=2;for(let W=0;W<f;W++){let F=D*W,j=D*((W+1)%f),M=[V[F]];for(let re=1;re<b;re++){R=V[F+re],k=V[j+re],M.push(R);for(let oe=1,K=re-Y+1;oe<=K;oe++)m.lerpVectors(R,k,oe/(K+1)),m.sub(C).setLength(G[W]).add(C),M.push(m.clone());M.push(k)}for(let re=0;re<b;re++)M.push(V[re+b+F]);M.push(V[j+b]);let Q=P.map(re=>M[re]);l.push(...Q.map(re=>[re.x,re.y,re.z]).flat()),d.push(...Q.map(re=>(S(re,C),[w.x,w.y,w.z])).flat())}}let X=[];for(let q=0;q<x.length;q++)for(let H=0;H<f;H++){let V=x[q][H];if(V<N){let G=x[V].findIndex(D=>D%N==q),B=$[q][H],L=$[V][G];for(let D=0;D<b;D++){let Y=B[D],W=L[b-D],F=B[D+1],j=L[b-(D+1)];[Y,W,F,F,W,j].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),d.push(M[1].x,M[1].y,M[1].z)})}X.push(B[0][0],L[b][0],B[b][0],L[0][0])}}for(;X.length;){let q,H,V,G;[q,H]=X.splice(0,2);let B=[q];for(;q!=H;)B.push(H),V=X.indexOf(H),G=V%2,H=X.splice(V-G,2)[1-G];w.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let L=w.dot(B[0])<0;L&&w.negate();for(let D=1;D<=B.length-2;D++)[B[D+ +L],B[D+1-+L],B[0]].forEach(Y=>{l.push(Y.x,Y.y,Y.z),d.push(w.x,w.y,w.z)})}}function u(){let p=new qr;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=S(p)/2/Math.PI+.5,N=T(p)/Math.PI+.5;c.push(x,1-N)}let f=new qr,m=new qr,h=new qr,y=new qr,g=new Rc,v=new Rc,b=new Rc,w=(_,x,N,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),N.x===0&&N.z===0&&(c[x]=P/2/Math.PI+.5)};for(let _=0,x=0;_<l.length;_+=9,x+=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]),g.set(c[x+0],c[x+1]),v.set(c[x+2],c[x+3]),b.set(c[x+4],c[x+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=S(y);w(g,x+0,f,N),w(v,x+2,m,N),w(b,x+4,h,N)}for(let _=0;_<c.length;_+=6){let x=c[_+0],N=c[_+2],P=c[_+4],C=Math.max(x,N,P),O=Math.min(x,N,P);C>.9&&O<.1&&(x<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new po(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as B_}from"three";var rh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new ss(r*.5,i,s):new B_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},ss=class extends po{constructor(r=1,e=.2,t=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,r,e,t),this.type=c}static fromJSON(r){return new ss(r.radius,r.corner,r.cornerSides)}};import{Plane as W_,Shape as gh,Vector2 as $r,Vector3 as q_,MathUtils as Hc,LineCurve as Wc,QuadraticBezierCurve as xh,CubicBezierCurve as rl}from"three";import{CubicBezierCurve as Ja,EllipseCurve as D_,LineCurve as el,LineCurve3 as G_,MathUtils as R_,QuadraticBezierCurve as zc,SplineCurve as V_,Vector2 as ft,Vector3 as ih}from"three";var as=1e-12,Gn=class{constructor(r){this.position=new ft;this.startPosition=new ft;this.uuid=R_.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Gn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Rn=class extends Gn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Rn(this.parent).copy(this)}},tr=class extends Gn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Rn(this),new Rn(this))}static create(e,t){let o=new tr(e,new ft(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=t?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 tr(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),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new ft,t=new ft){let[o,i]=this.computeTangents();return o&&i&&(oh(o,e),oh(i,t)),[e,t]}computeTangent(e=new ft){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ft){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function oh(n,r=new ft){let e=n.length();return r.set(-n.y/e,n.x/e)}var Fc=n=>n,Vn=new ft,tl=new ft,z_=new ft,F_=new ft,j_=new ft,k_=new ft,sh=new ih,ah=new ih;function lh(n){let r=new ft;r.addVectors(n.v0,Vn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ft;return e.addVectors(n.v2,tl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Ja(n.v0,r,e,n.v2)}function ls(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function U_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function H_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function jc(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.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+t*t-i*i)/(2*o*t))}function ch(n,r,e){return nh(n,r)&&nh(r,e)&&Vc(n.position,r.position,e.position)}function Vc(n,r,e){return Vn.copy(r).sub(n).cross(tl.copy(e).sub(n))===0}function uh(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,l=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,d=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(l+c,s+d),o.set(l-c,s-d),[t,o]}function dh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function ph(n,r,e,t,o,i){let s=r.x-n.x,l=r.y-n.y,c=e.x-n.x,d=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+d)*(l+d)),u;return jc(r,n,e)>Math.PI&&(a*=-1),ls(d,l)?u=(l+d)*(t/a-.5)*8/3/(s-c):u=(s+c)*(t/a-.5)*8/3/(d-l),o.set(r.x-u*l,r.y+u*s),i.set(e.x+u*d,e.y-u*c),[o,i]}function kc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function nh(n,r){return Vc(n.position,n.controls[1].position,r.position)&&Vc(n.position,r.controls[0].position,r.position)}function fh(n,r,e,t,o=.5){let i=Vn.subVectors(r,n).multiplyScalar(o).add(n),s=tl.subVectors(e,r).multiplyScalar(o).add(r),l=z_.subVectors(t,e).multiplyScalar(o).add(e),c=i,d=F_.subVectors(s,i).multiplyScalar(o).add(i),a=j_.subVectors(l,s).multiplyScalar(o).add(s),u=l,p=k_.subVectors(a,d).multiplyScalar(o).add(d);return[n.x,n.y,c.x,c.y,d.x,d.y,p.x,p.y,a.x,a.y,u.x,u.y,t.x,t.y]}function mh(n,r,e=12,t=!0){let o=ah.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let d=Fc(r[c]),a=Vn,u=fo(d,e);l.push(u);for(let p=0;p<=u;p++)if(d instanceof Ja||d instanceof zc||d instanceof el){if(d.getPoint(p/u,a),o.set(a.x,a.y,0),i!==void 0&&H_(i,o))continue;i===void 0&&(i=sh),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&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 hh(n,r,e,t=12,o=!0){let i=ah.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let d,a=Fc(r[c]),u=Vn,p=fo(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof Ja||a instanceof zc||a instanceof el){if(a.getPoint(f/p,u),i.set(u.x,u.y,0),d?.equals(i))continue;d===void 0?d=sh:(n.setXYZ(s,d.x,d.y,d.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),d.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 Uc(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=fo(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=fo(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=fo(n[0].roundedCurveCorner,r)*.5),t}function fo(n,r=12){return n&&n instanceof D_?r*2:n&&(n instanceof el||n instanceof G_)?1:n&&n instanceof V_?r*n.points.length:r}function yh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=Fc(r[s]),c=fo(l,e),d=Vn;for(let a=0;a<=c;a++)if(l instanceof Ja||l instanceof zc||l instanceof el){if(l.getPoint(a/c,d),o!==void 0&&U_(o,d,as))continue;o===void 0&&(o=tl),o.copy(d),n.push(d.x,d.y),i++}}return ls(n[0],n[n.length-2],as)&&ls(n[1],n[n.length-1],as)&&(n.pop(),n.pop()),t&&i>1&&!(ls(n[i-1],n[1],as)&&ls(n[i-2],n[0],as))&&(n.push(n[0],n[1]),i++),n}var qc=new $r,$_=new $r,X_=new $r,Y_=new $r,K_=new $r,Z_=new $r,Se=class extends gh{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new W_(new q_(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=Hc.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>tr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),t!==void 0&&o!==void 0&&i.applySize(t,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 t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;for(let s=0,l=this.shapeHoles.length;s<l;s++){let c=this.shapeHoles[s],d=c.points.length,a=c.getPointIndexById(e);if(a<0)i+=d;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 t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=e-t;if(l<=s.points.length-1)return s.points[l];t+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=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 t+l;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=qc.set(e,t);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,t);this._update()}createPoint(e,t=0,o=Hc.generateUUID()){let i;e instanceof $r?i=e:i=new $r(e,t);let s=new tr(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return mh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Uc(this.points,e,!1),this.roundedCurveDivisions=Uc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return hh(e,this.curves,t,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),yh(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=fo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let l=e-s;l<0&&(l+=i.reduce((c,d)=>c+d,0));for(let c=0,d=i.length;c<d;c++){let a=i[c];if(l<o+a)return[c,(l-o+1)/a];o+=a}return[0,1]}getCurveT(e,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(kc(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(qc.set(o.x,o.y))/u}let d=0;for(let u=0;u<e;u++)d+=l[u];return(t-d)/c}dispose(){}_applyCurveForPoint(e,t){kc(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.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,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let s=this.points[t-1];this._applyCurveForPoint(i,s)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o],l=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],d=s.roundness,a=l&&c&&ch(l,s,c);if(!s.controlsMoved()&&d>0&&!a){let u=s.curveBefore,p=s.curveAfter;if(u===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=u.getLength(),y=p.getLength(),g=Math.min(d,h*.499),v=Math.min(d,y*.499),b=Math.min(g,v),w=1-b/h,S=b/y,T=u.getPointAt(w,qc),_=p.getPointAt(S,$_);this._subSplitCurve(u,f,w,T,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let N=jc(T,s.position,_)/2,P=Math.tan(N)*T.distanceTo(s.position),[C,O]=uh(T,_,P,X_,Y_),A=dh(C,O,s.position),[R,k]=ph(A,T,_,P,K_,Z_);x=new rl(T.clone(),R.clone(),k.clone(),_.clone())}else x=new xh(T.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof Wc)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let l=e,c=t,d=l.getUtoTmapping(o,0),a=fh(l.v0,l.v1,l.v2,l.v3,d);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 t}clone(){let e=new Se(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let i=o*7,s=e.points[i+0],l=e.points[i+1],c=e.points[i+2],d=e.points[i+3],a=e.points[i+4],u=e.points[i+5],p=e.points[i+6],f=new tr(Hc.generateUUID(),new $r(s,l));f.controls[0].position.set(c,d),f.controls[1].position.set(a,u),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof rl&&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 xh&&(i[l]=lh(i[l]));for(l=0,c=i.length;l<c;l++){let u=i[l],p=l>0?i[l-1]:null,f;u instanceof rl?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof Wc&&(f=this.createPoint(u.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let d=i[i.length-1],a=!1;return d instanceof rl?d.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(d.v2),a=!0):d instanceof Wc&&d.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof gh&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var Xc=Math.PI*2;function $c({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function Q_(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function vh(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function J_(n,r,e,t,o,i,s,l,c,d){let a=Math.pow(o,2),u=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(l,2),m=a*u-a*f-u*p;m<0&&(m=0),m/=a*f+u*p,m=Math.sqrt(m)*(c===d?-1:1);let h=m*o/i*l,y=m*-i/o*s,g=h+(n+e)/2,v=y+(r+t)/2,b=(s-h)/o,w=(l-y)/i,S=(-s-h)/o,T=(-l-y)/i,_=vh(1,0,b,w),x=vh(b,w,S,T);return!d&&x>0&&(x-=Xc),d&&x<0&&(x+=Xc),{centerx:g,centery:v,ang1:_,ang2:x}}function bh({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let d=(n-e)/2,a=(r-t)/2;if(d===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(d,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let p=J_(n,r,e,t,o,i,d,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Xc/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);m/=v;for(let b=0;b<v;b++)c.push(Q_(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=$c(b[0],o,i,h,y),{x:T,y:_}=$c(b[1],o,i,h,y),{x,y:N}=$c(b[2],o,i,h,y);return{x1:w,y1:S,x2:T,y2:_,x,y:N}})}import{BufferAttribute as sl,BufferGeometry as iT}from"three";var ve;(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"})(ve||(ve={}));var De;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(De||(De={}));function de(n,r){if(!n)throw r||"Assertion Failed!"}var le=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){de(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){de(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){de(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){de(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var s,l,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),l=n.edgeEval(t,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,e.s)):(s=n.edgeSign(r,t,e),l=-n.edgeSign(r,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),l=n.transEval(t,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,e.t)):(s=n.transSign(r,t,e),l=-n.transSign(r,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,o.t)):i.t=(t.t+e.t)/2},n}(),cs=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}(),ol=function(){function n(r){this.side=r,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(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),zn=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}(),Sh=function(){function n(){var r=new zn,e=new cs,t=new ol(0),o=new ol(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new ol(0),t=new ol(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;de(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;de(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new zn,e=new zn,t=new cs,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new zn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new cs;this.makeFace_(s,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new cs;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new zn;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var s=new cs;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,l;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);s=r.prev,l=r.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=r&&le.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&le.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,l,c,d;for(i=r,i=r;(o=i.next)!==r;i=o){de(o.prev===i),c=o.anEdge;do de(c.Sym!==c),de(c.Sym.Sym===c),de(c.Lnext.Onext.Sym===c),de(c.Onext.Sym.Lnext===c),de(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(de(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){de(s.prev===l),c=s.anEdge;do de(c.Sym!==c),de(c.Sym.Sym===c),de(c.Lnext.Onext.Sym===c),de(c.Onext.Sym.Lnext===c),de(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(de(s.prev===l&&s.anEdge===null),d=t,d=t;(c=d.next)!==t;d=c)de(c.Sym.next===d.Sym),de(c.Sym!==c),de(c.Sym.Sym===c),de(c.Org!==null),de(c.Dst!==null),de(c.Lnext.Onext.Sym===c),de(c.Onext.Sym.Lnext===c);de(c.Sym.next===d.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),wh=function(){function n(){this.handle=null}return n}(),_h=function(){function n(){this.key=null,this.node=0}return n}(),eT=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new wh,this.handles[t]=new _h;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,de(s<=this.max),i=e[s].handle,s>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;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 wh;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new _h}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;de(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Yc=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}(),Th=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),tT=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Th,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(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Th;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),rT=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,s=t.eUp;if(i.Dst===o)return s.Dst===o?le.vertLeq(i.Org,s.Org)?le.edgeSign(s.Dst,i.Org,s.Org)<=0:le.edgeSign(i.Dst,s.Org,i.Org)>=0:le.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return le.edgeSign(i.Dst,o,i.Org)>=0;var l=le.edgeEval(i.Dst,o,i.Org),c=le.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&de(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){de(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Yc;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case ve.ODD:return(e&1)!==0;case ve.NONZERO:return e!==0;case ve.POSITIVE:return e>0;case ve.NEGATIVE:return e<0;case ve.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,s=e,l=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}l.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(l,o)),n.finishRegion(r,s),l=i.eUp,s=i}return l},n.addRightEdges=function(r,e,t,o,i,s){var l,c,d,a,u=!0;d=t;do de(le.vertLeq(d.Org,d.Dst)),n.addRegionBelow(r,e,d.Sym),d=d.Onext;while(d!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),c=e,a=i;l=n.regionBelow(c),d=l.eUp.Sym,d.Org===a.Org;)d.Onext!==a&&(r.mesh.splice(d.Oprev,d),r.mesh.splice(a.Oprev,d)),l.windingNumber=c.windingNumber-d.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!u&&n.checkForRightSplice(r,c)&&(n.addWinding(d,a),n.deleteRegion(r,c),r.mesh.delete(a)),u=!1,c=l,a=d;c.dirty=!0,de(c.windingNumber-d.winding===l.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=le.vertL1dist(e,r),i=le.vertL1dist(t,r),s=.5*i/(o+i),l=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+l*t.coords[0],r.coords[1]+=s*e.coords[1]+l*t.coords[1],r.coords[2]+=s*e.coords[2]+l*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(le.vertLeq(o.Org,i.Org)){if(le.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;le.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(le.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s;if(de(!le.vertEq(o.Dst,i.Dst)),le.vertLeq(o.Dst,i.Dst)){if(le.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(le.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,l=i.Org,c=o.Dst,d=i.Dst,a,u,p=new zn,f,m;if(de(!le.vertEq(d,c)),de(le.edgeSign(c,r.event,s)<=0),de(le.edgeSign(d,r.event,l)>=0),de(s!==r.event&&l!==r.event),de(!e.fixUpperEdge&&!t.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),u=Math.max(l.t,d.t),a>u))return!1;if(le.vertLeq(s,l)){if(le.edgeSign(d,s,l)>0)return!1}else if(le.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),le.intersect(c,s,d,l,p),de(Math.min(s.t,c.t)<=p.t),de(p.t<=Math.max(l.t,d.t)),de(Math.min(d.s,c.s)<=p.s),de(p.s<=Math.max(l.s,s.s)),le.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=le.vertLeq(s,l)?s:l,le.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),le.vertEq(p,s)||le.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!le.vertEq(c,r.event)&&le.edgeSign(c,r.event,p)>=0||!le.vertEq(d,r.event)&&le.edgeSign(d,r.event,p)<=0?d===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(le.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),le.edgeSign(d,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,l,d),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,d=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(r,e),le.vertEq(l.Org,r.event)&&(r.mesh.splice(i.Oprev,l),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),d=!0),le.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),d=!0),d){n.addRightEdges(r,e,t.Onext,i,i,!0);return}le.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,s,l,c;if(o=e.eUp,le.vertEq(o.Org,t)){de(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!le.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}de(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(de(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),le.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,l,c,d=new Yc;if(d.eUp=e.anEdge.Sym,t=r.dict.search(d).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,le.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=le.vertLeq(l.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=r.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);de(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(r,i,null);l.Onext===s?n.connectRightVertex(r,o,l):n.addRightEdges(r,o,l.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new Yc,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new tT(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,s=r.bmin[1]-t,l=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,l)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(de(e.fixUpperEdge),de(++t===1)),de(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,le.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new eT(i,le.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,de(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!le.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),oT=function(){function n(){this.mesh=new Sh,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=ve.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(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,s,l,c=[0,0,0],d=[0,0,0],a=[0,0,0],u=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],d[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<d[g]&&(d[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var v=0;if(c[1]-d[1]>c[0]-d[0]&&(v=1),c[2]-d[2]>c[v]-d[v]&&(v=2),d[v]>=c[v]){r[0]=0,r[1]=0,r[2]=1;return}for(l=0,t=m[v],o=f[v],a[0]=t.coords[0]-o.coords[0],a[1]=t.coords[1]-o.coords[1],a[2]=t.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],p[0]=a[1]*u[2]-a[2]*u[1],p[1]=a[2]*u[0]-a[0]*u[2],p[2]=a[0]*u[1]-a[1]*u[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>l&&(l=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);l<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;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=t.next;e!==t;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 r=this.mesh.vHead,e=[0,0,0],t,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),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=r.next;l!==r;l=l.next)l.s=this.dot_(l.coords,t),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,d=r.next;d!==r;d=d.next)c?(this.bmin[0]=this.bmax[0]=d.s,this.bmin[1]=this.bmax[1]=d.t,c=!1):(d.s<this.bmin[0]&&(this.bmin[0]=d.s),d.s>this.bmax[0]&&(this.bmax[0]=d.s),d.t<this.bmin[1]&&(this.bmin[1]=d.t),d.t>this.bmax[1]&&(this.bmax[1]=d.t))},n.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;le.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;le.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(le.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(le.edgeGoesLeft(o.Lnext)||le.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(le.edgeGoesRight(t.Lprev)||le.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,s=0,l=0,c;t>3&&r.mergeConvexFaces(t);for(var d=r.vHead.next;d!==r.vHead;d=d.next)d.n=-1;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(a.n=-1,!!a.inside){i=a.anEdge,c=0;do{var d=i.Org;d.n===-1&&(d.n=l,l++),c++,i=i.Lnext}while(i!==a.anEdge);if(c>t)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===De.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var d=r.vHead.next;d!==r.vHead;d=d.next)if(d.n!==-1){var u=d.n*o;this.vertices[u+0]=d.coords[0],this.vertices[u+1]=d.coords[1],o>2&&(this.vertices[u+2]=d.coords[2]),this.vertexIndices[d.n]=d.idx}for(var p=0,a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var d=i.Org;this.elements[p++]=d.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===De.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){o=t=l.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==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,d=0,a=0;i=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){s=0,o=t=l.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[d++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Sh),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,s){if(r===void 0&&(r=ve.ODD),e===void 0&&(e=De.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=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),rT.computeInterior(this,s);var l=this.mesh;return e===De.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===De.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function rr(n){var r=n.windingRule,e=r===void 0?ve.ODD:r,t=n.elementType,o=t===void 0?De.POLYGONS:t,i=n.polySize,s=i===void 0?3:i,l=n.vertexSize,c=l===void 0?2:l,d=n.normal,a=d===void 0?[0,0,1]:d,u=n.contours,p=u===void 0?[]:u,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new oT;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<p.length;v++)g.addContour(c||2,p[v]);return g.tesselate(e,o,s,c,a,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var zV=ve.ODD,FV=ve.NONZERO,jV=ve.POSITIVE,kV=ve.NEGATIVE,UV=ve.ABS_GEQ_TWO,HV=De.POLYGONS,WV=De.CONNECTED_POLYGONS,qV=De.BOUNDARY_CONTOURS;import{BufferAttribute as il,BufferGeometry as nT}from"three";var nl=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*nl.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*nl.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let d=new Float32Array(o,s*i,2*r);l.set(this.positions.slice(0,this.size*3)),c.set(this.normals.slice(0,this.size*3)),d.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=l,this.normals=c,this.uvs=d,this.capacity=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},us=nl;us.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var ds={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Zc={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Qc={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Kc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Fn=class extends nT{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),d=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),N=[];for(let P=x.length-1;P>=1;P-=2){let C=x[P-1],O=x[P-0];N.push(C,O)}return N}),a;try{a=rr({windingRule:l,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{a=ds}let u;try{u=rr({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...d]})}catch{u=Zc}if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(u){a.elementCount+=u.elementCount;for(let _=0;_<u.elements.length;_++){let x=u.elements[_],N=_%2===0?a.vertexCount:0;a.elements.push(x+N)}for(let _=0;_<u.vertexIndices.length;_++){let x=u.vertexIndices[_],N=a.vertexCount;a.vertexIndices.push(x+N)}for(let _=0;_<u.vertices.length;_++){let x=u.vertices[_];a.vertices.push(x)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,x=a.vertexCount;_<x;_++){let N=_*2,P=a.vertices[N+0],C=a.vertices[N+1];P<f&&(f=P),P>m&&(m=P),C<h&&(h=C),C>y&&(y=C)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new us(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,N=_*2,P=a.elements[N+0],C=a.elements[N+1],O=P+C,A={start:P,count:C,normals:[],continuous:[],concave:[]},R=P,k=O-1,$=P+1,te=this._shape.roundedCurves.length;do{let V=R-P,G=a.vertices[k*2+0],B=a.vertices[k*2+1],L=a.vertices[R*2+0],D=a.vertices[R*2+1],Y=a.vertices[$*2+0],W=a.vertices[$*2+1],F=L-G,j=D-B,M=Math.sqrt(F*F+j*j);F/=M,j/=M;let Q=L-Y,re=D-W,oe=Math.sqrt(Q*Q+re*re);Q/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=Q,A.concave[V]=F*re-j*Q>0;let K=a.vertexIndices[R];if(Array.isArray(K))A.continuous[V]=!1;else{let[ee,J]=this._shape.getCurveIndexFromVertexId(K-1,!0);if(J>0&&J<1)A.continuous[V]=!0;else{let ie=J===1?ee+1:ee-1;ie=(ie+te)%te;let ce=J===1?0:1,se=this._shape.roundedCurves[ee].getTangent(J),fe=this._shape.roundedCurves[ie].getTangent(ce);A.continuous[V]=se.dot(fe)>.95}}x&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[k,R,$]=[R,$,$+1],$>=O&&($-=C)}while($!==P+1);let X=[];X.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,O*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((V,G)=>[G,G]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(G))*this._bevelSize,L=[],D=[],Y=[],W=[],F=0;for(let M=0;M<C;M++){let Q=M*2,re=(M-1+C)%C*2,oe=a.vertices[A.start*2+Q+0],K=a.vertices[A.start*2+Q+1],ee=-A.normals[re+0]*B,J=-A.normals[re+1]*B,ie=-A.normals[Q+0]*B,ce=-A.normals[Q+1]*B;if(A.concave[M]||!A.concave[M]&&x){let se=Math.atan2(J,ee),fe=Math.atan2(ce,ie);fe>se&&(fe-=Math.PI*2);let Ge=fe-se;if(A.continuous[M]||x){let ye=se+Ge/2,Ue=Math.cos(ye)*B,Te=Math.sin(ye)*B;L[2*F+0]=oe+Ue*(x?-1:1),L[2*F+1]=K+Te*(x?-1:1),W[F]=M,F++}else{let ye=Math.max(1,Math.floor(i/4*Math.abs(Ge)/Math.PI));for(let Ue=0;Ue<=ye;Ue++){let Te=se+Ge*(Ue/ye),vt=Math.cos(Te)*B,Vt=Math.sin(Te)*B;L[2*F+0]=oe+vt,L[2*F+1]=K+Vt,W[F]=M,F++}}}else L[2*F+0]=oe+ee,L[2*F+1]=K+J,W[F]=M,D[M]=F,F++,L[2*F+0]=oe,L[2*F+1]=K,W[F]=M,F++,L[2*F+0]=oe+ie,L[2*F+1]=K+ce,W[F]=M,Y[M]=F,F++}let j=rr({windingRule:ve.POSITIVE,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let re=M.Org.idx,oe=W[re],K=W[(re+1)%W.length];M.idx=[oe,K],M.Sym.idx=[K,oe]},vertexIdCallback:M=>{let Q=M.Lprev.idx;return[Q?Q[1]:0,M.idx?M.idx[0]:0]}});if(!j)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!j.vertexCount)break;for(let M=0;M<j.vertexIndices.length;M++){let[Q,re]=j.vertexIndices[M];if(Q===re)continue;let oe=re;re<Q&&(oe+=C);for(let K=Q;K<oe;K++){let ee=K%C,J=(K+1)%C;if(!A.continuous[ee]||!A.continuous[J]){j.vertexIndices[M]=[Q,ee],j.vertexIndices.splice(M+1,0,[J,re]),j.vertices.splice((M+1)*2,0,j.vertices[M*2],j.vertices[M*2+1]);break}}}X.push({bevelI:V,angle:G,size:B,boundary:j,reverseMap:W,insetPoints:L})}let q=(V,G,B)=>{let L=0,D=V.boundary.vertexIndices.length;for(;L<D&&B(V.boundary.vertexIndices[G]);)G=(G+1)%D,L++;return L},H=g.length;for(let V=1;V<X.length;V++){let G=X[V-1],B=X[V],L=G.boundary.vertexIndices.length,D=B.boundary.vertexIndices.length;if(!L||!D)break;let Y=A.concave.length,W=0,F=Kc(W,C);for(;!G.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)W++,F=Kc(W,C);let j=G.boundary.vertexIndices.findIndex(F),M=B.boundary.vertexIndices.findIndex(F);do j=(j+1)%L;while(F(G.boundary.vertexIndices[j]));do M=(M+1)%D;while(F(B.boundary.vertexIndices[M]));W=(W+1)%C;let Q=W,re=this._buildBevelVert(A,G,(j-1+L)%L),oe=this._buildBevelVert(A,B,(M-1+D)%D),K=re,ee=oe,J,ie,ce=!1;do{F=Kc(W,C);let se=q(G,j,F),fe=q(B,M,F),Ge=ce;if(ce=!1,se&&!fe){for(let ye=0;ye<se;ye++)J=this._buildBevelVert(A,G,(j+ye)%L,ye/(se-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J;ce=!0}else if(!se&&fe)for(let ye=0;ye<fe;ye++)ie=this._buildBevelVert(A,B,(M+ye)%D,ye/(fe-1)),g.push(ee.topN,K.topP,ie.topP),g.push(K.bottomP,ee.bottomN,ie.bottomP),ee=ie;else if(se&&fe)if(J=this._buildBevelVert(A,G,j,0),ie=this._buildBevelVert(A,B,M,0),Ge?(g.push(K.topN,ie.topP,ee.topN),g.push(K.topN,J.topP,ie.topP),g.push(ie.bottomP,K.bottomN,ee.bottomN),g.push(ie.bottomP,J.bottomP,K.bottomN)):(g.push(ee.topN,K.topN,J.topP),g.push(ee.topN,J.topP,ie.topP),g.push(J.bottomP,K.bottomN,ee.bottomN),g.push(J.bottomP,ee.bottomN,ie.bottomP)),K=J,ee=ie,se===fe)for(let ye=1;ye<se;ye++)J=this._buildBevelVert(A,G,(j+ye)%L,ye/(se-1)),ie=this._buildBevelVert(A,B,(M+ye)%D,ye/(fe-1)),g.push(K.topN,J.topP,ee.topN),g.push(ee.topN,J.topP,ie.topP),g.push(J.bottomP,K.bottomN,ee.bottomN),g.push(J.bottomP,ee.bottomN,ie.bottomP),K=J,ee=ie;else if(se>fe){let ye=se/fe,Ue=0;for(let Te=1;Te<se;Te++)J=this._buildBevelVert(A,G,(j+Te)%L,Te/(se-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J,Te>(Ue+1)*ye&&(Ue++,ie=this._buildBevelVert(A,B,(M+Ue)%D,Ue/(fe-1)),g.push(ee.topN,J.topP,ie.topP),g.push(J.bottomP,ee.bottomN,ie.bottomP),ee=ie)}else{let ye=fe/se,Ue=0;for(let Te=1;Te<fe;Te++)ie=this._buildBevelVert(A,B,(M+Te)%D,Te/(fe-1)),g.push(ee.topN,J.topP,ie.topP),g.push(J.bottomP,ee.bottomN,ie.bottomP),ee=ie,Te>(Ue+1)*ye&&(Ue++,J=this._buildBevelVert(A,G,(j+Ue)%L,Ue/(se-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J)}j=(j+se)%L,M=(M+fe)%D,W=(W+1)%Y}while(W!==Q)}if(this._buildWall(X,A,g),x){let V=[];for(let G=g.length-1;G>=H+2;G-=3){let B=g[G-2],L=g[G-1],D=g[G-0];V.push(D,L,B)}g.splice(H,g.length-H,...V)}if(x){let V=[];for(let G=X[X.length-1].boundary.vertices.length-1;G>=1;G-=2){let B=X[X.length-1].boundary.vertices[G-1],L=X[X.length-1].boundary.vertices[G-0];V.push(B,L)}v.push(V)}if(!x){let V=X[X.length-1],G;try{G=rr({windingRule:X.length>1?ve.POSITIVE:ve.ODD,elementType:De.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]})}catch{G=Qc}if(!G)throw new Error("Error generating geometry for surface");d.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<G.elementCount*3;B+=3){let L=this._buildSurfaceVert(G,G.elements[B+0]),D=this._buildSurfaceVert(G,G.elements[B+1]),Y=this._buildSurfaceVert(G,G.elements[B+2]);g.push(L.top,D.top,Y.top),g.push(Y.bottom,D.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new il(Uint32Array.from(g),1),w=new il(this._buffer.positions,3),S=new il(this._buffer.normals,3),T=new il(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,T.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",T),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),d=this._buildBevelVert(t,i,(s+1)%l);o.push(d.topP,c.topN,c.bottomN),o.push(d.topP,c.bottomN,d.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,d=this._buffer.get(2),a=d*3,u=d*2,p={top:d+0,bottom:d+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]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],d,a,u,p;l!==c?(a=l,d=c,p=!1,u=e.continuous[a]&&e.continuous[d]):(d=l,a=(d-1+e.count)%e.count,p=e.concave[d]&&t.bevelI>0,u=e.continuous[d]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=d*2,g=a*2,v=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(v-this._minX)/this._width,T=(b-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],N=e.normals[g+0],P=e.normals[g+1];if(p){let k=N-_,$=P-x;_=_+k*(1-i),x=x+$*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let C=this._buffer.get(u?2:4),O=C*3,A=C*2,R={i:o,fi:d,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=x*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=x*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S,u||(C+=2,O+=6,A+=4,R.topP=C+0,R.bottomP=C+1,this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=N*f,this._buffer.normals[O+1]=P*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=N*f,this._buffer.normals[O+4]=P*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new Fn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ur(this.userData),e}};var jn=class extends iT{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ve.ODD;this.elementType=De.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ve.ODD,elementType:De.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,d=!0,a,u;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],v=i[y+1];if(a!==void 0&&g!==a&&(c=!1),u!==void 0&&v!==u&&(d=!1),a=g,u=v,!c&&!d)break}if(!c&&!d)try{l=rr({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{l=ds}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new sl(new Float32Array(p*3),3),this._normalAttribute=new sl(new Float32Array(p*3),3),this._uvAttribute=new sl(new Float32Array(p*2),2),this._indexAttribute=new sl(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let T=w*2,_=l.vertices[T+0],x=l.vertices[T+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let T=w*2,_=l.vertices[T+0],x=l.vertices[T+1],N=(_-m)/v,P=(x-y)/b;this._positionAttribute.setXYZ(w,_,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,P)}for(let w=0,S=f;w<S;w++){let T=w*3,_=l.elements[T+0],x=l.elements[T+1],N=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,N)}}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 jn(this._shape,this._curveSegments);return e.userData=Ur(this.userData),e}};var kn=class extends Fn{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super(e,t,o,i,s,l);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),d=this._buildBevelVert(t,i,(s+1)%l);o.push(d.topP,c.topN,c.bottomN),o.push(d.topP,c.bottomN,d.bottomP)}}clone(){let e=new kn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ur(this.userData),e}};var Tt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:ve.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Se(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Se(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return r<=0?l=new jn(n.shape,o,{windingRule:s}):l=new kn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Oh,Vector2 as Ah}from"three";var Ch=Math.PI*2,Hn=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,d=n.shape,a=r*.5,u=e*.5,p=sT(d,a,u,o*Math.PI/180,t,i);d.isClosed=!0,d.update();let f=Tt.create({shape:d,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function sT(n,r,e,t,o,i){if(t>=Ch)return o>30||o%4===0?(lT(n,r,e,i),Math.round(o/4)):Ph(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},l=t+Math.PI*.5,c={x:Math.cos(l)*r,y:Math.sin(l)*e},d=bh({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%d.length===0?aT(n,s.x,s.y,d,o,r,e,i):Ph(n,t,o,r,e,i)}function aT(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(Un(r,e));for(let d=0,a=t.length;d<a;d++){let u=t[d],p=n.points[d],f=Un(u.x,u.y);p.controls[1].position.set(u.x1,u.y1),f.controls[0].position.set(u.x2,u.y2),n.addPoint(f)}return l>0?Nh(n,i,s,l):n.addPoint(Un(0,0)),c}function Ph(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,d=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(Un(d,a))}return r<Ch?i>0?Nh(n,t,o,i):n.addPoint(Un(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Ih(n,t,o,i)),1}function lT(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(al(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(al(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(al(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(al(o,i-e,o+l,i-e,o-l,i-e)),t>0&&Ih(n,r,e,t)}function Un(n,r){return new tr(Oh.generateUUID(),new Ah(n,r))}function al(n,r,e,t,o,i){let s=Un(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Nh(n,r,e,t){Mh(n,r,e,t).forEach(i=>n.addPoint(i))}function Ih(n,r,e,t){let o=Mh(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Mh(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new Ah(o/r,i/e),l=n.points.map(c=>{let d=c.clone();return d.uuid=Oh.generateUUID(),d}).reverse();return l.forEach(c=>{c.position.multiply(s);let d=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(d)}),l}import{BufferGeometry as cT,Float32BufferAttribute as Jc,Uint32BufferAttribute as uT,Vector3 as Eh}from"three";var Lh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,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:r,height:e,depth:t,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:d,cornerRadius:a,cornerSegments:u}=n.parameters,p=new ps(!1,r,e,t,o,i,s,l,c,d,a,u);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},eu=new uT([0,0,0],1),ps=class extends cT{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,l=1,c=1,d=1,a=1,u=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),u>100&&(u=100),u===0&&(p=0);let m=()=>new Eh,h=new Eh,y=m(),g=m(),v=m(),b,w,S,T,_,x,N,P,C=m(),O=m(),A=m(),R=m(),k=m(),$=m(),te=m(),X=m(),q=t-2*c+.001,H=q/s,V=Math.ceil(l*s),G=V+1,B=q/V,L=-q/2,D=a+1,Y=2*Math.PI/a,W=Math.PI/2/p,F=.01,j=Math.min((1-u/100)*c,c-F),M=c-j,Q=0,re=2,oe=p*re+re,K=D*oe/re,ee=K+D*G,J=D*(G+oe),[ie,ce,se]=[3,3,2].map(Fe=>Array(J*Fe).fill(0)),fe=[],Ge=i-c;function ye(Fe,It){let fr=Math.PI/2;x=It*B,P=2*Math.PI*(x%H)/H+fr,x+=L,N=Math.sin(P)*Ge,_=Math.cos(P)*Ge,r?Fe.set(_,N,x):Fe.set(_,x,N)}ye(h,-1e-10),ye(y,0),C.copy(h),ye(h,1);let Ue=h.distanceTo(y),Te=f?0:M+j,vt=Ue*V+2*Te,Vt=j,$o=vt-Te;for(let Fe=0;Fe<=V;Fe++){ye(g,Fe),X.subVectors(g,C).normalize(),C.copy(g),$.copy(g).setComponent(+r+1,0).normalize(),te.crossVectors(X,$).normalize();let It=Fe===0,fr=Fe===V,Wg=It?3*Math.PI/2:W,qg=It?Vt:$o,$g=It?D:ee,Xg=It?0:J-D,Yg=X.clone().multiplyScalar(It?-M:M).add(g),Kg=X.clone().multiplyScalar(It?-1:1).normalize();for(let Dr=0;Dr<D;Dr++){let hd=Dr*Y;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(hd)),y.copy(te).multiplyScalar(c*Math.sin(hd))),A.copy(O).normalize(),It||fr){f||(Q=Xg+Dr,[0,1,2].forEach(bt=>{ie[Q*3+bt]=Yg.getComponent(bt),ce[Q*3+bt]=Kg.getComponent(bt)}),se[Q*2]=+fr,se[Q*2+1]=Dr/a),y.copy(A).multiplyScalar(j),v.addVectors(g,y);for(let bt=0;bt<p;bt++){let $l=bt*W+Wg;R.addVectors(h.copy(X).multiplyScalar(M*Math.sin($l)),y.copy(A).multiplyScalar(M*Math.cos($l))),k.copy(R).normalize(),y.addVectors(v,R),R.normalize(),Q=$g+bt*D+Dr,[0,1,2].forEach(Us=>{ie[Q*3+Us]=y.getComponent(Us),ce[Q*3+Us]=k.getComponent(Us)});let Zg=+It+Math.sin($l);se[Q*2]=(qg+M*Zg)/vt,se[Q*2+1]=Dr/a}}y.addVectors(g,O),Q=K+Fe*D+Dr,[0,1,2].forEach(bt=>{ie[Q*3+bt]=y.getComponent(bt),ce[Q*3+bt]=A.getComponent(bt)}),se[Q*2]=(Te+Fe*Ue)/vt,se[Q*2+1]=Dr/a}}let Nt=G+2*p+re,Fs=1,[js,ks]=[+f,Nt-1];for(let Fe=js;Fe<=ks-1;Fe++){let It=f&&Fe===ks-1;for(let fr=0;fr<D-1;fr++)b=Fe*D+fr,w=b+1,S=(It?fr:b)+D,T=(It?fr+1:w)+D,Fe===0?fe.push(w,T,S):Fe===Nt-2?fe.push(b,w,S):fe.push(b,w,S,w,T,S)}this.setIndex(fe),this.setAttribute("position",new Jc(ie,3)),this.setAttribute("normal",new Jc(ce,3)),this.setAttribute("uv",new Jc(se,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,s,l,c,d=6*(e-1)*r.radialSegments,a=e,u=a===e;for(let p=0;p<r.radialSegments;p++)i=a*t+p,s=i+1,l=(u?p:i)+t,c=(u?p+1:s)+t,o[d++]=i,o[d++]=s,o[d++]=l,o[d++]=s,o[d++]=c,o[d++]=l;return o.length=d,eu.array=o,eu.count=o.length,eu}};import{IcosahedronGeometry as dT}from"three";var Bh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new fs(r*.5,i,s):new dT(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},fs=class extends po{constructor(r=1,e=.2,t=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,r,e,t),this.type=l}static fromJSON(r){return new fs(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as pT,Shape as fT}from"three";var Dh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.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:r,segments:e,verticalSegments:t}=n.parameters,o=new fT;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new pT(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Uh,BufferGeometryLoader as PT,Vector3 as OT,BoxGeometry as Hh}from"three";import{BufferGeometry as ST,Vector2 as nu,Vector3 as kh}from"three";import{Box3 as mT,BufferAttribute as ms,BufferGeometry as Gh,Color as ou,EventDispatcher as hT,Float32BufferAttribute as Wn,Matrix3 as Rh,Matrix4 as jh,MathUtils as yT,Object3D as gT,Sphere as xT,Vector2 as Gt,Vector3 as at,Vector4 as vT}from"three";var wr=new jh,tu=new gT,ll=new at,mo=class extends hT{constructor(){super(),this.uuid=yT.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(r){let e=new Rh().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];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(r){return wr.makeRotationX(r),this.applyMatrix4(wr),this}rotateY(r){return wr.makeRotationY(r),this.applyMatrix4(wr),this}rotateZ(r){return wr.makeRotationZ(r),this.applyMatrix4(wr),this}translate(r,e,t){return wr.makeTranslation(r,e,t),this.applyMatrix4(wr),this}scale(r,e,t){return wr.makeScale(r,e,t),this.applyMatrix4(wr),this}lookAt(r){return tu.lookAt(r),tu.updateMatrix(),this.applyMatrix4(tu.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.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,d=o.uv2;d!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new at().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new ou().fromBufferAttribute(l,p));function a(p,f,m,h){let y=l===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new at().fromBufferAttribute(s,p),new at().fromBufferAttribute(s,f),new at().fromBufferAttribute(s,m)],v=new qn(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Gt().fromBufferAttribute(c,p),new Gt().fromBufferAttribute(c,f),new Gt().fromBufferAttribute(c,m)]),d!==void 0&&e.faceVertexUvs[1].push([new Gt().fromBufferAttribute(d,p),new Gt().fromBufferAttribute(d,f),new Gt().fromBufferAttribute(d,m)])}let u=r.groups;if(u.length>0)for(let p=0;p<u.length;p++){let f=u[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?a(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)a(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)a(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(ll).negate(),this.translate(ll.x,ll.y,ll.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new jh;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new at,e=new at;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,l),e.subVectors(s,l),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new at;if(r){let t=new at,o=new at;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],d=this.vertices[l.b],a=this.vertices[l.c];t.subVectors(a,d),o.subVectors(c,d),t.cross(o),e[l.a].add(t),e[l.b].add(t),e[l.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],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 r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;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 r=new mo;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;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 d=new at,a={a:new at,b:new at,c:new at};i.push(d),s.push(a)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=o.faceNormals[i],d=o.vertexNormals[i];c.copy(l.normal),d.a.copy(l.vertexNormals[0]),d.b.copy(l.vertexNormals[1]),d.c.copy(l.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new mT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new xT),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,s=this.vertices,l=r.vertices,c=this.faces,d=r.faces,a=this.colors,u=r.colors;e!==void 0&&(o=new Rh().getNormalMatrix(e));for(let p=0,f=l.length;p<f;p++){let h=l[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=u.length;p<f;p++)a.push(u[p].clone());for(let p=0,f=d.length;p<f;p++){let m=d[p],h,y,g=m.vertexNormals,v=m.vertexColors,b=new qn(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=v.length;w<S;w++)y=v[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++)v.push(g[b].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,d=this.vertices.length;c<d;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,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[u]]}let s=[];for(let c=0,d=this.faces.length;c<d;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 p=0;p<3;p++)if(u[p]===u[(p+1)%3]){s.push(c);break}}for(let c=s.length-1;c>=0;c--){let d=s[c];this.faces.splice(d,1);for(let a=0,u=this.faceVertexUvs.length;a<u;a++)this.faceVertexUvs[a].splice(d,1)}let l=this.vertices.length-t.length;return this.vertices=t,l}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new at(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,d){return c.materialIndex-d.materialIndex}r.sort(t);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 d=r[c]._id;s&&s.push(o[d]),l&&l.push(i[d])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}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 t=[],o=[],i={},s=[],l={},c=[],d={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,v=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,b),_=a(_,5,w),_=a(_,6,S),_=a(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),v){let x=this.faceVertexUvs[0][m];t.push(f(x[0]),f(x[1]),f(x[2]))}if(b&&t.push(u(h.normal)),w){let x=h.vertexNormals;t.push(u(x[0]),u(x[1]),u(x[2]))}if(S&&t.push(p(h.color)),T){let x=h.vertexColors;t.push(p(x[0]),p(x[1]),p(x[2]))}}function a(m,h,y){return y?m|1<<h:m&~(1<<h)}function u(m){let h=m.x.toString()+m.y.toString()+m.z.toString();return i[h]!==void 0||(i[h]=o.length/3,o.push(m.x,m.y,m.z)),i[h]}function p(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 d[h]!==void 0||(d[h]=c.length/2,c.push(m.x,m.y)),d[h]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new mo().copy(this)}copy(r){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=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];v.push(S.clone())}this.faceVertexUvs[p].push(v)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),m.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let l=r.skinWeights;for(let p=0,f=l.length;p<f;p++)this.skinWeights.push(l[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let d=r.lineDistances;for(let p=0,f=d.length;p<f;p++)this.lineDistances.push(d[p]);let a=r.boundingBox;a!==null&&(this.boundingBox=a.clone());let u=r.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new ru().fromGeometry(this),e=new Gh,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",cl.call(new ms(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",cl.call(new ms(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",Vh.call(new ms(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",zh.call(new ms(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",zh.call(new ms(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let d=s[l],a=new Wn(d.data.length*3,3);a.name=d.name,i.push(cl.call(a,d.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new Wn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Fh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new Wn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Fh.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.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(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new Gh,t=r.geometry;if(r.isPoints||r.isLine){let o=new Wn(t.vertices.length*3,3),i=new Wn(t.colors.length*3,3);if(e.setAttribute("position",cl.call(o,t.vertices)),e.setAttribute("color",Vh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new Wn(t.lineDistances.length,1);e.setAttribute("lineDistance",bT.call(s,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};mo.prototype.isGeometry=!0;var ru=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(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=r.morphTargets,c=l.length,d;if(c>0){d=[];for(let g=0;g<c;g++)d[g]={name:l[g].name,data:[]};this.morphTargets.position=d}let a=r.morphNormals,u=a.length,p;if(u>0){p=[];for(let g=0;g<u;g++)p[g]={name:a[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let b=v.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=v.normal;this.normals.push(S,S,S)}let w=v.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new Gt,new Gt,new Gt))}if(s===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new Gt,new Gt,new Gt))}for(let S=0;S<c;S++){let T=l[S].vertices;d[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<u;S++){let T=a[S].vertexNormals[g];p[S].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},qn=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new at,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new ou,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function bT(n){return this.array.set(n),this}function Vh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new ou),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function zh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new Gt),r[e++]=i.x,r[e++]=i.y}return this}function cl(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new at),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Fh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new vT),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var wT=["a","b","c"];function _T(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function iu(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function su(n,r,e,t,o,i){let s=Math.min(n,r),l=Math.max(n,r),c=s+"_"+l,d;if(t.has(c))d=t.get(c);else{let a=e[s],u=e[l];d={a,b:u,newEdge:null,faces:[]},t.set(c,d)}d.faces.push(o),i[n].edges.push(d),i[r].edges.push(d)}function TT(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],su(s.a,s.b,n,t,s,e),su(s.b,s.c,n,t,s,e),su(s.c,s.a,n,t,s,e)}function ul(n,r,e,t,o){n.push(new qn(r,e,t,void 0,void 0,o))}function $n(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function dl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var pl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof ST?r=new mo().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new kh,t,o,i,s,l,c=r.vertices,d=r.faces,a=r.faceVertexUvs[0],u=a!==void 0&&a.length>0,p=[],f=new Map;TT(c,d,p,f);let m=[],h,y,g,v,b,w,S;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new kh,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(v=y.faces[s],l=0;l<3&&(h=c[_T(v,wT[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,x,N,P,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)N=P[s],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(x)),O.add(e),A.push(O)}let R=A.concat(m),k=A.length,$,te,X,q=[],H=[],V,G,B,L,D=new nu,Y=new nu,W=new nu;for(o=0,i=d.length;o<i;o++)v=d[o],$=Number(iu(v.a,v.b,f).newEdge)+k,te=Number(iu(v.b,v.c,f).newEdge)+k,X=Number(iu(v.c,v.a,f).newEdge)+k,ul(q,$,te,X,v.materialIndex),ul(q,v.a,$,X,v.materialIndex),ul(q,v.b,te,$,v.materialIndex),ul(q,v.c,X,te,v.materialIndex),u&&(V=a[o],G=V[0],B=V[1],L=V[2],D.set($n(G.x,B.x),$n(G.y,B.y)),Y.set($n(B.x,L.x),$n(B.y,L.y)),W.set($n(G.x,L.x),$n(G.y,L.y)),dl(H,D,Y,W),dl(H,G,D,W),dl(H,B,Y,D),dl(H,L,W,Y));r.vertices=R,r.faces=q,u&&(r.faceVertexUvs[0]=H)}};var qe=new OT,Wh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Uh().copy(new Hh(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(qe),t={width:qe.x,height:qe.y,depth:qe.z,subdivisions:0}):t=r.parameters;let o={...t,...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:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Uh().copy(new Hh(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(qe)):qe.set(s.width,s.height,s.depth),(r!==qe.x||e!==qe.y||t!==qe.z)&&i.scale(qe.x===0?1:r/qe.x,qe.y===0?1:e/qe.y,qe.z===0?1:t/qe.z);let l=i.originalGeometry;try{o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new pl(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new PT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(qe);let s=100/qe.x;Object.assign(i.parameters,{width:100,height:qe.y*s,depth:qe.z*s}),r(this.build(i))})}};var fl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,d=r*.5,a=e*.5,u=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=u+Math.sin(y)*d,v=p+Math.cos(y)*a;c.addPoint(c.createPoint(g,v))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Tt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as AT,Float32BufferAttribute as au,Vector2 as _r,Vector3 as Je}from"three";var qh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,d=new cu(r*.5,e,o,i,s,l,c);return d.scale(1,1,t/r),Object.assign(d,{userData:{...n,type:"PyramidGeometry"}})}};function hs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function lu(n,r,e,t,o,i){let s=r.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),t===o){let d=s.add(l).normalize();i.copy(n).addScaledVector(d,t/Math.sin(c/2))}else{let d=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(d)),i.addScaledVector(l,t/Math.sin(d))}}function CT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var cu=class extends AT{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,l=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),l=Math.floor(l);let c=[],d=[],a=[],u=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,b=new Je(0,-f,0),w=new Je(0,f,0),S=new _r(r,-f),T=new _r(h,-f),_=new _r(0,w.y).sub(T),x=new _r(0,w.y).sub(S),N=new _r(_.y,-_.x).normalize(),P=new _r(x.y,-x.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let H=new Je(N.x,N.y,0),V=new Je(Math.cos(y)*H.x,H.y,Math.sin(y)*H.x);A=H.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),k=s/Math.tan((Math.PI-A)/2),$=new Je;if(!i){d.push(b.x,b.y,b.z),a.push(0,-1,0),u.push(0,0);let H=p++,V=[],G=S.clone(),B=R/Math.cos(Math.PI/t);G.x-=B;for(let L=0;L<t;L++){let D=L/t*Math.PI*2+m,Y=new _r(Math.sin(D),Math.cos(D));hs(G,Y,$),d.push($.x,$.y,$.z),a.push(0,-1,0),u.push(0,0),V.push(p++)}for(let L=0;L<V.length;L++)c.push(V[L],H,V[(L+1)%V.length])}let te=[];{let H=new Je,V=new Je,G=new Je,B=new Je,L=new Je,D=new Je;for(let Y=0;Y<t;Y++){let W=Y/t*Math.PI*2+m,F=(Y+.5)/t*Math.PI*2+m,j=(Y+1)/t*Math.PI*2+m,M=new _r(Math.sin(W),Math.cos(W)),Q=new _r(Math.sin(F),Math.cos(F)),re=new _r(Math.sin(j),Math.cos(j));hs(S,M,V),hs(S,re,G),hs(N,Q,H),lu(w,V,G,k,k,B),d.push(B.x,B.y,B.z),lu(V,w,G,k,R,L),d.push(L.x,L.y,L.z),lu(G,V,w,R,k,D),d.push(D.x,D.y,D.z),a.push(H.x,H.y,H.z),a.push(H.x,H.y,H.z),a.push(H.x,H.y,H.z),u.push(0,0),u.push(0,0),u.push(0,0);let oe=p++,K=p++,ee=p++;if(c.push(oe,K,ee),s>0){{let ce=V.clone().add(G).multiplyScalar(.5),se=w.clone().sub(ce).normalize(),Ge=b.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ye=D.clone().sub(L);X(ce,ye,Ge,_.angle())}let J,ie;{let ce=new Je;hs(P,re,ce);let se=D.clone().add(B).multiplyScalar(.5);se=CT(se,G,w);let fe=D.clone().sub(B);[J,ie]=X(se,fe,ce,A,B.y)}{let ce=J,se=ce.clone().setY(0).normalize(),fe=new Je(0,-1,0),Ge=se.clone().cross(fe);q(ce,se,fe,Ge)}te.concat(ie);{let ce=_.angle(),se=Math.PI-ce,fe=w.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Ge=new Je,ye=[];for(let Te=0;Te<l;Te++){let vt=[],Vt=Math.PI/2-se*Te/l,$o=Math.cos(Vt),Nt=Math.sin(Vt),Fs=F;for(let js=0;js<=Te;js++){let ks=Math.cos(Fs),Fe=Math.sin(Fs);H.x=$o*Fe,H.y=Nt,H.z=$o*ks,Ge.copy(fe).addScaledVector(H,s),d.push(Ge.x,Ge.y,Ge.z),a.push(H.x,H.y,H.z),u.push(0,0),vt.push(p++),Fs+=Math.PI*2/Te/t}ye.push(vt)}ie.reverse(),ye.push(ie);let Ue=ye.length-1;for(let Te=0;Te<Ue;Te++){let vt=ye[Te],Vt=ye[Te+1],$o=vt.length-1;c.push(Vt[1],vt[0],Vt[0]);for(let Nt=1;Nt<=$o;Nt++)c.push(vt[Nt],vt[Nt-1],Vt[Nt]),c.push(Vt[Nt+1],vt[Nt],Vt[Nt])}}}}}this.setIndex(c),this.setAttribute("position",new au(d,3)),this.setAttribute("normal",new au(a,3)),this.setAttribute("uv",new au(u,2));function X(H,V,G,B,L){let D=-B/2,Y=(Math.PI-B)/2,W=V.clone().normalize().cross(G);H.addScaledVector(G,-s/Math.sin(Y));let F=new Je,j=new Je,M=1,Q=p,re=[];for(let oe=0;oe<=l;oe++){let K=D+oe/l*B;j.set(0,0,0),j.addScaledVector(W,Math.sin(K)),j.addScaledVector(G,Math.cos(K));for(let ee=0;ee<=M;ee++){let J=ee/M-.5;if(F.copy(H),F.addScaledVector(V,J),F.addScaledVector(j,s),L!=null){let ie=Math.max(0,F.y-L);F.addScaledVector(V,-ie/V.y)}d.push(F.x,F.y,F.z),a.push(j.x,j.y,j.z),u.push(0,0),ee===0&&re.push(p),p++}}for(let oe=0;oe<l;oe++)for(let K=0;K<M;K++){let ee=Q+K+(M+1)*oe,J=ee+(M+1),ie=J+1,ce=ee+1;c.push(ee,J,ce),c.push(J,ie,ce)}return[H.clone().addScaledVector(V,.5),re]}function q(H,V,G,B){let L=Math.PI/2,D=x.angle()-L,Y=[],W=new Je,F=new Je;for(let M=0;M<=l;M++){let Q=[],re=M/l;for(let oe=0;oe<=M;oe++){let ee=((M?oe/M:0)-.5)*v,J=Math.cos(ee),ie=Math.sin(ee),ce=Math.atan(Math.tan(D)*J),se=(L+ce)*re,fe=Math.cos(se),Ge=Math.sin(se);W.set(0,0,0),W.addScaledVector(V,Ge*J),W.addScaledVector(G,fe),W.addScaledVector(B,Ge*ie),F.copy(H).addScaledVector(W,s),d.push(F.x,F.y,F.z),a.push(W.x,W.y,W.z),u.push(0,0),Q.push(p++)}Y.push(Q)}let j=Y.length-1;for(let M=0;M<j;M++){let Q=Y[M],re=Y[M+1],oe=Q.length-1;c.push(Q[0],re[1],re[0]);for(let K=1;K<=oe;K++)c.push(Q[K-1],Q[K],re[K]),c.push(Q[K],re[K+1],re[K])}}}};var ml=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,d={x:e*.5,y:t*.5},a={x:-d.x,y:-d.y},u={x:d.x,y:d.y};function p(w,S,T){return S>e&&T>t?Math.min(w*e/S,w*t/T):S>e?w*e/S:T>t?w*t/T:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=u.x,y=u.y,g=a.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let v=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(v=!1);v&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=Tt.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as NT}from"three";var $h=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:d}=n.parameters,a=new NT(.5*r,o,i,s,l,c,d);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as IT}from"three";var Xh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new IT(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as MT,Float32BufferAttribute as uu,Vector3 as ET}from"three";var Yh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new du(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},du=class extends MT{constructor(r=1,e=1,t=1,o=90,i=10,s=24){super(),this.type="BackdropGeometry";let l=[],c=[],d=[],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=[],p=Math.PI/2,f=(F=0,j=0,M=0)=>new ET(F,j,M),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],b=-g,w=+g,[S,T,_]=[f(b,-y,+v),f(b,-y,-v),f(b,+y,-v)],x=(F,j=!1)=>Math.sin(F-Math.PI/(1+ +j)),N=(F,j=!1)=>Math.cos(F-Math.PI/(1+ +j));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,C=S.z-a;o<=p?(_.z=Math.min(P,C),_.z==C&&(_.y-=(P-C)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,S.z-a),m.subVectors(S,T),h.subVectors(_,T);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),R=O/Math.cos(o/2),k=m.clone().normalize().add(h.normalize()).setLength(R).add(T);m.set(0,x(o,!0),N(o,!0)),u.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let F=0;F<=s;F++){let j=p+o+F*$;m.set(0,Math.sin(j)*A,Math.cos(j)*A),m.add(k),h.set(0,x(j),N(j)),u.push([m.clone(),h.clone()])}u.push([S,f(0,1,0)]);let te=Math.sin($/2)*A*2,X=u.length-1,q=u[0][0].distanceTo(u[1][0]),H=u[X-1][0].distanceTo(u[X][0]),V=q+te*s+H;u[0].push(1);for(let F=0;F<=s;F++)u[F+1].push(1-(q+F*te)/V);u[X].push(0);let[G,B,L]=u[0],D,Y,W;for(let F=1;F<u.length;F++)[D,Y,W]=u[F],l.push(b,G.y,G.z,b,D.y,D.z,w,G.y,G.z,w,G.y,G.z,b,D.y,D.z,w,D.y,D.z),c.push(0,B.y,B.z,0,Y.y,Y.z,0,B.y,B.z,0,B.y,B.z,0,Y.y,Y.z,0,Y.y,Y.z),d.push(0,L,0,W,1,L,1,L,0,W,1,W),[G,B,L]=[D,Y,W];this.setAttribute("position",new uu(l,3)),this.setAttribute("normal",new uu(c,3)),this.setAttribute("uv",new uu(d,2))}};var hl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:d}=n.parameters,a=n.shape,u=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=u*t/100,v=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,T=f+Math.sin(S)*u,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(T,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*u,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,T)),y+=h,S=f+Math.cos(y)*g,T=m+Math.sin(y)*v,w<=o,a.addPoint(a.createPoint(S,T)),y+=h}a.isClosed=!0;for(let w=0,S=a.points.length;w<S;w++)a.points[w].roundness=i;a.roundness=i,a.update();let b=Tt.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:d}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as LT}from"three";var Kh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e}=n.parameters,t=new LT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Zh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),t=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:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,d=BT(r,e,t,r*.5,s,i,0,0,o,l,c);return d.scale(1,e/r,1),Object.assign(d,{userData:{...n,type:"TorusGeometry"}})}};function BT(n,r,e,t,o,i,s,l,c,d,a){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(d=0),new ps(!0,n,r,e,t,o,i,s,l,c,d,a)}import{TorusKnotGeometry as DT}from"three";var Qh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:s}=n.parameters,l=r*.5;l!==e&&(l-=e);let c=new DT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Jh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,d=r*.5,a=e*.5;l?(c.addPoint(c.createPoint(-d,a)),c.addPoint(c.createPoint(d,-a)),c.addPoint(c.createPoint(-d,-a))):(c.addPoint(c.createPoint(0,a)),c.addPoint(c.createPoint(d,-a)),c.addPoint(c.createPoint(-d,-a))),c.isClosed=!0;for(let p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let u=Tt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as ty,Vector3 as et,Matrix4 as ys,BufferGeometry as ry,BufferAttribute as pu,MathUtils as fu}from"three";function ey(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function GT(n,r,e){let t=[new et,new et,new et],o=[new et,new et,new et];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let l=o[s],c=fu.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new ys().makeBasis(t[0],t[1],t[2])}var oy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=r?.shapeData??Hn.create({parameters:yc}).userData.shape;return{path:n.path??nn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...ya,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new mu(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new ry,{userData:{...n,type:"PathGeometry"}})}},mu=class extends ry{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!ey(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,s=this.inputs.path.isClosed?e.length:e.length-1,l=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),d=Math.min(Math.max(2,c-l+1),s+2),a=[],u=[];for(let O=0;O<d;O++){let A=this.inputs.path.isClosed?(O+l)%e.length:Math.min(O+l,e.length-1);a.push(e[A].clone()),u.push(t[A].clone())}let p=(O,A,R)=>{a[O]=a[O].clone().lerp(a[A],R),u[O]=GT(u[O],u[A],R)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(a.length-1,a.length-2,1-h)),o===0){let O=a.length-1;a[O].copy(a[0]),u[O].copy(u[0])}this._applyPathModifiers(u,f,h);let{regions:g,infos:v,vertices:b}=this._computeShapePoints(5),w=0,S=0;v.sort((O,A)=>O.start-A.start),v.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,R,k)=>A+(k===0||!R?2:1),0),S+=O.verticesCount,w=S});let T=S*d,_,x=0;if(this._isOpenEnded()){try{_=rr({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=Qc}x=_.vertexCount}let N=T+2*x,P={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},C=[];v.forEach(O=>{this._extrudeRegion(O,b,u,a,P,C,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,T,C,P,u[0],a[0],!1),this._closeEnd(_,T+x,C,P,u[u.length-1],a[a.length-1],!0)),this.setAttribute("position",new pu(P.positions,3)),this.setAttribute("normal",new pu(P.normals,3)),this.setAttribute("uv",new pu(P.uvs,2)),this.setIndex(C)}_extractPathPoints(){let t=Ya(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new et,l=new et,c=new et,d=new et,a=new et(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(v).normalize(),S=b.clone().sub(g).normalize(),T=w.clone().add(S).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),d.copy(_),y===0&&(s.copy(x),l.copy(T));let N=new ys().makeBasis(_,x,T);t.push(N)}let u=i?l:c,p=i?s:new et(0,1,0),f=u.clone().cross(d).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);u.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new ys().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:l,startScale:c,endScale:d}=this.inputs.parameters.extrusion,a=new ys,u=new ys;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));a.makeRotationZ(fu.lerp(s,s+l,m));let h=fu.lerp(c,d,m);u.makeScale(h,h,h),p.multiply(a).multiply(u)}),e}_computeShapePoints(e=12,t=ve.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let b=y[v-1],w=y[v-0];g.push(b,w)}return g}),l;try{l=rr({windingRule:t,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{l=ds}let c;try{c=rr({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=Zc}if(!l)throw new Error("error generating geometry");let d=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?l.vertexCount:0;l.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=l.vertexCount;l.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];l.vertices.push(y)}}let a=1/0,u=-1/0,p=1/0,f=-1/0;for(let h=0,y=l.vertexCount;h<y;h++){let g=h*2,v=l.vertices[g+0],b=l.vertices[g+1];v<a&&(a=v),v>u&&(u=v),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=d,g=h*2,v=l.elements[g+0],b=l.elements[g+1],w=v+b,S={start:v,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let T=v,_=w-1,x=v+1,N=o.roundedCurves.length;do{let P=T-v,C=l.vertices[_*2+0],O=l.vertices[_*2+1],A=l.vertices[T*2+0],R=l.vertices[T*2+1],k=l.vertices[x*2+0],$=l.vertices[x*2+1],te=A-C,X=R-O,q=Math.sqrt(te*te+X*X);te/=q,X/=q;let H=A-k,V=R-$,G=Math.sqrt(H*H+V*V);H/=G,V/=G,S.normals[P*2+0]=-V,S.normals[P*2+1]=H;let B=l.vertexIndices[T];if(Array.isArray(B))S.continuous[P]=!1;else{let[L,D]=o.getCurveIndexFromVertexId(B-1,!0);if(D>0&&D<1)S.continuous[P]=!0;else{let Y=D===1?L+1:L-1;Y=(Y+N)%N;let W=D===1?0:1,F=o.roundedCurves[L].getTangent(D),j=o.roundedCurves[Y].getTangent(W);S.continuous[P]=F.dot(j)>.95}}y&&(S.normals[P*2+0]*=-1,S.normals[P*2+1]*=-1),[_,T,x]=[T,x,x+1],x>=w&&(x-=b)}while(x!==v+1)}return{regions:[i,...s],infos:m,vertices:l.vertices}}_insertVertex(e,t,o,i,s){let l=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[l+0]=s.x,e.uvs[l+1]=s.y}_extrudeRegion(e,t,o,i,s,l,c){let d=new et,a=new et,u=new et,p=new et,f=new ty;o.forEach((h,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(d.set(t[w+0],t[w+1],0),u.copy(d).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;a.set(t[S+0],t[S+1],0),p.copy(d).sub(a),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,v,u,p,f),v++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;a.set(t[S+0],t[S+1],0),p.copy(a).sub(d),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,v,u,p,f),v++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),v=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&v++;let w=b===e.count-1?0:v+1,S=y+v,T=y+w,_=g+w,x=g+v;e.isHole?l.push(S,_,T,S,x,_):l.push(S,T,_,S,_,x),v++}}}_closeEnd(e,t,o,i,s,l,c){let d=e.vertexCount,a=new et(0,0,c?-1:1).applyMatrix4(s),u=new et,p=new ty;for(let m=0;m<d;m++){let h=2*m;u.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,u,a,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,v=f[h+(c?2:1)]+t;o.push(y,g,v)}}};import{BufferAttribute as ny,BufferGeometry as hu}from"three";import{mergeBufferGeometries as RT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function iy(){let n=new hu;return n.setAttribute("position",new ny(new Float32Array([]),3)),n.setIndex(new ny(new Uint16Array([]),1)),n}var VT=iy().attributes,zT=12,FT=1,Xn=class extends hu{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,VT),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.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:d,textTransform:a}=e,u=a===2?d.toUpperCase():a===3?d.toLowerCase():d,p=jT(e,t,u),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Se().fromShape(S));this.vectorShapes=v;let b=v.map(S=>Tt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?ve.NONZERO:ve.ODD,subdivisions:this.isLowResolution&&s>0?FT:zT}})),w=b.length?RT(b):iy();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,T])=>{this.setAttribute(S,T)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=Vr(new hu,Xn.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,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 jT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
1
+ var Jg=Object.create;var Yl=Object.defineProperty;var e0=Object.getOwnPropertyDescriptor;var t0=Object.getOwnPropertyNames;var r0=Object.getPrototypeOf,o0=Object.prototype.hasOwnProperty;var Hs=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),n0=(n,r)=>{for(var e in r)Yl(n,e,{get:r[e],enumerable:!0})},i0=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of t0(r))!o0.call(n,o)&&o!==e&&Yl(n,o,{get:()=>r[o],enumerable:!(t=e0(r,o))||t.enumerable});return n};var Ws=(n,r,e)=>(e=n!=null?Jg(r0(n)):{},i0(r||!n||!n.__esModule?Yl(e,"default",{value:n,enumerable:!0}):e,n));var Hm=Hs((Tc,Um)=>{(function(n,r){typeof Tc=="object"?Um.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(Tc,function(){"use strict";return n.importState=function(e){var t=new n;return t.importState(e),t},n;function n(){return function(e){var t=0,o=0,i=0,s=1;e.length==0&&(e=[+new Date]);var l=r();t=l(" "),o=l(" "),i=l(" ");for(var c=0;c<e.length;c++)t-=l(e[c]),t<0&&(t+=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*t+s*23283064365386963e-26;return t=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[t,o,i,s]},u.importState=function(a){t=+a[0]||0,o=+a[1]||0,i=+a[2]||0,s=+a[3]||0},u}(Array.prototype.slice.call(arguments))}function r(){var e=4022871197,t=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 t.version="Mash 0.9",t}})});var Ym=Hs((Ya,Xm)=>{(function(n,r){typeof Ya=="object"&&typeof Xm<"u"?r(Ya):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Ya,function(n){"use strict";n.SVD=function(r,e,t,o,i){if(e=e===void 0||e,t=t===void 0||t,i=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,l,c,u,a,d,p,f,m,h,y,g,v=r[0].length,b=r.length;if(b<v)throw new TypeError("Invalid matrix: m < n");for(var w=[],S=[],T=[],_=e==="f"?b:v,x=h=p=0;x<b;x++)S[x]=new Array(_).fill(0);for(x=0;x<v;x++)T[x]=new Array(v).fill(0);var N,P=new Array(v).fill(0);for(x=0;x<b;x++)for(s=0;s<v;s++)S[x][s]=r[x][s];for(x=0;x<v;x++){for(w[x]=p,m=0,c=x+1,s=x;s<b;s++)m+=Math.pow(S[s][x],2);if(m<i)p=0;else for(f=(d=S[x][x])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x]=d-p,s=c;s<v;s++){for(m=0,l=x;l<b;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+d*S[l][x]}for(P[x]=p,m=0,s=c;s<v;s++)m+=Math.pow(S[x][s],2);if(m<i)p=0;else{for(f=(d=S[x][x+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,S[x][x+1]=d-p,s=c;s<v;s++)w[s]=S[x][s]/f;for(s=c;s<b;s++){for(m=0,l=c;l<v;l++)m+=S[s][l]*S[x][l];for(l=c;l<v;l++)S[s][l]=S[s][l]+m*w[l]}}h<(y=Math.abs(P[x])+Math.abs(w[x]))&&(h=y)}if(t)for(x=v-1;0<=x;x--){if(p!==0){for(f=S[x][x+1]*p,s=c;s<v;s++)T[s][x]=S[x][s]/f;for(s=c;s<v;s++){for(m=0,l=c;l<v;l++)m+=S[x][l]*T[l][s];for(l=c;l<v;l++)T[l][s]=T[l][s]+m*T[l][x]}}for(s=c;s<v;s++)T[x][s]=0,T[s][x]=0;T[x][x]=1,p=w[x],c=x}if(e){if(e==="f")for(x=v;x<b;x++){for(s=v;s<b;s++)S[x][s]=0;S[x][x]=1}for(x=v-1;0<=x;x--){for(c=x+1,p=P[x],s=c;s<_;s++)S[x][s]=0;if(p!==0){for(f=S[x][x]*p,s=c;s<_;s++){for(m=0,l=c;l<b;l++)m+=S[l][x]*S[l][s];for(d=m/f,l=x;l<b;l++)S[l][s]=S[l][s]+d*S[l][x]}for(s=x;s<b;s++)S[s][x]=S[s][x]/p}else for(s=x;s<b;s++)S[s][x]=0;S[x][x]=S[x][x]+1}}for(o*=h,l=v-1;0<=l;l--)for(var C=0;C<50;C++){for(N=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){N=!0;break}if(Math.abs(P[c-1])<=o)break}if(!N){for(a=0,u=c-(m=1),x=c;x<l+1&&(d=m*w[x],w[x]=a*w[x],!(Math.abs(d)<=o));x++)if(p=P[x],P[x]=Math.sqrt(d*d+p*p),a=p/(f=P[x]),m=-d/f,e)for(s=0;s<b;s++)y=S[s][u],g=S[s][x],S[s][u]=y*a+g*m,S[s][x]=-y*m+g*a}if(g=P[l],c===l){if(g<0&&(P[l]=-g,t))for(s=0;s<v;s++)T[s][l]=-T[s][l];break}for(h=P[c],d=(((y=P[l-1])-g)*(y+g)+((p=w[l-1])-(f=w[l]))*(p+f))/(2*f*y),p=Math.sqrt(d*d+1),d=((h-g)*(h+g)+f*(y/(d<0?d-p:d+p)-f))/h,x=c+(m=a=1);x<l+1;x++){if(p=w[x],y=P[x],f=m*p,p*=a,g=Math.sqrt(d*d+f*f),d=h*(a=d/(w[x-1]=g))+p*(m=f/g),p=-h*m+p*a,f=y*m,y*=a,t)for(s=0;s<v;s++)h=T[s][x-1],g=T[s][x],T[s][x-1]=h*a+g*m,T[s][x]=-h*m+g*a;if(g=Math.sqrt(d*d+f*f),d=(a=d/(P[x-1]=g))*p+(m=f/g)*y,h=-m*p+a*y,e)for(s=0;s<b;s++)y=S[s][x-1],g=S[s][x],S[s][x-1]=y*a+g*m,S[s][x]=-y*m+g*a}w[c]=0,w[l]=d,P[l]=h}for(x=0;x<v;x++)P[x]<o&&(P[x]=0);return{u:S,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Ly=Hs(Nl=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var a=this||r;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 d=this||r;if(a=parseFloat(a),d.ctx||u(),typeof a<"u"&&a>=0&&a<=1){if(d._volume=a,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.volume=h._volume*a)}return d}return d._volume},mute:function(a){var d=this||r;d.ctx||u(),d._muted=a,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(a?0:d._volume,r.ctx.currentTime);for(var p=0;p<d._howls.length;p++)if(!d._howls[p]._webAudio)for(var f=d._howls[p]._getSoundIds(),m=0;m<f.length;m++){var h=d._howls[p]._soundById(f[m]);h&&h._node&&(h._node.muted=a?!0:h._muted)}return d},stop:function(){for(var a=this||r,d=0;d<a._howls.length;d++)a._howls[d].stop();return a},unload:function(){for(var a=this||r,d=a._howls.length-1;d>=0;d--)a._howls[d].unload();return a.usingWebAudio&&a.ctx&&typeof a.ctx.close<"u"&&(a.ctx.close(),a.ctx=null,u()),a},codecs:function(a){return(this||r)._codecs[a.replace(/^x-/,"")]},_setup:function(){var a=this||r;if(a.state=a.ctx&&a.ctx.state||"suspended",a._autoSuspend(),!a.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(a._canPlayEvent="canplay")}catch{a.noAudio=!0}else a.noAudio=!0;try{var d=new Audio;d.muted&&(a.noAudio=!0)}catch{}return a.noAudio||a._setupCodecs(),a},_setupCodecs:function(){var a=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return a}if(!d||typeof d.canPlayType!="function")return a;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=a._navigator?a._navigator.userAgent:"",m=f.match(/OPR\/([0-6].)/g),h=m&&parseInt(m[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),v=y&&g&&parseInt(g[1],10)<15;return a._codecs={mp3:!!(!h&&(p||d.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!p,opus:!!d.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!d.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(d.canPlayType('audio/wav; codecs="1"')||d.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!d.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!d.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(d.canPlayType("audio/x-m4a;")||d.canPlayType("audio/m4a;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(d.canPlayType("audio/x-m4b;")||d.canPlayType("audio/m4b;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(d.canPlayType("audio/x-mp4;")||d.canPlayType("audio/mp4;")||d.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!v&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!d.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(d.canPlayType("audio/x-flac;")||d.canPlayType("audio/flac;")).replace(/^no$/,"")},a},_unlockAudio:function(){var a=this||r;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 d=function(p){for(;a._html5AudioPool.length<a.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,a._releaseHtml5Audio(f)}catch{a.noAudio=!0;break}for(var m=0;m<a._howls.length;m++)if(!a._howls[m]._webAudio)for(var h=a._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=a._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}a._autoResume();var v=a.ctx.createBufferSource();v.buffer=a._scratchBuffer,v.connect(a.ctx.destination),typeof v.start>"u"?v.noteOn(0):v.start(0),typeof a.ctx.resume=="function"&&a.ctx.resume(),v.onended=function(){v.disconnect(0),a._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var b=0;b<a._howls.length;b++)a._howls[b]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),a}},_obtainHtml5Audio:function(){var a=this||r;if(a._html5AudioPool.length)return a._html5AudioPool.pop();var d=new Audio().play();return d&&typeof Promise<"u"&&(d instanceof Promise||typeof d.then=="function")&&d.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(a){var d=this||r;return a._unlocked&&d._html5AudioPool.push(a),d},_autoSuspend:function(){var a=this;if(!(!a.autoSuspend||!a.ctx||typeof a.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<a._howls.length;d++)if(a._howls[d]._webAudio){for(var p=0;p<a._howls[d]._sounds.length;p++)if(!a._howls[d]._sounds[p]._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"||!r.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 d=0;d<a._howls.length;d++)a._howls[d]._emit("resume")}),a._suspendTimer&&(clearTimeout(a._suspendTimer),a._suspendTimer=null)):a.state==="suspending"&&(a._resumeAfterSuspend=!0),a}};var r=new n,e=function(a){var d=this;if(!a.src||a.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(a)};e.prototype={init:function(a){var d=this;return r.ctx||u(),d._autoplay=a.autoplay||!1,d._format=typeof a.format!="string"?a.format:[a.format],d._html5=a.html5||!1,d._muted=a.mute||!1,d._loop=a.loop||!1,d._pool=a.pool||5,d._preload=typeof a.preload=="boolean"||a.preload==="metadata"?a.preload:!0,d._rate=a.rate||1,d._sprite=a.sprite||{},d._src=typeof a.src!="string"?a.src:[a.src],d._volume=a.volume!==void 0?a.volume:1,d._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},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=a.onend?[{fn:a.onend}]:[],d._onfade=a.onfade?[{fn:a.onfade}]:[],d._onload=a.onload?[{fn:a.onload}]:[],d._onloaderror=a.onloaderror?[{fn:a.onloaderror}]:[],d._onplayerror=a.onplayerror?[{fn:a.onplayerror}]:[],d._onpause=a.onpause?[{fn:a.onpause}]:[],d._onplay=a.onplay?[{fn:a.onplay}]:[],d._onstop=a.onstop?[{fn:a.onstop}]:[],d._onmute=a.onmute?[{fn:a.onmute}]:[],d._onvolume=a.onvolume?[{fn:a.onvolume}]:[],d._onrate=a.onrate?[{fn:a.onrate}]:[],d._onseek=a.onseek?[{fn:a.onseek}]:[],d._onunlock=a.onunlock?[{fn:a.onunlock}]:[],d._onresume=[],d._webAudio=r.usingWebAudio&&!d._html5,typeof r.ctx<"u"&&r.ctx&&r.autoUnlock&&r._unlockAudio(),r._howls.push(d),d._autoplay&&d._queue.push({event:"play",action:function(){d.play()}}),d._preload&&d._preload!=="none"&&d.load(),d},load:function(){var a=this,d=null;if(r.noAudio){a._emit("loaderror",null,"No audio support.");return}typeof a._src=="string"&&(a._src=[a._src]);for(var p=0;p<a._src.length;p++){var f,m;if(a._format&&a._format[p])f=a._format[p];else{if(m=a._src[p],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&&r.codecs(f)){d=a._src[p];break}}if(!d){a._emit("loaderror",null,"No codec support for selected audio sources.");return}return a._src=d,a._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(a._html5=!0,a._webAudio=!1),new t(a),a._webAudio&&i(a),a},play:function(a,d){var p=this,f=null;if(typeof a=="number")f=a,a=null;else{if(typeof a=="string"&&p._state==="loaded"&&!p._sprite[a])return null;if(typeof a>"u"&&(a="__default",!p._playLock)){for(var m=0,h=0;h<p._sounds.length;h++)p._sounds[h]._paused&&!p._sounds[h]._ended&&(m++,f=p._sounds[h]._id);m===1?a=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!a&&(a=y._sprite||"__default"),p._state!=="loaded"){y._sprite=a,y._ended=!1;var g=y._id;return p._queue.push({event:"play",action:function(){p.play(g)}}),g}if(f&&!y._paused)return d||p._loadQueue("play"),y._id;p._webAudio&&r._autoResume();var v=Math.max(0,y._seek>0?y._seek:p._sprite[a][0]/1e3),b=Math.max(0,(p._sprite[a][0]+p._sprite[a][1])/1e3-v),w=b*1e3/Math.abs(y._rate),S=p._sprite[a][0]/1e3,T=(p._sprite[a][0]+p._sprite[a][1])/1e3;y._sprite=a,y._ended=!1;var _=function(){y._paused=!1,y._seek=v,y._start=S,y._stop=T,y._loop=!!(y._loop||p._sprite[a][2])};if(v>=T){p._ended(y);return}var x=y._node;if(p._webAudio){var N=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;x.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof x.bufferSource.start>"u"?y._loop?x.bufferSource.noteGrainOn(0,v,86400):x.bufferSource.noteGrainOn(0,v,b):y._loop?x.bufferSource.start(0,v,86400):x.bufferSource.start(0,v,b),w!==1/0&&(p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w)),d||setTimeout(function(){p._emit("play",y._id),p._loadQueue()},0)};r.state==="running"&&r.ctx.state!=="interrupted"?N():(p._playLock=!0,p.once("resume",N),p._clearTimer(y._id))}else{var P=function(){x.currentTime=v,x.muted=y._muted||p._muted||r._muted||x.muted,x.volume=y._volume*r.volume(),x.playbackRate=y._rate;try{var A=x.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,x._unlocked=!0,d?p._loadQueue():p._emit("play",y._id)}).catch(function(){p._playLock=!1,p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),y._ended=!0,y._paused=!0})):d||(p._playLock=!1,_(),p._emit("play",y._id)),x.playbackRate=y._rate,x.paused){p._emit("playerror",y._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}a!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),x.removeEventListener("ended",p._endTimers[y._id],!1)},x.addEventListener("ended",p._endTimers[y._id],!1))}catch(R){p._emit("playerror",y._id,R)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=p._src,x.load());var C=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||C)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),x.removeEventListener(r._canPlayEvent,O,!1)};x.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(a){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(a)}}),d;for(var p=d._getSoundIds(a),f=0;f<p.length;f++){d._clearTimer(p[f]);var m=d._soundById(p[f]);if(m&&!m._paused&&(m._seek=d.seek(p[f]),m._rateSeek=0,m._paused=!0,d._stopFade(p[f]),m._node))if(d._webAudio){if(!m._node.bufferSource)continue;typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),d._cleanBuffer(m._node)}else(!isNaN(m._node.duration)||m._node.duration===1/0)&&m._node.pause();arguments[1]||d._emit("pause",m?m._id:null)}return d},stop:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(a)}}),p;for(var f=p._getSoundIds(a),m=0;m<f.length;m++){p._clearTimer(f[m]);var h=p._soundById(f[m]);h&&(h._seek=h._start||0,h._rateSeek=0,h._paused=!0,h._ended=!0,p._stopFade(f[m]),h._node&&(p._webAudio?h._node.bufferSource&&(typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),p._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&&p._clearSound(h._node))),d||p._emit("stop",h._id))}return p},mute:function(a,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(a,d)}}),p;if(typeof d>"u")if(typeof a=="boolean")p._muted=a;else return p._muted;for(var f=p._getSoundIds(d),m=0;m<f.length;m++){var h=p._soundById(f[m]);h&&(h._muted=a,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(a?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:a),p._emit("mute",h._id))}return p},volume:function(){var a=this,d=arguments,p,f;if(d.length===0)return a._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length>=2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p<"u"&&p>=0&&p<=1){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"volume",action:function(){a.volume.apply(a,d)}}),a;typeof f>"u"&&(a._volume=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)y=a._soundById(f[g]),y&&(y._volume=p,d[2]||a._stopFade(f[g]),a._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),a._emit("volume",y._id))}else return y=f?a._soundById(f):a._sounds[0],y?y._volume:0;return a},fade:function(a,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(a,d,p,f)}}),m;a=Math.min(Math.max(0,parseFloat(a)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(a,f);for(var h=m._getSoundIds(f),y=0;y<h.length;y++){var g=m._soundById(h[y]);if(g){if(f||m._stopFade(h[y]),m._webAudio&&!g._muted){var v=r.ctx.currentTime,b=v+p/1e3;g._volume=a,g._node.gain.setValueAtTime(a,v),g._node.gain.linearRampToValueAtTime(d,b)}m._startFadeInterval(g,a,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(a,d,p,f,m,h){var y=this,g=d,v=p-d,b=Math.abs(v/.01),w=Math.max(4,b>0?f/b:f),S=Date.now();a._fadeTo=p,a._interval=setInterval(function(){var T=(Date.now()-S)/f;S=Date.now(),g+=v*T,g=Math.round(g*100)/100,v<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?a._volume=g:y.volume(g,a._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(a._interval),a._interval=null,a._fadeTo=null,y.volume(p,a._id),y._emit("fade",a._id))},w)},_stopFade:function(a){var d=this,p=d._soundById(a);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,a),p._fadeTo=null,d._emit("fade",a)),d},loop:function(){var a=this,d=arguments,p,f,m;if(d.length===0)return a._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],a._loop=p;else return m=a._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=a._getSoundIds(f),y=0;y<h.length;y++)m=a._soundById(h[y]),m&&(m._loop=p,a._webAudio&&m._node&&m._node.bufferSource&&(m._node.bufferSource.loop=p,p&&(m._node.bufferSource.loopStart=m._start||0,m._node.bufferSource.loopEnd=m._stop,a.playing(h[y])&&(a.pause(h[y],!0),a.play(h[y],!0)))));return a},rate:function(){var a=this,d=arguments,p,f;if(d.length===0)f=a._sounds[0]._id;else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):p=parseFloat(d[0])}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));var y;if(typeof p=="number"){if(a._state!=="loaded"||a._playLock)return a._queue.push({event:"rate",action:function(){a.rate.apply(a,d)}}),a;typeof f>"u"&&(a._rate=p),f=a._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=a._soundById(f[g]),y){a.playing(f[g])&&(y._rateSeek=a.seek(f[g]),y._playStart=a._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,a._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var v=a.seek(f[g]),b=(a._sprite[y._sprite][0]+a._sprite[y._sprite][1])/1e3-v,w=b*1e3/Math.abs(y._rate);(a._endTimers[f[g]]||!y._paused)&&(a._clearTimer(f[g]),a._endTimers[f[g]]=setTimeout(a._ended.bind(a,y),w)),a._emit("rate",y._id)}}else return y=a._soundById(f),y?y._rate:a._rate;return a},seek:function(){var a=this,d=arguments,p,f;if(d.length===0)a._sounds.length&&(f=a._sounds[0]._id);else if(d.length===1){var m=a._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):a._sounds.length&&(f=a._sounds[0]._id,p=parseFloat(d[0]))}else d.length===2&&(p=parseFloat(d[0]),f=parseInt(d[1],10));if(typeof f>"u")return 0;if(typeof p=="number"&&(a._state!=="loaded"||a._playLock))return a._queue.push({event:"seek",action:function(){a.seek.apply(a,d)}}),a;var y=a._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=a.playing(f);g&&a.pause(f,!0),y._seek=p,y._ended=!1,a._clearTimer(f),!a._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var v=function(){g&&a.play(f,!0),a._emit("seek",f)};if(g&&!a._webAudio){var b=function(){a._playLock?setTimeout(b,0):v()};setTimeout(b,0)}else v()}else if(a._webAudio){var w=a.playing(f)?r.ctx.currentTime-y._playStart:0,S=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(S+w*Math.abs(y._rate))}else return y._node.currentTime;return a},playing:function(a){var d=this;if(typeof a=="number"){var p=d._soundById(a);return p?!p._paused:!1}for(var f=0;f<d._sounds.length;f++)if(!d._sounds[f]._paused)return!0;return!1},duration:function(a){var d=this,p=d._duration,f=d._soundById(a);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var a=this,d=a._sounds,p=0;p<d.length;p++)d[p]._paused||a.stop(d[p]._id),a._webAudio||(a._clearSound(d[p]._node),d[p]._node.removeEventListener("error",d[p]._errorFn,!1),d[p]._node.removeEventListener(r._canPlayEvent,d[p]._loadFn,!1),d[p]._node.removeEventListener("ended",d[p]._endFn,!1),r._releaseHtml5Audio(d[p]._node)),delete d[p]._node,a._clearTimer(d[p]._id);var f=r._howls.indexOf(a);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===a._src||a._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[a._src],r.noAudio=!1,a._state="unloaded",a._sounds=[],a=null,null},on:function(a,d,p,f){var m=this,h=m["_on"+a];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(a,d,p){var f=this,m=f["_on"+a],h=0;if(typeof d=="number"&&(p=d,d=null),d||p)for(h=0;h<m.length;h++){var y=p===m[h].id;if(d===m[h].fn&&y||!d&&y){m.splice(h,1);break}}else if(a)f["_on"+a]=[];else{var g=Object.keys(f);for(h=0;h<g.length;h++)g[h].indexOf("_on")===0&&Array.isArray(f[g[h]])&&(f[g[h]]=[])}return f},once:function(a,d,p){var f=this;return f.on(a,d,p,1),f},_emit:function(a,d,p){for(var f=this,m=f["_on"+a],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||a==="load")&&(setTimeout(function(y){y.call(this,d,p)}.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 d=this;if(d._queue.length>0){var p=d._queue[0];p.event===a&&(d._queue.shift(),d._loadQueue()),a||p.action()}return d},_ended:function(a){var d=this,p=a._sprite;if(!d._webAudio&&a._node&&!a._node.paused&&!a._node.ended&&a._node.currentTime<a._stop)return setTimeout(d._ended.bind(d,a),100),d;var f=!!(a._loop||d._sprite[p][2]);if(d._emit("end",a._id),!d._webAudio&&f&&d.stop(a._id,!0).play(a._id),d._webAudio&&f){d._emit("play",a._id),a._seek=a._start||0,a._rateSeek=0,a._playStart=r.ctx.currentTime;var m=(a._stop-a._start)*1e3/Math.abs(a._rate);d._endTimers[a._id]=setTimeout(d._ended.bind(d,a),m)}return d._webAudio&&!f&&(a._paused=!0,a._ended=!0,a._seek=a._start||0,a._rateSeek=0,d._clearTimer(a._id),d._cleanBuffer(a._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(a._id,!0),d},_clearTimer:function(a){var d=this;if(d._endTimers[a]){if(typeof d._endTimers[a]!="function")clearTimeout(d._endTimers[a]);else{var p=d._soundById(a);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[a],!1)}delete d._endTimers[a]}return d},_soundById:function(a){for(var d=this,p=0;p<d._sounds.length;p++)if(a===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var a=this;a._drain();for(var d=0;d<a._sounds.length;d++)if(a._sounds[d]._ended)return a._sounds[d].reset();return new t(a)},_drain:function(){var a=this,d=a._pool,p=0,f=0;if(!(a._sounds.length<d)){for(f=0;f<a._sounds.length;f++)a._sounds[f]._ended&&p++;for(f=a._sounds.length-1;f>=0;f--){if(p<=d)return;a._sounds[f]._ended&&(a._webAudio&&a._sounds[f]._node&&a._sounds[f]._node.disconnect(0),a._sounds.splice(f,1),p--)}}},_getSoundIds:function(a){var d=this;if(typeof a>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[a]},_refreshBuffer:function(a){var d=this;return a._node.bufferSource=r.ctx.createBufferSource(),a._node.bufferSource.buffer=o[d._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,r.ctx.currentTime),d},_cleanBuffer:function(a){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&a.bufferSource&&(a.bufferSource.onended=null,a.bufferSource.disconnect(0),p))try{a.bufferSource.buffer=r._scratchBuffer}catch{}return a.bufferSource=null,d},_clearSound:function(a){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(a.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(a){this._parent=a,this.init()};t.prototype={init:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._counter,d._sounds.push(a),a.create(),a},create:function(){var a=this,d=a._parent,p=r._muted||a._muted||a._parent._muted?0:a._volume;return d._webAudio?(a._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),a._node.gain.setValueAtTime(p,r.ctx.currentTime),a._node.paused=!0,a._node.connect(r.masterGain)):r.noAudio||(a._node=r._obtainHtml5Audio(),a._errorFn=a._errorListener.bind(a),a._node.addEventListener("error",a._errorFn,!1),a._loadFn=a._loadListener.bind(a),a._node.addEventListener(r._canPlayEvent,a._loadFn,!1),a._endFn=a._endListener.bind(a),a._node.addEventListener("ended",a._endFn,!1),a._node.src=d._src,a._node.preload=d._preload===!0?"auto":d._preload,a._node.volume=p*r.volume(),a._node.load()),a},reset:function(){var a=this,d=a._parent;return a._muted=d._muted,a._loop=d._loop,a._volume=d._volume,a._rate=d._rate,a._seek=0,a._rateSeek=0,a._paused=!0,a._ended=!0,a._sprite="__default",a._id=++r._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,d=a._parent;d._duration=Math.ceil(a._node.duration*10)/10,Object.keys(d._sprite).length===0&&(d._sprite={__default:[0,d._duration*1e3]}),d._state!=="loaded"&&(d._state="loaded",d._emit("load"),d._loadQueue()),a._node.removeEventListener(r._canPlayEvent,a._loadFn,!1)},_endListener:function(){var a=this,d=a._parent;d._duration===1/0&&(d._duration=Math.ceil(a._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(a)),a._node.removeEventListener("ended",a._endFn,!1)}};var o={},i=function(a){var d=a._src;if(o[d]){a._duration=o[d].duration,c(a);return}if(/^data:[^;]+;base64,/.test(d)){for(var p=atob(d.split(",")[1]),f=new Uint8Array(p.length),m=0;m<p.length;++m)f[m]=p.charCodeAt(m);l(f.buffer,a)}else{var h=new XMLHttpRequest;h.open(a._xhr.method,d,!0),h.withCredentials=a._xhr.withCredentials,h.responseType="arraybuffer",a._xhr.headers&&Object.keys(a._xhr.headers).forEach(function(y){h.setRequestHeader(y,a._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){a._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}l(h.response,a)},h.onerror=function(){a._webAudio&&(a._html5=!0,a._webAudio=!1,a._sounds=[],delete o[d],a.load())},s(h)}},s=function(a){try{a.send()}catch{a.onerror()}},l=function(a,d){var p=function(){d._emit("loaderror",null,"Decoding audio data failed.")},f=function(m){m&&d._sounds.length>0?(o[d._src]=m,c(d,m)):p()};typeof Promise<"u"&&r.ctx.decodeAudioData.length===1?r.ctx.decodeAudioData(a).then(f).catch(p):r.ctx.decodeAudioData(a,f,p)},c=function(a,d){d&&!a._duration&&(a._duration=d.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(!!r.usingWebAudio){try{typeof AudioContext<"u"?r.ctx=new AudioContext:typeof webkitAudioContext<"u"?r.ctx=new webkitAudioContext:r.usingWebAudio=!1}catch{r.usingWebAudio=!1}r.ctx||(r.usingWebAudio=!1);var a=/iP(hone|od|ad)/.test(r._navigator&&r._navigator.platform),d=r._navigator&&r._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=d?parseInt(d[1],10):null;if(a&&p&&p<9){var f=/safari/.test(r._navigator&&r._navigator.userAgent.toLowerCase());r._navigator&&!f&&(r.usingWebAudio=!1)}r.usingWebAudio&&(r.masterGain=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),r.masterGain.gain.setValueAtTime(r._muted?0:r._volume,r.ctx.currentTime),r.masterGain.connect(r.ctx.destination)),r._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:r,Howl:e}}),typeof Nl<"u"&&(Nl.Howler=r,Nl.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=r,global.Howl=e,global.Sound=t):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=r,window.Howl=e,window.Sound=t)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(r){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var t=e._howls.length-1;t>=0;t--)e._howls[t].stereo(r);return e},HowlerGlobal.prototype.pos=function(r,e,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,t=typeof t!="number"?o._pos[2]:t,typeof r=="number")o._pos=[r,e,t],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(r,e,t,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,t=typeof t!="number"?c[2]:t,o=typeof o!="number"?c[3]:o,i=typeof i!="number"?c[4]:i,s=typeof s!="number"?c[5]:s,typeof r=="number")l._orientation=[r,e,t,o,i,s],typeof l.ctx.listener.forwardX<"u"?(l.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),l.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),l.ctx.listener.forwardZ.setTargetAtTime(t,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(r,e,t,o,i,s);else return c;return l},Howl.prototype.init=function(r){return function(e){var t=this;return t._orientation=e.orientation||[1,0,0],t._stereo=e.stereo||null,t._pos=e.pos||null,t._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},t._onstereo=e.onstereo?[{fn:e.onstereo}]:[],t._onpos=e.onpos?[{fn:e.onpos}]:[],t._onorientation=e.onorientation?[{fn:e.onorientation}]:[],r.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(r,e){var t=this;if(!t._webAudio)return t;if(t._state!=="loaded")return t._queue.push({event:"stereo",action:function(){t.stereo(r,e)}}),t;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof r=="number")t._stereo=r,t._pos=[r,0,0];else return t._stereo;for(var i=t._getSoundIds(e),s=0;s<i.length;s++){var l=t._soundById(i[s]);if(l)if(typeof r=="number")l._stereo=r,l._pos=[r,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(r,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):l._panner.setPosition(r,0,0):l._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",l._id);else return l._stereo}return t},Howl.prototype.pos=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(r,e,t,o)}}),i;if(e=typeof e!="number"?0:e,t=typeof t!="number"?-.5:t,typeof o>"u")if(typeof r=="number")i._pos=[r,e,t];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 r=="number")c._pos=[r,e,t],c._node&&((!c._panner||c._panner.pan)&&n(c,"spatial"),typeof c._panner.positionX<"u"?(c._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),c._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.positionZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setPosition(r,e,t)),i._emit("pos",c._id);else return c._pos}return i},Howl.prototype.orientation=function(r,e,t,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(r,e,t,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,t=typeof t!="number"?i._orientation[2]:t,typeof o>"u")if(typeof r=="number")i._orientation=[r,e,t];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 r=="number")c._orientation=[r,e,t],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(r,Howler.ctx.currentTime),c._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),c._panner.orientationZ.setValueAtTime(t,Howler.ctx.currentTime)):c._panner.setOrientation(r,e,t)),i._emit("orientation",c._id);else return c._orientation}return i},Howl.prototype.pannerAttr=function(){var r=this,e=arguments,t,o,i;if(!r._webAudio)return r;if(e.length===0)return r._pannerAttr;if(e.length===1)if(typeof e[0]=="object")t=e[0],typeof o>"u"&&(t.pannerAttr||(t.pannerAttr={coneInnerAngle:t.coneInnerAngle,coneOuterAngle:t.coneOuterAngle,coneOuterGain:t.coneOuterGain,distanceModel:t.distanceModel,maxDistance:t.maxDistance,refDistance:t.refDistance,rolloffFactor:t.rolloffFactor,panningModel:t.panningModel}),r._pannerAttr={coneInnerAngle:typeof t.pannerAttr.coneInnerAngle<"u"?t.pannerAttr.coneInnerAngle:r._coneInnerAngle,coneOuterAngle:typeof t.pannerAttr.coneOuterAngle<"u"?t.pannerAttr.coneOuterAngle:r._coneOuterAngle,coneOuterGain:typeof t.pannerAttr.coneOuterGain<"u"?t.pannerAttr.coneOuterGain:r._coneOuterGain,distanceModel:typeof t.pannerAttr.distanceModel<"u"?t.pannerAttr.distanceModel:r._distanceModel,maxDistance:typeof t.pannerAttr.maxDistance<"u"?t.pannerAttr.maxDistance:r._maxDistance,refDistance:typeof t.pannerAttr.refDistance<"u"?t.pannerAttr.refDistance:r._refDistance,rolloffFactor:typeof t.pannerAttr.rolloffFactor<"u"?t.pannerAttr.rolloffFactor:r._rolloffFactor,panningModel:typeof t.pannerAttr.panningModel<"u"?t.pannerAttr.panningModel:r._panningModel});else return i=r._soundById(parseInt(e[0],10)),i?i._pannerAttr:r._pannerAttr;else e.length===2&&(t=e[0],o=parseInt(e[1],10));for(var s=r._getSoundIds(o),l=0;l<s.length;l++)if(i=r._soundById(s[l]),i){var c=i._pannerAttr;c={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:c.coneInnerAngle,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:c.coneOuterAngle,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:c.coneOuterGain,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:c.distanceModel,maxDistance:typeof t.maxDistance<"u"?t.maxDistance:c.maxDistance,refDistance:typeof t.refDistance<"u"?t.refDistance:c.refDistance,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:c.rolloffFactor,panningModel:typeof t.panningModel<"u"?t.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=r._pos||[0,0,-.5]),n(i,"spatial"))}return r},Sound.prototype.init=function(r){return function(){var e=this,t=e._parent;e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,r.call(this),e._stereo?t.stereo(e._stereo):e._pos&&t.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(r){return function(){var e=this,t=e._parent;return e._orientation=t._orientation,e._stereo=t._stereo,e._pos=t._pos,e._pannerAttr=t._pannerAttr,e._stereo?t.stereo(e._stereo):e._pos?t.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,t._refreshBuffer(e)),r.call(this)}}(Sound.prototype.reset);var n=function(r,e){e=e||"spatial",e==="spatial"?(r._panner=Howler.ctx.createPanner(),r._panner.coneInnerAngle=r._pannerAttr.coneInnerAngle,r._panner.coneOuterAngle=r._pannerAttr.coneOuterAngle,r._panner.coneOuterGain=r._pannerAttr.coneOuterGain,r._panner.distanceModel=r._pannerAttr.distanceModel,r._panner.maxDistance=r._pannerAttr.maxDistance,r._panner.refDistance=r._pannerAttr.refDistance,r._panner.rolloffFactor=r._pannerAttr.rolloffFactor,r._panner.panningModel=r._pannerAttr.panningModel,typeof r._panner.positionX<"u"?(r._panner.positionX.setValueAtTime(r._pos[0],Howler.ctx.currentTime),r._panner.positionY.setValueAtTime(r._pos[1],Howler.ctx.currentTime),r._panner.positionZ.setValueAtTime(r._pos[2],Howler.ctx.currentTime)):r._panner.setPosition(r._pos[0],r._pos[1],r._pos[2]),typeof r._panner.orientationX<"u"?(r._panner.orientationX.setValueAtTime(r._orientation[0],Howler.ctx.currentTime),r._panner.orientationY.setValueAtTime(r._orientation[1],Howler.ctx.currentTime),r._panner.orientationZ.setValueAtTime(r._orientation[2],Howler.ctx.currentTime)):r._panner.setOrientation(r._orientation[0],r._orientation[1],r._orientation[2])):(r._panner=Howler.ctx.createStereoPanner(),r._panner.pan.setValueAtTime(r._stereo,Howler.ctx.currentTime)),r._panner.connect(r._node),r._paused||r._parent.pause(r._id,!0).play(r._id,!0)}})()});var Ug=Hs((tK,kg)=>{kg.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var s=Number(t[i]),l=Number(o[i]);if(s>l)return 1;if(l>s)return-1;if(!isNaN(s)&&isNaN(l))return 1;if(isNaN(s)&&!isNaN(l))return-1}return 0}});import{FileLoader as jA,Loader as kA}from"three";function gu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Gr(n,r){return Object.setPrototypeOf(n,r),n}function qs(n){return Array.isArray(n)?n:[n]}function xu(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var s0=typeof global=="object"&&global&&global.Object===Object&&global,$s=s0;var a0=typeof self=="object"&&self&&self.Object===Object&&self,l0=$s||a0||Function("return this")(),He=l0;var c0=He.Symbol,Ke=c0;var vu=Object.prototype,d0=vu.hasOwnProperty,u0=vu.toString,Ri=Ke?Ke.toStringTag:void 0;function p0(n){var r=d0.call(n,Ri),e=n[Ri];try{n[Ri]=void 0;var t=!0}catch{}var o=u0.call(n);return t&&(r?n[Ri]=e:delete n[Ri]),o}var bu=p0;var f0=Object.prototype,m0=f0.toString;function h0(n){return m0.call(n)}var Su=h0;var y0="[object Null]",g0="[object Undefined]",wu=Ke?Ke.toStringTag:void 0;function x0(n){return n==null?n===void 0?g0:y0:wu&&wu in Object(n)?bu(n):Su(n)}var Mt=x0;function v0(n){return n!=null&&typeof n=="object"}var it=v0;var b0="[object Symbol]";function S0(n){return typeof n=="symbol"||it(n)&&Mt(n)==b0}var Xo=S0;function w0(n,r){for(var e=-1,t=n==null?0:n.length,o=Array(t);++e<t;)o[e]=r(n[e],e,n);return o}var Xs=w0;var _0=Array.isArray,Re=_0;var T0=1/0,_u=Ke?Ke.prototype:void 0,Tu=_u?_u.toString:void 0;function Pu(n){if(typeof n=="string")return n;if(Re(n))return Xs(n,Pu)+"";if(Xo(n))return Tu?Tu.call(n):"";var r=n+"";return r=="0"&&1/n==-T0?"-0":r}var Ou=Pu;function P0(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Et=P0;function O0(n){return n}var Au=O0;var A0="[object AsyncFunction]",C0="[object Function]",N0="[object GeneratorFunction]",I0="[object Proxy]";function M0(n){if(!Et(n))return!1;var r=Mt(n);return r==C0||r==N0||r==A0||r==I0}var Ys=M0;var E0=He["__core-js_shared__"],Ks=E0;var Cu=function(){var n=/[^.]+$/.exec(Ks&&Ks.keys&&Ks.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function L0(n){return!!Cu&&Cu in n}var Nu=L0;var B0=Function.prototype,D0=B0.toString;function G0(n){if(n!=null){try{return D0.call(n)}catch{}try{return n+""}catch{}}return""}var Rr=G0;var R0=/[\\^$.*+?()[\]{}|]/g,V0=/^\[object .+?Constructor\]$/,z0=Function.prototype,F0=Object.prototype,j0=z0.toString,k0=F0.hasOwnProperty,U0=RegExp("^"+j0.call(k0).replace(R0,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function H0(n){if(!Et(n)||Nu(n))return!1;var r=Ys(n)?U0:V0;return r.test(Rr(n))}var Iu=H0;function W0(n,r){return n?.[r]}var Mu=W0;function q0(n,r){var e=Mu(n,r);return Iu(e)?e:void 0}var St=q0;var $0=St(He,"WeakMap"),Zs=$0;var Eu=Object.create,X0=function(){function n(){}return function(r){if(!Et(r))return{};if(Eu)return Eu(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Lu=X0;function Y0(n,r,e){switch(e.length){case 0:return n.call(r);case 1:return n.call(r,e[0]);case 2:return n.call(r,e[0],e[1]);case 3:return n.call(r,e[0],e[1],e[2])}return n.apply(r,e)}var Bu=Y0;function K0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Du=K0;var Z0=800,Q0=16,J0=Date.now;function ex(n){var r=0,e=0;return function(){var t=J0(),o=Q0-(t-e);if(e=t,o>0){if(++r>=Z0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Gu=ex;function tx(n){return function(){return n}}var Ru=tx;var rx=function(){try{var n=St(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Yo=rx;var ox=Yo?function(n,r){return Yo(n,"toString",{configurable:!0,enumerable:!1,value:Ru(r),writable:!0})}:Au,Vu=ox;var nx=Gu(Vu),zu=nx;function ix(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Fu=ix;var sx=9007199254740991,ax=/^(?:0|[1-9]\d*)$/;function lx(n,r){var e=typeof n;return r=r??sx,!!r&&(e=="number"||e!="symbol"&&ax.test(n))&&n>-1&&n%1==0&&n<r}var Ko=lx;function cx(n,r,e){r=="__proto__"&&Yo?Yo(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Qs=cx;function dx(n,r){return n===r||n!==n&&r!==r}var Zo=dx;var ux=Object.prototype,px=ux.hasOwnProperty;function fx(n,r,e){var t=n[r];(!(px.call(n,r)&&Zo(t,e))||e===void 0&&!(r in n))&&Qs(n,r,e)}var Qo=fx;function mx(n,r,e,t){var o=!e;e||(e={});for(var i=-1,s=r.length;++i<s;){var l=r[i],c=t?t(e[l],n[l],l,e,n):void 0;c===void 0&&(c=n[l]),o?Qs(e,l,c):Qo(e,l,c)}return e}var mr=mx;var ju=Math.max;function hx(n,r,e){return r=ju(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=ju(t.length-r,0),s=Array(i);++o<i;)s[o]=t[r+o];o=-1;for(var l=Array(r+1);++o<r;)l[o]=t[o];return l[r]=e(s),Bu(n,this,l)}}var ku=hx;var yx=9007199254740991;function gx(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=yx}var Jo=gx;function xx(n){return n!=null&&Jo(n.length)&&!Ys(n)}var Js=xx;var vx=Object.prototype;function bx(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||vx;return n===e}var en=bx;function Sx(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Uu=Sx;var wx="[object Arguments]";function _x(n){return it(n)&&Mt(n)==wx}var Kl=_x;var Hu=Object.prototype,Tx=Hu.hasOwnProperty,Px=Hu.propertyIsEnumerable,Ox=Kl(function(){return arguments}())?Kl:function(n){return it(n)&&Tx.call(n,"callee")&&!Px.call(n,"callee")},tn=Ox;function Ax(){return!1}var Wu=Ax;var Xu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,qu=Xu&&typeof module=="object"&&module&&!module.nodeType&&module,Cx=qu&&qu.exports===Xu,$u=Cx?He.Buffer:void 0,Nx=$u?$u.isBuffer:void 0,Ix=Nx||Wu,So=Ix;var Mx="[object Arguments]",Ex="[object Array]",Lx="[object Boolean]",Bx="[object Date]",Dx="[object Error]",Gx="[object Function]",Rx="[object Map]",Vx="[object Number]",zx="[object Object]",Fx="[object RegExp]",jx="[object Set]",kx="[object String]",Ux="[object WeakMap]",Hx="[object ArrayBuffer]",Wx="[object DataView]",qx="[object Float32Array]",$x="[object Float64Array]",Xx="[object Int8Array]",Yx="[object Int16Array]",Kx="[object Int32Array]",Zx="[object Uint8Array]",Qx="[object Uint8ClampedArray]",Jx="[object Uint16Array]",ev="[object Uint32Array]",Ee={};Ee[qx]=Ee[$x]=Ee[Xx]=Ee[Yx]=Ee[Kx]=Ee[Zx]=Ee[Qx]=Ee[Jx]=Ee[ev]=!0;Ee[Mx]=Ee[Ex]=Ee[Hx]=Ee[Lx]=Ee[Wx]=Ee[Bx]=Ee[Dx]=Ee[Gx]=Ee[Rx]=Ee[Vx]=Ee[zx]=Ee[Fx]=Ee[jx]=Ee[kx]=Ee[Ux]=!1;function tv(n){return it(n)&&Jo(n.length)&&!!Ee[Mt(n)]}var Yu=tv;function rv(n){return function(r){return n(r)}}var rn=rv;var Ku=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vi=Ku&&typeof module=="object"&&module&&!module.nodeType&&module,ov=Vi&&Vi.exports===Ku,Zl=ov&&$s.process,nv=function(){try{var n=Vi&&Vi.require&&Vi.require("util").types;return n||Zl&&Zl.binding&&Zl.binding("util")}catch{}}(),Vr=nv;var Zu=Vr&&Vr.isTypedArray,iv=Zu?rn(Zu):Yu,ea=iv;var sv=Object.prototype,av=sv.hasOwnProperty;function lv(n,r){var e=Re(n),t=!e&&tn(n),o=!e&&!t&&So(n),i=!e&&!t&&!o&&ea(n),s=e||t||o||i,l=s?Uu(n.length,String):[],c=l.length;for(var u in n)(r||av.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Ko(u,c)))&&l.push(u);return l}var ta=lv;function cv(n,r){return function(e){return n(r(e))}}var ra=cv;var dv=ra(Object.keys,Object),Qu=dv;var uv=Object.prototype,pv=uv.hasOwnProperty;function fv(n){if(!en(n))return Qu(n);var r=[];for(var e in Object(n))pv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Ju=fv;function mv(n){return Js(n)?ta(n):Ju(n)}var on=mv;function hv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var ep=hv;var yv=Object.prototype,gv=yv.hasOwnProperty;function xv(n){if(!Et(n))return ep(n);var r=en(n),e=[];for(var t in n)t=="constructor"&&(r||!gv.call(n,t))||e.push(t);return e}var tp=xv;function vv(n){return Js(n)?ta(n,!0):tp(n)}var nn=vv;var bv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Sv=/^\w*$/;function wv(n,r){if(Re(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Xo(n)?!0:Sv.test(n)||!bv.test(n)||r!=null&&n in Object(r)}var rp=wv;var _v=St(Object,"create"),zr=_v;function Tv(){this.__data__=zr?zr(null):{},this.size=0}var op=Tv;function Pv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var np=Pv;var Ov="__lodash_hash_undefined__",Av=Object.prototype,Cv=Av.hasOwnProperty;function Nv(n){var r=this.__data__;if(zr){var e=r[n];return e===Ov?void 0:e}return Cv.call(r,n)?r[n]:void 0}var ip=Nv;var Iv=Object.prototype,Mv=Iv.hasOwnProperty;function Ev(n){var r=this.__data__;return zr?r[n]!==void 0:Mv.call(r,n)}var sp=Ev;var Lv="__lodash_hash_undefined__";function Bv(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=zr&&r===void 0?Lv:r,this}var ap=Bv;function sn(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}sn.prototype.clear=op;sn.prototype.delete=np;sn.prototype.get=ip;sn.prototype.has=sp;sn.prototype.set=ap;var Ql=sn;function Dv(){this.__data__=[],this.size=0}var lp=Dv;function Gv(n,r){for(var e=n.length;e--;)if(Zo(n[e][0],r))return e;return-1}var Qr=Gv;var Rv=Array.prototype,Vv=Rv.splice;function zv(n){var r=this.__data__,e=Qr(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Vv.call(r,e,1),--this.size,!0}var cp=zv;function Fv(n){var r=this.__data__,e=Qr(r,n);return e<0?void 0:r[e][1]}var dp=Fv;function jv(n){return Qr(this.__data__,n)>-1}var up=jv;function kv(n,r){var e=this.__data__,t=Qr(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var pp=kv;function an(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}an.prototype.clear=lp;an.prototype.delete=cp;an.prototype.get=dp;an.prototype.has=up;an.prototype.set=pp;var Jr=an;var Uv=St(He,"Map"),eo=Uv;function Hv(){this.size=0,this.__data__={hash:new Ql,map:new(eo||Jr),string:new Ql}}var fp=Hv;function Wv(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var mp=Wv;function qv(n,r){var e=n.__data__;return mp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var to=qv;function $v(n){var r=to(this,n).delete(n);return this.size-=r?1:0,r}var hp=$v;function Xv(n){return to(this,n).get(n)}var yp=Xv;function Yv(n){return to(this,n).has(n)}var gp=Yv;function Kv(n,r){var e=to(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var xp=Kv;function ln(n){var r=-1,e=n==null?0:n.length;for(this.clear();++r<e;){var t=n[r];this.set(t[0],t[1])}}ln.prototype.clear=fp;ln.prototype.delete=hp;ln.prototype.get=yp;ln.prototype.has=gp;ln.prototype.set=xp;var wo=ln;var Zv="Expected a function";function Jl(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Zv);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,t);return e.cache=i.set(o,s)||i,s};return e.cache=new(Jl.Cache||wo),e}Jl.Cache=wo;var vp=Jl;var Qv=500;function Jv(n){var r=vp(n,function(t){return e.size===Qv&&e.clear(),t}),e=r.cache;return r}var bp=Jv;var eb=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,tb=/\\(\\)?/g,rb=bp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(eb,function(e,t,o,i){r.push(o?i.replace(tb,"$1"):t||e)}),r}),Sp=rb;function ob(n){return n==null?"":Ou(n)}var wp=ob;function nb(n,r){return Re(n)?n:rp(n,r)?[n]:Sp(wp(n))}var Ft=nb;var ib=1/0;function sb(n){if(typeof n=="string"||Xo(n))return n;var r=n+"";return r=="0"&&1/n==-ib?"-0":r}var ro=sb;function ab(n,r){r=Ft(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[ro(r[e++])];return e&&e==t?n:void 0}var oa=ab;function lb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var cn=lb;var _p=Ke?Ke.isConcatSpreadable:void 0;function cb(n){return Re(n)||tn(n)||!!(_p&&n&&n[_p])}var Tp=cb;function Pp(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=Tp),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?Pp(l,r-1,e,t,o):cn(o,l):t||(o[o.length]=l)}return o}var Op=Pp;function db(n){var r=n==null?0:n.length;return r?Op(n,1):[]}var Ap=db;function ub(n){return zu(ku(n,void 0,Ap),n+"")}var na=ub;var pb=ra(Object.getPrototypeOf,Object),dn=pb;var fb="[object Object]",mb=Function.prototype,hb=Object.prototype,Cp=mb.toString,yb=hb.hasOwnProperty,gb=Cp.call(Object);function xb(n){if(!it(n)||Mt(n)!=fb)return!1;var r=dn(n);if(r===null)return!0;var e=yb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Cp.call(e)==gb}var Np=xb;function vb(n,r,e){var t=-1,o=n.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var i=Array(o);++t<o;)i[t]=n[t+r];return i}var Ip=vb;function bb(){this.__data__=new Jr,this.size=0}var Mp=bb;function Sb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Ep=Sb;function wb(n){return this.__data__.get(n)}var Lp=wb;function _b(n){return this.__data__.has(n)}var Bp=_b;var Tb=200;function Pb(n,r){var e=this.__data__;if(e instanceof Jr){var t=e.__data__;if(!eo||t.length<Tb-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new wo(t)}return e.set(n,r),this.size=e.size,this}var Dp=Pb;function un(n){var r=this.__data__=new Jr(n);this.size=r.size}un.prototype.clear=Mp;un.prototype.delete=Ep;un.prototype.get=Lp;un.prototype.has=Bp;un.prototype.set=Dp;var pn=un;function Ob(n,r){return n&&mr(r,on(r),n)}var Gp=Ob;function Ab(n,r){return n&&mr(r,nn(r),n)}var Rp=Ab;var jp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vp=jp&&typeof module=="object"&&module&&!module.nodeType&&module,Cb=Vp&&Vp.exports===jp,zp=Cb?He.Buffer:void 0,Fp=zp?zp.allocUnsafe:void 0;function Nb(n,r){if(r)return n.slice();var e=n.length,t=Fp?Fp(e):new n.constructor(e);return n.copy(t),t}var kp=Nb;function Ib(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var s=n[e];r(s,e,n)&&(i[o++]=s)}return i}var Up=Ib;function Mb(){return[]}var ia=Mb;var Eb=Object.prototype,Lb=Eb.propertyIsEnumerable,Hp=Object.getOwnPropertySymbols,Bb=Hp?function(n){return n==null?[]:(n=Object(n),Up(Hp(n),function(r){return Lb.call(n,r)}))}:ia,fn=Bb;function Db(n,r){return mr(n,fn(n),r)}var Wp=Db;var Gb=Object.getOwnPropertySymbols,Rb=Gb?function(n){for(var r=[];n;)cn(r,fn(n)),n=dn(n);return r}:ia,sa=Rb;function Vb(n,r){return mr(n,sa(n),r)}var qp=Vb;function zb(n,r,e){var t=r(n);return Re(n)?t:cn(t,e(n))}var aa=zb;function Fb(n){return aa(n,on,fn)}var zi=Fb;function jb(n){return aa(n,nn,sa)}var la=jb;var kb=St(He,"DataView"),ca=kb;var Ub=St(He,"Promise"),da=Ub;var Hb=St(He,"Set"),ua=Hb;var $p="[object Map]",Wb="[object Object]",Xp="[object Promise]",Yp="[object Set]",Kp="[object WeakMap]",Zp="[object DataView]",qb=Rr(ca),$b=Rr(eo),Xb=Rr(da),Yb=Rr(ua),Kb=Rr(Zs),_o=Mt;(ca&&_o(new ca(new ArrayBuffer(1)))!=Zp||eo&&_o(new eo)!=$p||da&&_o(da.resolve())!=Xp||ua&&_o(new ua)!=Yp||Zs&&_o(new Zs)!=Kp)&&(_o=function(n){var r=Mt(n),e=r==Wb?n.constructor:void 0,t=e?Rr(e):"";if(t)switch(t){case qb:return Zp;case $b:return $p;case Xb:return Xp;case Yb:return Yp;case Kb:return Kp}return r});var Fr=_o;var Zb=Object.prototype,Qb=Zb.hasOwnProperty;function Jb(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&Qb.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Qp=Jb;var eS=He.Uint8Array,mn=eS;function tS(n){var r=new n.constructor(n.byteLength);return new mn(r).set(new mn(n)),r}var hn=tS;function rS(n,r){var e=r?hn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Jp=rS;var oS=/\w*$/;function nS(n){var r=new n.constructor(n.source,oS.exec(n));return r.lastIndex=n.lastIndex,r}var ef=nS;var tf=Ke?Ke.prototype:void 0,rf=tf?tf.valueOf:void 0;function iS(n){return rf?Object(rf.call(n)):{}}var of=iS;function sS(n,r){var e=r?hn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var nf=sS;var aS="[object Boolean]",lS="[object Date]",cS="[object Map]",dS="[object Number]",uS="[object RegExp]",pS="[object Set]",fS="[object String]",mS="[object Symbol]",hS="[object ArrayBuffer]",yS="[object DataView]",gS="[object Float32Array]",xS="[object Float64Array]",vS="[object Int8Array]",bS="[object Int16Array]",SS="[object Int32Array]",wS="[object Uint8Array]",_S="[object Uint8ClampedArray]",TS="[object Uint16Array]",PS="[object Uint32Array]";function OS(n,r,e){var t=n.constructor;switch(r){case hS:return hn(n);case aS:case lS:return new t(+n);case yS:return Jp(n,e);case gS:case xS:case vS:case bS:case SS:case wS:case _S:case TS:case PS:return nf(n,e);case cS:return new t;case dS:case fS:return new t(n);case uS:return ef(n);case pS:return new t;case mS:return of(n)}}var sf=OS;function AS(n){return typeof n.constructor=="function"&&!en(n)?Lu(dn(n)):{}}var af=AS;var CS="[object Map]";function NS(n){return it(n)&&Fr(n)==CS}var lf=NS;var cf=Vr&&Vr.isMap,IS=cf?rn(cf):lf,df=IS;var MS="[object Set]";function ES(n){return it(n)&&Fr(n)==MS}var uf=ES;var pf=Vr&&Vr.isSet,LS=pf?rn(pf):uf,ff=LS;var BS=1,DS=2,GS=4,mf="[object Arguments]",RS="[object Array]",VS="[object Boolean]",zS="[object Date]",FS="[object Error]",hf="[object Function]",jS="[object GeneratorFunction]",kS="[object Map]",US="[object Number]",yf="[object Object]",HS="[object RegExp]",WS="[object Set]",qS="[object String]",$S="[object Symbol]",XS="[object WeakMap]",YS="[object ArrayBuffer]",KS="[object DataView]",ZS="[object Float32Array]",QS="[object Float64Array]",JS="[object Int8Array]",e1="[object Int16Array]",t1="[object Int32Array]",r1="[object Uint8Array]",o1="[object Uint8ClampedArray]",n1="[object Uint16Array]",i1="[object Uint32Array]",Me={};Me[mf]=Me[RS]=Me[YS]=Me[KS]=Me[VS]=Me[zS]=Me[ZS]=Me[QS]=Me[JS]=Me[e1]=Me[t1]=Me[kS]=Me[US]=Me[yf]=Me[HS]=Me[WS]=Me[qS]=Me[$S]=Me[r1]=Me[o1]=Me[n1]=Me[i1]=!0;Me[FS]=Me[hf]=Me[XS]=!1;function pa(n,r,e,t,o,i){var s,l=r&BS,c=r&DS,u=r&GS;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Et(n))return n;var a=Re(n);if(a){if(s=Qp(n),!l)return Du(n,s)}else{var d=Fr(n),p=d==hf||d==jS;if(So(n))return kp(n,l);if(d==yf||d==mf||p&&!o){if(s=c||p?{}:af(n),!l)return c?qp(n,Rp(s,n)):Wp(n,Gp(s,n))}else{if(!Me[d])return o?n:{};s=sf(n,d,l)}}i||(i=new pn);var f=i.get(n);if(f)return f;i.set(n,s),ff(n)?n.forEach(function(y){s.add(pa(y,r,e,y,n,i))}):df(n)&&n.forEach(function(y,g){s.set(g,pa(y,r,e,g,n,i))});var m=u?c?la:zi:c?nn:on,h=a?void 0:m(n);return Fu(h||n,function(y,g){h&&(g=y,y=n[g]),Qo(s,g,pa(y,r,e,g,n,i))}),s}var fa=pa;var s1=1,a1=4;function l1(n){return fa(n,s1|a1)}var jr=l1;var c1="__lodash_hash_undefined__";function d1(n){return this.__data__.set(n,c1),this}var gf=d1;function u1(n){return this.__data__.has(n)}var xf=u1;function ma(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new wo;++r<e;)this.add(n[r])}ma.prototype.add=ma.prototype.push=gf;ma.prototype.has=xf;var vf=ma;function p1(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}var bf=p1;function f1(n,r){return n.has(r)}var Sf=f1;var m1=1,h1=2;function y1(n,r,e,t,o,i){var s=e&m1,l=n.length,c=r.length;if(l!=c&&!(s&&c>l))return!1;var u=i.get(n),a=i.get(r);if(u&&a)return u==r&&a==n;var d=-1,p=!0,f=e&h1?new vf:void 0;for(i.set(n,r),i.set(r,n);++d<l;){var m=n[d],h=r[d];if(t)var y=s?t(h,m,d,r,n,i):t(m,h,d,n,r,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!bf(r,function(g,v){if(!Sf(f,v)&&(m===g||o(m,g,e,t,i)))return f.push(v)})){p=!1;break}}else if(!(m===h||o(m,h,e,t,i))){p=!1;break}}return i.delete(n),i.delete(r),p}var ha=y1;function g1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var wf=g1;function x1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var _f=x1;var v1=1,b1=2,S1="[object Boolean]",w1="[object Date]",_1="[object Error]",T1="[object Map]",P1="[object Number]",O1="[object RegExp]",A1="[object Set]",C1="[object String]",N1="[object Symbol]",I1="[object ArrayBuffer]",M1="[object DataView]",Tf=Ke?Ke.prototype:void 0,ec=Tf?Tf.valueOf:void 0;function E1(n,r,e,t,o,i,s){switch(e){case M1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case I1:return!(n.byteLength!=r.byteLength||!i(new mn(n),new mn(r)));case S1:case w1:case P1:return Zo(+n,+r);case _1:return n.name==r.name&&n.message==r.message;case O1:case C1:return n==r+"";case T1:var l=wf;case A1:var c=t&v1;if(l||(l=_f),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=b1,s.set(n,r);var a=ha(l(n),l(r),t,o,i,s);return s.delete(n),a;case N1:if(ec)return ec.call(n)==ec.call(r)}return!1}var Pf=E1;var L1=1,B1=Object.prototype,D1=B1.hasOwnProperty;function G1(n,r,e,t,o,i){var s=e&L1,l=zi(n),c=l.length,u=zi(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:D1.call(r,p)))return!1}var f=i.get(n),m=i.get(r);if(f&&m)return f==r&&m==n;var h=!0;i.set(n,r),i.set(r,n);for(var y=s;++d<c;){p=l[d];var g=n[p],v=r[p];if(t)var b=s?t(v,g,p,r,n,i):t(g,v,p,n,r,i);if(!(b===void 0?g===v||o(g,v,e,t,i):b)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,S=r.constructor;w!=S&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof S=="function"&&S instanceof S)&&(h=!1)}return i.delete(n),i.delete(r),h}var Of=G1;var R1=1,Af="[object Arguments]",Cf="[object Array]",ya="[object Object]",V1=Object.prototype,Nf=V1.hasOwnProperty;function z1(n,r,e,t,o,i){var s=Re(n),l=Re(r),c=s?Cf:Fr(n),u=l?Cf:Fr(r);c=c==Af?ya:c,u=u==Af?ya:u;var a=c==ya,d=u==ya,p=c==u;if(p&&So(n)){if(!So(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new pn),s||ea(n)?ha(n,r,e,t,o,i):Pf(n,r,c,e,t,o,i);if(!(e&R1)){var f=a&&Nf.call(n,"__wrapped__"),m=d&&Nf.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new pn),o(h,y,e,t,i)}}return p?(i||(i=new pn),Of(n,r,e,t,o,i)):!1}var If=z1;function Mf(n,r,e,t,o){return n===r?!0:n==null||r==null||!it(n)&&!it(r)?n!==n&&r!==r:If(n,r,e,t,Mf,o)}var Ef=Mf;function F1(n,r){return n!=null&&r in Object(n)}var Lf=F1;function j1(n,r,e){r=Ft(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=ro(r[t]);if(!(i=n!=null&&e(n,s)))break;n=n[s]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Jo(o)&&Ko(s,o)&&(Re(n)||tn(n)))}var Bf=j1;function k1(n,r){return n!=null&&Bf(n,r,Lf)}var Df=k1;function U1(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Gf=U1;function H1(n,r){return r.length<2?n:oa(n,Ip(r,0,-1))}var Rf=H1;function W1(n,r){return Ef(n,r)}var Fi=W1;function q1(n,r){return r=Ft(r,n),n=Rf(n,r),n==null||delete n[ro(Gf(r))]}var Vf=q1;function $1(n){return Np(n)?void 0:n}var zf=$1;var X1=1,Y1=2,K1=4,Z1=na(function(n,r){var e={};if(n==null)return e;var t=!1;r=Xs(r,function(i){return i=Ft(i,n),t||(t=i.length>1),i}),mr(n,la(n),e),t&&(e=fa(e,X1|Y1|K1,zf));for(var o=r.length;o--;)Vf(e,r[o]);return e}),yn=Z1;function Q1(n,r,e,t){if(!Et(n))return n;r=Ft(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=ro(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=s){var a=l[c];u=t?t(a,c,l):void 0,u===void 0&&(u=Et(a)?a:Ko(r[o+1])?[]:{})}Qo(l,c,u),l=l[c]}return n}var Ff=Q1;function J1(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=oa(n,s);e(l,s)&&Ff(i,Ft(s,n),l)}return i}var jf=J1;function ew(n,r){return jf(n,r,function(e,t){return Df(n,t)})}var kf=ew;var tw=na(function(n,r){return n==null?{}:kf(n,r)}),gn=tw;var Ne=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let i={...t,[r]:e};return Object.setPrototypeOf(i,Ne.prototype),i}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:i,data:s}=r,l={...e,[i]:s};return Object.setPrototypeOf(l,Ne.prototype),{data:l,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,Ne.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function ji(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let r=Object.getOwnPropertyNames(n);for(let e of r){let t=n[e];t&&typeof t=="object"&&ji(t)}return Object.freeze(n)}function Uf(n,r){let e=0;for(;e<n.length&&e<r.length;){if(n[e]<r[e])return-1;if(n[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==n.length?1:0}var xn=class extends Error{};function ga(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function hr(n,r,e){if(n===void 0?r===void 0?(n=0,r=10):n=r-10:r===void 0&&(r=n+10),n>r){let i=n;n=r,r=i}let t=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(s)}return t}function vn(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 Hf(){return typeof process<"u"}function Wf(n,r){for(let e of n)r(e.id,e.data)!==!0&&Wf(e.children,r)}function qf(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)qf(e,r)}var We=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,We.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ji(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);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,t){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)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,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&qf(o,t)}}traverse(e){Wf(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,t){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:t},this.modifyArrayBy(i,s)}}modifyArrayBy(e,t){let o=e,i=t;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,We.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:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:i,data:s,children:l}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),a={fi:o,id:i,data:s,children:l};return u=[...u,a],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(a),{data:this.modifyArrayBy(c,u),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(u=>u.id===t);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:t,fi:o,id:i}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:i});if(t!==null){let f=t;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new xn("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],d=this.modifyArrayBy(s,c);s=t,c=d.childrenArray(s);let p=a.fi;return a={...a,fi:o},c=[...c,a],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(a),d=d.modifyArrayBy(s,c),{data:d,actual:e,reverse:{type:9,parent:l,fi:p,id:i}}}previous(e,t){if(t===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===t)return o;o=i.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):t}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push({...o,...i})}t.sort((o,i)=>Uf(o.sortKey,i.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],i=this.get(t),s=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...s,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let i=this.childrenArray(e);if(t===null){if(i.length===0)return hr(0,o,o);{let s=i[0].fi;return hr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==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 hr(c,c+o,o)}else return hr(s.fi,l.fi,o)}}};var bn;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.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:t,reverse:{type:0,props:i}}:null}else{let o=t.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:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(bn||(bn={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ji(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,t){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:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,he.prototype);let t=e;return Hf()||t.fillCaches(),t}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:t,id:o,data:i}=e,s=this,l={fi:t,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:t}=e,o=this,i=o.findIndex(c=>c.id===t);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:t,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:t};return i[s]=c,i.sort((a,d)=>a.fi-d.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 t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return hr(0,t,t);{let i=o[0].fi;return hr(i-t,i,t)}}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 hr(l,l+t,t)}else return hr(i.fi,s.fi,t)}}};function Sn(n){return n&&typeof n=="object"&&n instanceof Le}var Le=class{unusedFunOverridesTable(r){}runOp(r){let e=[],t=this,o=0,i={};for(;o<r.path.length;){if(e.push(t),t=t===void 0?void 0:t[r.path[o]],t!==void 0&&!Sn(t))return null;o+=1}t=t?ga(t):new Le;for(let[c,u]of Object.entries(r.props)){let a=t[c];i[c]=a,u===void 0?delete t[c]:t[c]=u}for(;o>0;){if(Object.keys(t).length===0){let c=e[o-1];c&&(t=ga(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=ga(c);u[r.path[o-1]]=t,t=u}else{let u=new Le;u[r.path[o-1]]=t,t=u}}o-=1}let s=Object.setPrototypeOf(t,Le.prototype),l={...r,props:i};return{data:s,actual:r,reverse:l}}},kr;(t=>{function n(o,i){return ki(o,i)??o}t.apply=n;function r(o,i){return rc(o,i)}t.merge=r;function e(o,i){let s=0,l=i.path,c=o;for(;s<l.length&&c!==void 0;){if(c=mt.zoomOnce(c,l[s]),c===void 0)return i;if(!Sn(c))return;s+=1}if(c===void 0)return i;if(!!Sn(c))if(i.type===0){let u={...i.props};for(let a of Object.keys(c))delete u[a];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=tc([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(kr||(kr={}));function tc(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ki(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=tc(o.children,r);return l!==void 0?e=!0:l=o.children,{...o,id:i,data:s,children:l}}else return{...o,id:i,data:s}});if(e)return t}function rw(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=ki(o.data,r[i]);return e=e||s!==void 0,s===void 0&&(s=o.data),{...o,id:i,data:s}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function ki(n,r){if(!Sn(r))return r;if(n instanceof We){let e=tc(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return rw(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=ki(o,r[i]);return e=e||s!==void 0,s===void 0&&(s=o),s});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof Le)return rc(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=ki(i,r[o]);t=t||s!==void 0,s===void 0&&(s=i),e[o]=s}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function rc(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!Sn(r))return r;if(!Sn(n))return kr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new Le;for(let o of e){let i=rc(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function $f(n,r){let e={cur:[],result:[],len:0};return n=Ui(n,r,e)??n,[n,e.result]}function xa(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function va(n){n&&(n.len-=1)}function ow(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Xf(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Ui(i.data,r,xa(e,s));va(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Xf(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:s,data:c,children:u}});if(t)return o}function nw(n,r,e){let t=!1,o=n.map(i=>{let s=i.id,l=r[s];if(l!==void 0&&typeof l=="string"&&(t=!0,s=l,e!==null))throw new Error("not supported");let c=Ui(i.data,r,xa(e,s));return va(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:s,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Ui(n,r,e){if(n instanceof We){let t=Xf(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return nw(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=Ui(i,r,xa(e,s));return va(e),t=t||l!==void 0,l===void 0&&(l=i),l});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!vn(n)){let t={},o=!1;for(let[i,s]of Object.entries(n))if(i!=="name"&&i!=="text"){let l=r[i];if(typeof l=="string"){if(e!==null)throw new Error("not supported");o=!0,i=l}let c=Ui(s,r,xa(e,i));va(e),o=o||c!==void 0,c===void 0&&(c=s),t[i]=c}else t[i]=s;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];if(t!==void 0){if(n.length!==36)throw new Error("for now you should only call this method when the key is a uuid");ow(e)}return t}else return}}var ba;(r=>{function n(e,t){let o=mt.zoom(t,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:{}}}r.replaceProps=n})(ba||(ba={}));var st;(l=>{function n(c,u){return{...c,path:c.path.slice(u)}}l.drop=n;function r(c,u){return e(c,u)?.data??c}l.applySimple=r;function e(c,u){let a=u.path;for(var d=[];;){let p;if(c instanceof Le&&u.type===0&&(p=c.runOp({...u,path:a.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===a.length&&(c instanceof We||c instanceof he||c instanceof Ne?p=c.runOp(u):p=bn.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=a[y],v=d[y];if(v instanceof We){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof he){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Ne){if(typeof g=="number")throw new Error("illegal arg");h=v.modifyById(g,h)}else if(v instanceof Le){let b={...v,[g]:h};h=Object.setPrototypeOf(b,Le.prototype)}else if(typeof v=="object")if(Array.isArray(v)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let b=h;h=[...v],h[g]=b}else h={...v,[g]:h};else return null}return{data:h,actual:{...p.actual,path:a},reverse:{...p.reverse,path:a}}}else return null;let f=a[d.length],m;if(c instanceof We){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)d.push(c),c=m;else return null}}l.apply=e;function t(c,u){for(let a=0;a<c.length&&a<u.length;a++)if(c[a]!==u[a])return!0;return!1}l.pathDisjoint=t;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 t(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})(st||(st={}));var oc;(c=>{function n(){return[]}c.empty=n;function r(u,a){let d=[];for(let p of u){let[f,...m]=p.path;f===a&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,a){return u.map(d=>({...d,path:[a,...d.path]}))}c.addPrefix=e;function t(u,a){return[...u,...a]}c.concat=t;function o(u,a){return[...u.filter(p=>!a.some(f=>st.subsumed(p,f))),...a]}c.compress=o;function i(u,a){return u.every(d=>a.every(p=>st.commutative(d,p)))}c.commutative=i;function s(u,a){for(let d of a){let p=l(u,d);p!==null&&(u=p.data)}return u}c.applyAll=s;function l(u,a){var d=u;let p=[],f=[];for(let m of a)try{if(m.type===3){let h=mt.zoom(d,[...m.path,m.id]),y=st.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,v]=$f(d,{[m.id]:h});d=g;for(let b of v){let w=b[b.length-1];b.splice(b.length-1,1),p.push({type:0,path:b,props:{[w]:h}}),f.push({type:0,path:b,props:{[w]:m.id}})}f.push(y.reverse),p.push(y.actual)}}else{let h=st.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof xn)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(oc||(oc={}));var Yf=Symbol(),iw=Symbol(),wa=Symbol(),To=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Sa);){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,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[wa];t&&t(),delete this._children[r]}}}},ic=class extends To{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,bn.runOp(this._current,r),r.path)}},sc=class extends To{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,Ne.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Kf={get(n,r){if(r===wa)return()=>{n._parent=null};if(r===Yf)return n._current;if(r===iw)return n;let{_current:e,_children:t}=n;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e[r],s=_a(n,r,i);return s!==i?(t===void 0&&(t={},n._children=t),t[r]=s,s):i},has(n,r){return r 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,r){let e=n._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},sw={...Kf,set(n,r,e){let t={type:0,props:{[r]:Ze(e)??e}};return n.deleteChildren(r),n.runOp(t),!0},deleteProperty(n,r){let e={type:0,props:{[r]:void 0}};return n.deleteChildren(r),n.runOp(e),!0}},aw={...Kf,set(n,r,e){return e===void 0?this.deleteProperty(n,r):(n.deleteChildren(r),n.runOp({type:1,id:r,data:e})),!0},deleteProperty(n,r){return n.runOp({type:2,id:r}),!0}},wn=class extends To{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[wa]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=_a(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}add(r,e,t,o,i){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:i})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.add(r,o[i],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let s=t[i];this.move(r,o[i],s)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},_n=class extends To{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[wa]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id,i=this._current[t].fi;r(this.data(this._current[t].id),o,i)}}find(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;if(r(this.data(o),o))return this.get(o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let i=e.get(r)?.data,s=_a(this,r,i);return s!==i?(t===void 0&&(t={},this._children=t),t[r]=s,s):i}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(t[o],i.id,i.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(t[o],i)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function nc(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&mt.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Sa=class extends To{constructor(r){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){nc(this.ts,e,r),nc(this.actual,t,r),nc(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function _a(n,r,e){return e instanceof We?new wn(n,r,e):e instanceof he?new _n(n,r,e):e instanceof Ne?new Proxy(new sc(n,r,e),aw):e!==null&&typeof e=="object"?vn(e)?e:new Proxy(new ic(n,r,e),sw):e}function ac(n){let r=new Sa(n);return[_a(r,"",n),r]}function Tn(n,r){let[e,t]=ac(n);return r(e),t.result()}function Ze(n){return n instanceof wn||n instanceof _n?n._current:n!==null&&typeof n=="object"?n[Yf]:n}var mt;(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 r(i,s,l){let c=t(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=r;function e(i,s){if((i instanceof We||i instanceof wn)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof _n)&&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 t(i,s,l=0){for(;l<s.length&&i!==void 0;)i=e(i,s[l]),l+=1;return i}o.zoom=t})(mt||(mt={}));function Zf(n,r){let e=[];if(r.length===n.length)for(var t=0;t<n.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}function Xt(n,r){let e=[];if(r.length<=n.length)for(var t=0;t<r.length;){if(r[t]==="*")e.push(n[t]);else if(n[t]!==r[t])return null;t+=1}else return null;return e}var Ta=class{},Hi=class extends Ta{constructor(e){super();this.id=e}},Wi=class extends Ta{constructor(e){super();this.data=e}};var cc;try{cc=new TextDecoder}catch{}var ne,no,I=0;var im=[],dc=im,uc=0,wt={},_e,oo,jt=0,yr=0,Lt,Ur,ht=[],Oe,Qf={useRecords:!1,mapsAsObjects:!0},qi=class{},fc=new qi;fc.name="MessagePack 0xC1";var Pn=!1,gr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(ne)return dm(()=>(Oa(),this?this.unpack(r,e):gr.prototype.unpack.call(Qf,r,e)));no=e>-1?e:r.length,I=0,uc=0,yr=0,oo=null,dc=im,Lt=null,ne=r;try{Oe=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw ne=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof gr){if(wt=this,this.structures)return _e=this.structures,Pa();(!_e||_e.length>0)&&(_e=[])}else wt=Qf,(!_e||_e.length>0)&&(_e=[]);return Pa()}unpackMultiple(r,e){let t,o=0;try{Pn=!0;let i=r.length,s=this?this.unpack(r,i):Na.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(Pa())===!1)return}else{for(t=[s];I<i;)o=I,t.push(Pa());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Pn=!1,Oa()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let i=r[t];i&&(i.isShared=!0,t>=32&&(i.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],i=e[t];i&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=i)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function Pa(){try{if(!wt.trusted&&!Pn){let r=_e.sharedLength||0;r<_e.length&&(_e.length=r)}let n=Ve();if(I==no)_e.restoreStructures&&Jf(),_e=null,ne=null,Ur&&(Ur=null);else if(I>no){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Pn)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw _e.restoreStructures&&Jf(),Oa(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Jf(){for(let n in _e.restoreStructures)_e[n]=_e.restoreStructures[n];_e.restoreStructures=null}function Ve(){let n=ne[I++];if(n<160)if(n<128){if(n<64)return n;{let r=_e[n&63]||wt.getStructures&&sm()[n&63];return r?(r.read||(r.read=mc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,wt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[lm()]=Ve();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ve(),Ve());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ve();return r}else if(n<192){let r=n-160;if(yr>=I)return oo.slice(I-jt,(I+=r)-jt);if(yr==0&&no<140){let e=r<16?hc(r):am(r);if(e!=null)return e}return pc(r)}else{let r;switch(n){case 192:return null;case 193:return Lt?(r=Ve(),r>0?Lt[1].slice(Lt.position1,Lt.position1+=r):Lt[0].slice(Lt.position0,Lt.position0-=r)):fc;case 194:return!1;case 195:return!0;case 196:return lc(ne[I++]);case 197:return r=Oe.getUint16(I),I+=2,lc(r);case 198:return r=Oe.getUint32(I),I+=4,lc(r);case 199:return Po(ne[I++]);case 200:return r=Oe.getUint16(I),I+=2,Po(r);case 201:return r=Oe.getUint32(I),I+=4,Po(r);case 202:if(r=Oe.getFloat32(I),wt.useFloat32>2){let e=Ca[(ne[I]&127)<<1|ne[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Oe.getFloat64(I),I+=8,r;case 204:return ne[I++];case 205:return r=Oe.getUint16(I),I+=2,r;case 206:return r=Oe.getUint32(I),I+=4,r;case 207:return wt.int64AsNumber?(r=Oe.getUint32(I)*4294967296,r+=Oe.getUint32(I+4)):r=Oe.getBigUint64(I),I+=8,r;case 208:return Oe.getInt8(I++);case 209:return r=Oe.getInt16(I),I+=2,r;case 210:return r=Oe.getInt32(I),I+=4,r;case 211:return wt.int64AsNumber?(r=Oe.getInt32(I)*4294967296,r+=Oe.getUint32(I+4)):r=Oe.getBigInt64(I),I+=8,r;case 212:if(r=ne[I++],r==114)return nm(ne[I++]&63);{let e=ht[r];if(e)return e.read?(I++,e.read(Ve())):e.noBuffer?(I++,e()):e(ne.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=ne[I],r==114?(I++,nm(ne[I++]&63,ne[I++])):Po(2);case 214:return Po(4);case 215:return Po(8);case 216:return Po(16);case 217:return r=ne[I++],yr>=I?oo.slice(I-jt,(I+=r)-jt):cw(r);case 218:return r=Oe.getUint16(I),I+=2,yr>=I?oo.slice(I-jt,(I+=r)-jt):dw(r);case 219:return r=Oe.getUint32(I),I+=4,yr>=I?oo.slice(I-jt,(I+=r)-jt):uw(r);case 220:return r=Oe.getUint16(I),I+=2,tm(r);case 221:return r=Oe.getUint32(I),I+=4,tm(r);case 222:return r=Oe.getUint16(I),I+=2,rm(r);case 223:return r=Oe.getUint32(I),I+=4,rm(r);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 lw=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function mc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>lw.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ve);return n.highByte===0&&(n.read=em(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Ve()}return t}return e.count=0,n.highByte===0?em(r,e):e}var em=(n,r)=>function(){let e=ne[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=_e[t]||sm()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=mc(o,n)),o.read()};function sm(){let n=dm(()=>(ne=null,wt.getStructures()));return _e=wt._mergeStructures(n,_e)}var pc=Aa,cw=Aa,dw=Aa,uw=Aa;function Aa(n){let r;if(n<16&&(r=hc(n)))return r;if(n>64&&cc)return cc.decode(ne.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=ne[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[I++]&63,s=ne[I++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[I++]&63,s=ne[I++]&63,l=ne[I++]&63,c=(o&7)<<18|i<<12|s<<6|l;c>65535&&(c-=65536,t.push(c>>>10&1023|55296),c=56320|c&1023),t.push(c)}else t.push(o);t.length>=4096&&(r+=Qe.apply(String,t),t.length=0)}return t.length>0&&(r+=Qe.apply(String,t)),r}function tm(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ve();return r}function rm(n){if(wt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[lm()]=Ve();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ve(),Ve());return r}}var Qe=String.fromCharCode;function am(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=ne[I++];if((o&128)>0){I=r;return}e[t]=o}return Qe.apply(String,e)}function hc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[I++];if((r&128)>1){I-=1;return}return Qe(r)}}else{let r=ne[I++],e=ne[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return Qe(r,e);let t=ne[I++];if((t&128)>0){I-=3;return}return Qe(r,e,t)}else{let r=ne[I++],e=ne[I++],t=ne[I++],o=ne[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return Qe(r,e,t,o);{let i=ne[I++];if((i&128)>0){I-=5;return}return Qe(r,e,t,o,i)}}else if(n<8){let i=ne[I++],s=ne[I++];if((i&128)>0||(s&128)>0){I-=6;return}if(n<7)return Qe(r,e,t,o,i,s);let l=ne[I++];if((l&128)>0){I-=7;return}return Qe(r,e,t,o,i,s,l)}else{let i=ne[I++],s=ne[I++],l=ne[I++],c=ne[I++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return Qe(r,e,t,o,i,s,l,c);{let u=ne[I++];if((u&128)>0){I-=9;return}return Qe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[I++],a=ne[I++];if((u&128)>0||(a&128)>0){I-=10;return}if(n<11)return Qe(r,e,t,o,i,s,l,c,u,a);let d=ne[I++];if((d&128)>0){I-=11;return}return Qe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[I++],a=ne[I++],d=ne[I++],p=ne[I++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return Qe(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[I++];if((f&128)>0){I-=13;return}return Qe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[I++],m=ne[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return Qe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[I++];if((h&128)>0){I-=15;return}return Qe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function lc(n){return wt.copyBuffers?Uint8Array.prototype.slice.call(ne,I,I+=n):ne.subarray(I,I+=n)}function Po(n){let r=ne[I++];if(ht[r])return ht[r](ne.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var om=new Array(4096);function lm(){let n=ne[I++];if(n>=160&&n<192){if(n=n-160,yr>=I)return oo.slice(I-jt,(I+=n)-jt);if(!(yr==0&&no<180))return pc(n)}else return I--,Ve();let r=(n<<5^(n>1?Oe.getUint16(I):n>0?ne[I]:0))&4095,e=om[r],t=I,o=I+n-3,i,s=0;if(e&&e.bytes==n){for(;t<o;){if(i=Oe.getUint32(t),i!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=ne[t++],i!=e[s++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],om[r]=e,e.bytes=n;t<o;)i=Oe.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=ne[t++],e.push(i);let l=n<16?hc(n):am(n);return l!=null?e.string=l:e.string=pc(n)}var nm=(n,r)=>{var e=Ve();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=_e[n];return o&&o.isShared&&((_e.restoreStructures||(_e.restoreStructures=[]))[n]=o),_e[n]=e,e.read=mc(e,t),e.read()},cm=typeof self=="object"?self:global;ht[0]=()=>{};ht[0].noBuffer=!0;ht[101]=()=>{let n=Ve();return(cm[n[0]]||Error)(n[1])};ht[105]=n=>{let r=Oe.getUint32(I-4);Ur||(Ur=new Map);let e=ne[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Ur.set(r,o);let i=Ve();return o.used?Object.assign(t,i):(o.target=i,i)};ht[112]=n=>{let r=Oe.getUint32(I-4),e=Ur.get(r);return e.used=!0,e.target};ht[115]=()=>new Set(Ve());var yc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ht[116]=n=>{let r=n[0],e=yc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new cm[e](Uint8Array.prototype.slice.call(n,1).buffer)};ht[120]=()=>{let n=Ve();return new RegExp(n[0],n[1])};ht[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,Lt=[Ve(),Ve()],Lt.position0=0,Lt.position1=0;let t=I;I=e;try{return Ve()}finally{I=t}};ht[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 dm(n){let r=no,e=I,t=uc,o=jt,i=yr,s=oo,l=dc,c=Ur,u=Lt,a=new Uint8Array(ne.slice(0,no)),d=_e,p=_e.slice(0,_e.length),f=wt,m=Pn,h=n();return no=r,I=e,uc=t,jt=o,yr=i,oo=s,dc=l,Ur=c,Lt=u,ne=a,Pn=m,_e=d,_e.splice(0,_e.length,...p),wt=f,Oe=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function Oa(){ne=null,Ur=null,_e=null}function um(n){n.unpack?ht[n.type]=n.unpack:ht[n.type]=n}var Ca=new Array(147);for(let n=0;n<256;n++)Ca[n]=+("1e"+Math.floor(45.15-n*.30103));var Na=new gr({useRecords:!1}),pw=Na.unpack,fw=Na.unpackMultiple,mw=Na.unpack,Ia={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},hw=new Float32Array(1),aD=new Uint8Array(hw.buffer,0,4);var Ma;try{Ma=new TextEncoder}catch{}var Ea,xc,La=typeof Buffer<"u",gc=La?Buffer.allocUnsafeSlow:Uint8Array,hm=La?Buffer:Uint8Array,pm=La?4294967296:2144337920,z,je,E=0,xr,vr=null,yw=/[\u0080-\uFFFF]/,$i=Symbol("record-id"),Oo=class extends gr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=hm.prototype.utf8Write?function(x,N,P){return z.utf8Write(x,N,P)}:Ma&&Ma.encodeInto?function(x,N){return Ma.encodeInto(x,z.subarray(N)).written}:!1,a=this;r||(r={});let d=r&&r.sequential,p=r.structures||r.saveStructures,f=r.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let m=r.maxOwnStructures;m==null&&(m=p?32:64),d&&!r.saveStructures&&(this.structures=[]);let h=f>32||m+f>64,y=f+64,g=f+m+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],b=0,w=0;this.pack=this.encode=function(x,N){if(z||(z=new gc(8192),je=new DataView(z.buffer,0,8192),E=0),xr=z.length-10,xr-E<2048?(z=new gc(z.length),je=new DataView(z.buffer,0,z.length),xr=z.length-10,E=0):E=E+7&2147483640,t=E,l=a.structuredClone?new Map:null,a.bundleStrings?(vr=["",""],z[E++]=214,z[E++]=98,vr.position=E-t,E+=4):vr=null,o=a.structures,o){o.uninitialized&&(o=a._mergeStructures(a.getStructures()));let P=o.sharedLength||0;if(P>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 C=0;C<P;C++){let O=o[C];if(!O)continue;let A,R=o.transitions;for(let k=0,$=O.length;k<$;k++){let te=O[k];A=R[te],A||(A=R[te]=Object.create(null)),R=A}R[$i]=C+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(S(x),vr){je.setUint32(vr.position+t,E-vr.position-t);let P=vr;vr=null,S(P[0]),S(P[1])}if(a.offset=E,l&&l.idsToInsert){E+=l.idsToInsert.length*6,E>xr&&_(E),a.offset=E;let P=xw(z.subarray(t,E),l.idsToInsert);return l=null,P}return N&gm?(z.start=t,z.end=E,z):z.subarray(t,E)}finally{if(o){if(w<10&&w++,b>1e4)o.transitions=null,w=0,b=0,v.length>0&&(v=[]);else if(v.length>0&&!d){for(let P=0,C=v.length;P<C;P++)v[P][$i]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let C=z.subarray(t,E);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,C)}}N&Pw&&(E=t)}};let S=x=>{E>xr&&(z=_(E));var N=typeof x,P;if(N==="string"){let C=x.length;if(vr&&C>=8&&C<4096){let R=yw.test(x);vr[R?0:1]+=x,z[E++]=193,S(R?-C:C);return}let O;C<32?O=1:C<256?O=2:C<65536?O=3:O=5;let A=C*3;if(E+A>xr&&(z=_(E+A)),C<64||!u){let R,k,$,te=E+O;for(R=0;R<C;R++)k=x.charCodeAt(R),k<128?z[te++]=k:k<2048?(z[te++]=k>>6|192,z[te++]=k&63|128):(k&64512)===55296&&(($=x.charCodeAt(R+1))&64512)===56320?(k=65536+((k&1023)<<10)+($&1023),R++,z[te++]=k>>18|240,z[te++]=k>>12&63|128,z[te++]=k>>6&63|128,z[te++]=k&63|128):(z[te++]=k>>12|224,z[te++]=k>>6&63|128,z[te++]=k&63|128);P=te-E-O}else P=u(x,E+O,A);P<32?z[E++]=160|P:P<256?(O<2&&z.copyWithin(E+2,E+1,E+1+P),z[E++]=217,z[E++]=P):P<65536?(O<3&&z.copyWithin(E+3,E+2,E+2+P),z[E++]=218,z[E++]=P>>8,z[E++]=P&255):(O<5&&z.copyWithin(E+5,E+3,E+3+P),z[E++]=219,je.setUint32(E,P),E+=4),E+=P}else if(N==="number")if(x>>>0===x)x<64?z[E++]=x:x<256?(z[E++]=204,z[E++]=x):x<65536?(z[E++]=205,z[E++]=x>>8,z[E++]=x&255):(z[E++]=206,je.setUint32(E,x),E+=4);else if(x>>0===x)x>=-32?z[E++]=256+x:x>=-128?(z[E++]=208,z[E++]=x+256):x>=-32768?(z[E++]=209,je.setInt16(E,x),E+=2):(z[E++]=210,je.setInt32(E,x),E+=4);else{let C;if((C=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){z[E++]=202,je.setFloat32(E,x);let O;if(C<4||(O=x*Ca[(z[E]&127)<<1|z[E+1]>>7])>>0===O){E+=4;return}else E--}z[E++]=203,je.setFloat64(E,x),E+=8}else if(N==="object")if(!x)z[E++]=192;else{if(l){let O=l.get(x);if(O){if(!O.id){let A=l.idsToInsert||(l.idsToInsert=[]);O.id=A.push(O)}z[E++]=214,z[E++]=112,je.setUint32(E,O.id),E+=4;return}else l.set(x,{offset:E-t})}let C=x.constructor;if(C===Object)T(x,!0);else if(C===Array){P=x.length,P<16?z[E++]=144|P:P<65536?(z[E++]=220,z[E++]=P>>8,z[E++]=P&255):(z[E++]=221,je.setUint32(E,P),E+=4);for(let O=0;O<P;O++)S(x[O])}else if(C===Map){P=x.size,P<16?z[E++]=128|P:P<65536?(z[E++]=222,z[E++]=P>>8,z[E++]=P&255):(z[E++]=223,je.setUint32(E,P),E+=4);for(let[O,A]of x)S(O),S(A)}else{for(let O=0,A=Ea.length;O<A;O++){let R=xc[O];if(x instanceof R){let k=Ea[O];if(k.write){k.type&&(z[E++]=212,z[E++]=k.type,z[E++]=0),S(k.write.call(this,x));return}let $=z,te=je,X=E;z=null;let q;try{q=k.pack.call(this,x,H=>(z=$,$=null,E+=H,E>xr&&_(E),{target:z,targetView:je,position:E-H}),S)}finally{$&&(z=$,je=te,E=X,xr=z.length-10)}q&&(q.length+E>xr&&_(q.length+E),E=gw(q,z,E,k.type));return}}T(x,!x.hasOwnProperty)}}else if(N==="boolean")z[E++]=x?195:194;else if(N==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))z[E++]=211,je.setBigInt64(E,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)z[E++]=207,je.setBigUint64(E,x);else if(this.largeBigIntToFloat)z[E++]=203,je.setFloat64(E,Number(x));else throw new RangeError(x+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(N==="undefined")this.encodeUndefinedAsNil?z[E++]=192:(z[E++]=212,z[E++]=0,z[E++]=0);else if(N==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+N)},T=this.useRecords===!1?this.variableMapSize?x=>{let N=Object.keys(x),P=N.length;P<16?z[E++]=128|P:P<65536?(z[E++]=222,z[E++]=P>>8,z[E++]=P&255):(z[E++]=223,je.setUint32(E,P),E+=4);let C;for(let O=0;O<P;O++)S(C=N[O]),S(x[C])}:(x,N)=>{z[E++]=222;let P=E-t;E+=2;let C=0;for(let O in x)(N||x.hasOwnProperty(O))&&(S(O),S(x[O]),C++);z[P+++t]=C>>8,z[P+t]=C&255}:x=>{let N=Object.keys(x),P,C=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,k=N.length;R<k;R++){let $=N[R];P=C[$],P||(P=C[$]=Object.create(null),O++),C=P}let A=C[$i];if(A)A>=96&&h?(z[E++]=((A-=96)&31)+96,z[E++]=A>>5):z[E++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(N)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let R=N.highByte=A>=96&&h?A-96>>5:-1;C[$i]=A,s[A-64]=N,A<y?(N.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(z[E++]=(A&31)+96,z[E++]=R):z[E++]=A):(R>=0?(z[E++]=213,z[E++]=114,z[E++]=(A&31)+96,z[E++]=R):(z[E++]=212,z[E++]=114,z[E++]=A),O&&(b+=w*O),v.length>=m&&(v.shift()[$i]=0),v.push(C),S(N))}for(let R=0,k=N.length;R<k;R++)S(x[N[R]])},_=x=>{let N;if(x>16777216){if(x-t>pm)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(pm,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else N=(Math.max(x-t<<2,z.length-1)>>12)+1<<12;let P=new gc(N);return je=new DataView(P.buffer,0,N),z.copy?z.copy(P,0,t,x):P.set(z.slice(t,x)),E-=t,t=0,xr=P.length-10,z=P}}useBuffer(r){z=r,je=new DataView(z.buffer,z.byteOffset,z.byteLength),E=0}};xc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,qi];Ea=[{pack(n,r,e){let t=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:i,position:s}=r(6);o[s++]=214,o[s++]=255,i.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:s}=r(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(t)))}}},{pack(n,r,e){let t=Array.from(n),{target:o,position:i}=r(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(t)}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([n.name,n.message])}},{pack(n,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([n.source,n.flags])}},{pack(n,r){this.structuredClone?fm(n,16,r):mm(La?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==hm&&this.structuredClone?fm(n,yc.indexOf(e.name),r):mm(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function fm(n,r,e,t){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++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function mm(n,r){let e=n.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:i}=r(e+5);t[o++]=198,i.setUint32(o,e),o+=4}t.set(n,o)}function gw(n,r,e,t){let o=n.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(n,e),e+=o,e}function xw(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,s)=>i.offset>s.offset?1:-1);e=r.pop();){let i=e.offset,s=e.id;n.copyWithin(i+t,i,o),t-=6;let l=i+t;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 io(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)");xc.unshift(n.Class),Ea.unshift(n)}um(n)}var ym=new Oo({useRecords:!1}),vw=ym.pack,bw=ym.pack;var{NEVER:Sw,ALWAYS:ww,DECIMAL_ROUND:_w,DECIMAL_FIT:Tw}=Ia,gm=512,Pw=1024;var xm=new Oo({structuredClone:!0});io({Class:Ne.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ne.prototype),n}});io({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});io({Class:We.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,We.prototype),n}});io({Class:Hi.prototype.constructor,type:4,write(n){return n.id},read(n){return new Hi(n)}});io({Class:Wi.prototype.constructor,type:5,write(n){return n.data},read(n){return new Wi(n)}});io({Class:Le.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});function Ow(n){var r=0;if(n.length===0)return r;for(let e=0;e<n.length;e++){let t=n[e];r=(r<<5)-r+t,r=r&r}return r}function vc(n){if(vn(n))return n;if(Array.isArray(n))return n.map(vc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=vc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var Ba;(t=>{function n(o){return xm.pack(o)}t.serialize=n;function r(o){return xm.unpack(o)}t.deserialize=r;function e(o){return Ow(n(vc(o))).toString()}t.checksum=e})(Ba||(Ba={}));var vm;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i]}e.lerp=r})(vm||(vm={}));var so;(l=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}l.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}l.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}l.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}l.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}l.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}l.dist=i;function s(c,u,a){return[c[0]+(u[0]-c[0])*a,c[1]+(u[1]-c[1])*a,c[2]+(u[2]-c[2])*a]}l.lerp=s})(so||(so={}));var bm;(e=>{function n(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=n;function r(t,o,i){return[t[0]+(o[0]-t[0])*i,t[1]+(o[1]-t[1])*i,t[2]+(o[2]-t[2])*i,t[3]+(o[3]-t[3])*i]}e.lerp=r})(bm||(bm={}));var ao;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,s){for(let l=0;l<16;l++)if(i[l]!==s[l])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(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=t})(ao||(ao={}));var pt;(a=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}a.isRGB=n,a.white={r:1,g:1,b:1},a.red={r:1,g:0,b:0},a.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}a.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}a.clone=i;function s(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}a.fromHex=s;function l(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}a.toHex=l;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}a.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}a.lerp=u})(pt||(pt={}));var Bt;(l=>{l.white={...pt.white,a:1},l.transparent={...pt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}l.from0to1=e;function t(c,u){return{...pt.fromHex(c),a:u}}l.fromHexAndA=t;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 pt.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})(Bt||(Bt={}));var Da;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Da||(Da={}));var Sm;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Sm||(Sm={}));var wm;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(wm||(wm={}));var Yt;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Yt||(Yt={}));var Ao;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1,autoZoom:!1,autoZoomFrustumSize:790},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(Ao||(Ao={}));var br;(e=>{function n(t,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(t[0],t[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:[t[0]+t[0]*o,0,0]},grid:{count:[2,2,2],size:t.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 r(t,o){let i={...t};if(Aw.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;Cw.forEach(c=>{Object.assign(i.radial,{[c]:l[c]??s[c]})})}if(i.linear={...t.linear},o.linear){let s=t.linear,l=o.linear;Nw.forEach(c=>{Object.assign(i.linear,{[c]:l[c]??s[c]})})}if(i.grid={...t.grid},o.grid){let s=t.grid,l=o.grid;Iw.forEach(c=>{Object.assign(i.grid,{[c]:l[c]??s[c]})})}if(i.toObject={...t.toObject},o.toObject){let s=t.toObject,l=o.toObject;Mw.forEach(c=>{Object.assign(i.toObject,{[c]:l[c]??s[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let s=t.randomnessObject,l=o.randomnessObject;Ew.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(br||(br={}));var Ga;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let s=[];o.count!==void 0&&s.push({type:0,path:i,props:{count:o.count}});for(let l of r){let c=o[l];c&&Object.keys(c).length>0&&s.push({type:0,path:[...i,l],props:c})}return s}t.toOps=e})(Ga||(Ga={}));var Aw=["count"],Cw=["radius","start","end","position","scale","rotation"],Nw=["position","scale","rotation"],Iw=["count","size"],Mw=["count","position","scale","rotation"],Ew=["strength","scale","rotation","position","movement","seed","freqScale"];var Ra;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Ra||(Ra={}));var Va;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Bt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:Bt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Bt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Va||(Va={}));var bc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(bc||(bc={}));var Sc;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(Sc||(Sc={}));var za;(r=>r.defaultData={...Sc.defaultData,...bc.defaultData})(za||(za={}));var On;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(On||(On={}));var _m;(r=>{function n(e){return e==="texture"||e==="video"||e==="color"||e==="depth"||e==="normal"||e==="gradient"||e==="noise"||e==="fresnel"||e==="rainbow"||e==="toon"||e==="outline"||e==="transmission"||e==="matcap"||e==="displace"||e==="pattern"||e==="light"}r.is=n})(_m||(_m={}));function Pm(n){return n.type!=="displace"}var Tm;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Tm||(Tm={}));var Om=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Am=["wrapping","image","video"],yt;(o=>{function n(i,s){let{texture:l,...c}=s;if(Object.assign(i,c),l){let u=i.texture;u&&Object.assign(u,l)}}o.patch=n;function r(i,s){return i==="light"&&s?e(s):t(i)}o.defaultData=r;function e(i){let s={mode:0,isMask:!1,visible:!0};switch(i){case"phong":return{...s,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6};case"toon":return{...s,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...s,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1};case"physical":return{...s,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1}}}function t(i){let s={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...s,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...s,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:On.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...s,type:"color",color:pt.fromHex(5526619)};case"depth":return{...s,type:"depth",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{...s,type:"normal",cnormal:[1,1,1]};case"gradient":return{...s,type:"gradient",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{...s,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...pt.fromHex(6710886),a:1},colorB:{...pt.fromHex(6710886),a:1},colorC:{...pt.fromHex(16777215),a:1},colorD:{...pt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...s,type:"fresnel",color:Bt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...s,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...s,type:"toon",positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Bt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...s,type:"outline",outlineColor:Bt.fromHexAndA(0,1),contourColor:Bt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{...s,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...s,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...s,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...pt.fromHex(0),a:1},colorB:{...pt.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(yt||(yt={}));var _t;(c=>{function n(u){return!u.layers.some(d=>d.data.type==="texture"&&d.data.projection!==0||d.data.type==="depth"&&!d.data.isWorldSpace||d.data.type==="noise"||d.data.type==="displace")}c.isMergable=n;function r(u){let a="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{a+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>a+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?a+=`${m.toFixed(4)}`:a+=`${m}`}):a+=`${f}`})}),a}c.getHash=r;function e(){return{layers:new he}}c.defaultEmptyData=e;function t(u="layer1",a="layer2"){return i("phong",u,a)}c.defaultData=t;function o(u,a){return{...u,name:a}}c.withName=o;function i(u,a="layer1",d="layer2"){let p=new he;return p.push({fi:0,data:yt.defaultData("light",u),id:a}),p.push({fi:1,data:yt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=yt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:yt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=yt.defaultData("video");Object.assign(f.texture,{video:u});let m=new he;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:yt.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(_t||(_t={}));var An;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(An||(An={}));var Cn;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(Cn||(Cn={}));var wc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var Fa;(r=>{function n(e,t){let o={...e};return Lw.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Fa||(Fa={}));var ja={shape:wc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},Lw=["depth","offset","angle","twist","startScale","endScale"];var Xi;(e=>{function n(t){return t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"}e.is2DParametricMesh=n;function r(t){return t==="PolygonGeometry"||t==="PolygonGeometry"||t==="RectangleGeometry"||t==="StarGeometry"||t==="TriangleGeometry"||t==="EllipseGeometry"||t==="PathGeometry"||t==="VectorGeometry"||t==="ConeGeometry"||t==="CubeGeometry"||t==="CylinderGeometry"||t==="DodecahedronGeometry"||t==="HelixGeometry"||t==="IcosahedronGeometry"||t==="LatheGeometry"||t==="PyramidGeometry"||t==="SphereGeometry"||t==="PlaneGeometry"||t==="BackdropGeometry"||t==="TorusGeometry"||t==="TorusKnotGeometry"||t==="BooleanGeometry"||t==="TextGeometry"}e.isParametricMesh=r})(Xi||(Xi={}));var ka;(r=>{function n(e,t){let o={...e};return Object.assign(o,t),o.type==="PathGeometry"&&"extrusion"in t&&t.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,Fa.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ka||(ka={}));var lo;(r=>{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==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:Cn.defaultData(),extrusion:ja};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:An.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};if(e==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI};throw new Error("not implemented")}r.defaultData=n})(lo||(lo={}));var Cm;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Cm||(Cm={}));var Nn;(o=>{o.identity={...Da.identity,hiddenMatrix:ao.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;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 t(i,s){return gu({position:so.isEqual(i.position,s.position)?void 0:s.position,rotation:so.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:so.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:ao.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(Nn||(Nn={}));var Nm;(r=>r.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]})(Nm||(Nm={}));var Dt;(r=>r.defaultData={states:new he,events:new he,visible:!0,raycastLock:!1,collision:"visibility",physics:null,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Nn.identity,cloner:null})(Dt||(Dt={}));var Im;(r=>r.defaultData={type:"Empty",...Dt.defaultData})(Im||(Im={}));var Mm;(r=>r.defaultData={type:"Component",...Dt.defaultData})(Mm||(Mm={}));var Co;(r=>r.defaultData={type:"Mesh",...Dt.defaultData,...za.defaultData})(Co||(Co={}));var In;(r=>r.defaultData={...Dt.defaultData,...Nn.identity,...Ao.defaultData})(In||(In={}));var Em;(r=>{function n(e){return{...Dt.defaultData,...Va.defaultData(e)}}r.defaultData=n})(Em||(Em={}));var Mn;(e=>{function n(t,o,i=0){for(;i<o.length;){let s=t?t[o[i]]:void 0;if(o.length===i+1)return s;if(s)t=s.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let s=n(t,o,i);if(s){let l=Object.keys(s);if(l.length===1&&l[0]==="descendants")return}return s}e.resolve=r})(Mn||(Mn={}));var co;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Dt.defaultData,...l,component:s,overrides:new Le,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=Nn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(co||(co={}));var Lm;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:ao.identity,name:"Play Camera",visible:!0,raycastLock:!1,collision:"visibility",physics:null,states:new he,events:new he,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Ao.defaultData},i.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},i.defaultMeshObject={name:"Rectangle",...Dt.defaultData,...Co.defaultData,geometry:lo.defaultData("RectangleGeometry"),material:_t.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Dt.defaultData,...Co.defaultData,geometry:lo.defaultData("BooleanGeometry"),material:_t.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Dt.defaultData,...Co.defaultData,geometry:lo.defaultData("TextGeometry"),material:_t.defaultTwoLayerData("phong","layer1","layer2")}))(Lm||(Lm={}));var No;(o=>{function n(i,s){let l={name:s};return i.type==="Mesh"?(l.geometry={},"material"in i&&(l.material={layers:new Le}),"materials"in i&&(l.materials=i.materials.map(c=>({layers:new Le})))):Yt.is(i.type)&&(l.perspective={},l.orthographic={}),l}o.newEmpty=n;function r(i,s){if(s===void 0)return i;let l={...i};return"material"in l&&"material"in s&&s.material&&(l.material=Tn(l.material,c=>{if(typeof c!="string")for(let[u,a]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&yt.patch(d,a)}}).data),l.materials&&s.materials&&(l.materials=Tn(l.materials,c=>{for(let u=0;u<l.materials.length;u++){let a=s.materials[u];if(typeof a!="string")for(let[d,p]of Object.entries(a.layers)){let f=c[u]?.layers?.data(d);f&&yt.patch(f,p)}}}).data),l}function e(i,s){let l,c=[],u={orthographic:0,perspective:0,geometry:0};function a(d,p){for(let[f,m]of Object.entries(p.layers)){let{texture:h,...y}=m;if(h!==void 0&&Object.keys(h).length>0){let g={path:[...d,"layers",f,"texture"],props:h,type:0};c.push(g)}if(Object.keys(y).length>0){let g={path:[...d,"layers",f],props:y,type:0};c.push(g)}}}for(let[d,p]of Object.entries(s))if(d!=="name")if(d==="cloner")c.push(...Ga.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")a(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))a(["materials",f],m);else if(u[d]===0){if(d==="geometry"&&p.extrusion!==void 0){let f={path:[d,"extrusion"],props:p.extrusion,type:0};c.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[d],props:p,type:0};c.push(f)}}else l===void 0&&(l={path:[],props:{},type:0},c.push(l)),l.props[d]=p;return c}o.toOps=e;function t(i,s){if(s===void 0)return i;let l={...i};if(Object.assign(l,Nn.merge(l,s)),Object.assign(l,{pathSnapping:Object.assign({},l.pathSnapping,{slide:s.pathSnapping?.slide??l.pathSnapping?.slide??0,offset:s.pathSnapping?.offset??l.pathSnapping?.offset??0})}),Yt.is(i.type)){l.orthographic={...l.orthographic},l.perspective={...l.perspective};let c=s;c.orthographic?.zoom!==void 0&&(l.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(l.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(l.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(l.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in s&&Object.assign(l,{geometry:ka.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:br.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:br.merge(l.cloner,s.cloner)});else if(Ra.is(i.type)){let c=s;c.intensity!==void 0&&(l.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?l.color=c.color:l.color=pt.clone(c.color))}return l}o.patch=t})(No||(No={}));var En;(r=>r.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,autoZoom:!1})(En||(En={}));var Ua;(r=>r.defaultData={orbitControls:En.defaultData,playCamera:null,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,joystickSizeAndXYOffset:Array(12).fill(0).map((e,t)=>{let o=0,i=0;return t<5?i=-30:t<10&&(i=30),t===0||t===10||t===5?o=30:(t===4||t===11||t===9)&&(o=-30),[120,[o,i],"show"]}),gameControlObject:null,hdTransmission:!1})(Ua||(Ua={}));var Ln;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Ln||(Ln={}));var Ha;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Gr(o,Ne.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Ln.emptyImage,name:"AI generated image"}),Gr(i,Ne.prototype)}t.defaultImages=r;function e(){return{materials:new Ne,images:new Ne,videos:new Ne,colors:new Ne,audios:new Ne,fonts:new Ne,penumbraSize:[2,2,2]}}t.emptyData=e})(Ha||(Ha={}));import{MathUtils as qa}from"three";var Wa;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",speedTranslate:1e3,speedRotate:100,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new he,move:new he,jump:new he},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Bt.fromHexAndA(3728051,1)}}))(Wa||(Wa={}));function Bm(n){n.layers.forEach(r=>{if(r.type==="depth"&&r.colorA!==void 0){let e=r.colorA,t=r.colorB,o=[[e.r,e.g,e.b,e.a],[t.r,t.g,t.b,t.a]],i=[0,1];for(let l=2;l<10;l++)o.push(o[1]),i.push(1);let s={...gn(Ze(r),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,r.near),far:Math.max(0,r.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(r,s)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Ze(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Ki(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Zi(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach(o=>{typeof o!="string"&&r(o)}):"material"in t&&typeof t.material!="string"&&r(t.material)})}function Bw(n){Object.assign(n.scene.publish,{orbitControls:{...En.defaultData,...Ze(n.scene.publish.orbitControls)}})}function Dw(n){Object.assign(n.scene.publish.settings,{video:{...Ua.defaultData.settings.video,...Ze(n.scene.publish.settings.video)}})}function Gw(n){function r(e){if(e.layers){for(let t of Object.values(e.layers))if(t){for(let[o,i]of Object.entries(t))if((Om.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Am.includes(s)||typeof l=="boolean")&&delete i[s]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(s=>{r(s)})})})}function Rw(n){n.scene.publish.withBackground=!0}function Vw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function zw(n){n.scene.objects.traverse((r,e)=>{let t=e.cloner;t&&(t.radial.scale=t.radial.scale.map(o=>o+1),t.linear.scale=t.linear.scale.map(o=>o+1))})}function Fw(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&(t.type==="DodecahedronGeometry"||t.type==="IcosahedronGeometry")&&(t.detail=Math.round(t.detail))})}function jw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Ze(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ze(e).booleanExclude!==!0)}})}function kw(n){n.scene.objects.traverse((r,e)=>{if(e.type==="Mesh"){let t=e;e.geometry.type==="NonParametricGeometry"?t.material!==void 0&&delete t.material:t.materials!==void 0&&delete t.materials}})}function Uw(n){function r(t){Object.setPrototypeOf(t,Le.prototype),t.texture&&Object.setPrototypeOf(t.texture,Le.prototype)}function e(t){Object.setPrototypeOf(t,Le.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let s=i;if(s.material){let l=Ze(s.material).layers;e(l),s.material.layers=l}if(s.materials)for(let l=0;l<s.materials.length;l++){let c=s.materials[l],u=Ze(c).layers;e(u),c.layers=u}})})}function Dm(n){n.layers===void 0&&Object.assign(n,_t.defaultTwoLayerData("lambert"))}function _c(n){!n.layers||n.layers.forEach(r=>{if(r.type==="depth"&&r.colors.length===10){let e=[...r.colors];e.push(r.colors[9]);let t=[...r.steps];t.push(r.steps[9]);let o={...Ze(r),colors:e,steps:t};Object.assign(r,o)}})}function Hw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Gm(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&_c(t)}):"material"in e&&typeof e.material!="string"&&_c(e.material)}),Object.values(n.shared.materials).forEach(r=>_c(r))}function Ww(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((r,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 qw(n){n.shared.audios=Gr({},Ne.prototype)}function $w(n){n.shared.videos=Gr({},Ne.prototype)}function Xw(n){let r=n.shared.materials;Object.entries(r).forEach(([e,t])=>{if(!t.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(r,{[e]:o})}})}function Yw(n){Object.entries(Ze(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Ze(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function Kw(n){n.scene.publish.settings.web.preload=!1}function Rm(n){n.layers&&n.layers.forEach(r=>{r.type==="depth"&&r.num!==void 0&&(r.colors=r.colors.slice(0,r.num),r.steps=r.steps.slice(0,r.num),delete r.num)})}function Vm(n){n.layers&&n.layers.forEach(r=>{Pm(r)&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle=0,r.highCut=1,r.lowCut=0,r.smoothness=.3,r.seed=0,r.quality=1)})}function Zw(n){n.shared.fonts=Gr({},Ne.prototype)}function Qw(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 Jw(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=_t.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=Qw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Dt.defaultData,...Co.defaultData,flatShading:!1,wireframe:!1,geometry:{...lo.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:Ze(o.states),events:Ze(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Ze(n.scene.objects).parent(e);n.scene.objects.insertAfter(u??null,e,[{id:e+"new",data:c,children:[]}]),r.push(e)}}),r.forEach(e=>{n.scene.objects.delete(e)})}function e_(n){let r={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,t)=>{t.events.forEach(o=>{if(!!r[Number(o.type)])if(Object.assign(o,{type:r[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:qa.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,gn(s,"mass","stiffness","damping","velocity")):s.easing===5&&Object.assign(a,{control1:{...s.control1},control2:{...s.control2}});let d={repeat:s.repeat?-1:0,delay:s.delay,delayDirection:s.delayDirection,direction:s.cycle&&s.rewind?"pingpong-rewind":s.cycle?"pingpong":"normal"},p={state:s.state,...d,...a},f={allowSlerp:!0,type:"Transition",object:s.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new he({fi:0,id:qa.generateUUID(),data:u},{fi:1,id:qa.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function t_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let s=new he,l=[];if(e.events.forEach((c,u,a)=>{if(c.type==="Audio"&&c.trigger===i){let d;l.push(u),c.interaction==="play"?d={...gn(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")&&(d={...gn(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&s.push({fi:a,id:u,data:d})}}),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:qa.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function zm(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=yt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Fm(n){Ki(n,zm),Zi(n,zm)}function r_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function o_(n){n.scene.objects.traverse((r,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"}})})}function n_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=_t.defaultTwoLayerData("phong"))})}function i_(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((r,e)=>{(e.type==="OrthographicCamera"||e.type==="PerspectiveCamera")&&(e.orthographic.autoZoom===void 0&&(e.orthographic.autoZoom=!1),e.orthographic.autoZoomFrustumSize===void 0&&(e.orthographic.autoZoomFrustumSize=790))})}function s_(n){n.scene.objects.traverse((r,e)=>{e.pathSnapping===void 0&&(e.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),e.pathSnapping.offset===void 0&&(e.pathSnapping.offset=0)})}function a_(n){n.scene.publish.mouseEventTarget===void 0&&(n.scene.publish.mouseEventTarget="canvas"),n.scene.publish.settings.web.hint===void 0&&(n.scene.publish.settings.web.hint=!1)}function l_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function c_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function d_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function u_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Wa.defaultDataThirdPerson.navmesh)})})}var jm=39;function km(n){let r=n.schema??0;r!==jm&&(console.warn("updating from ",r,"to ",jm),r<1&&(Zi(n,Bm),Ki(n,Bm),n.schema=1),r<2&&(Bw(n),n.schema=2),r<3&&(Gw(n),n.schema=3),r<4&&(Rw(n),n.schema=4),r<5&&(Vw(n),n.schema=5),r<6&&(zw(n),n.schema=6),r<7&&(Fw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Gm(n),n.schema=9),r<10&&(Hw(n),n.schema=10),r<11&&(Ww(n),n.schema=11),r<12&&(Gm(n),n.schema=12),r<13&&(qw(n),n.schema=13),r<14&&(Xw(n),n.schema=14),r<15&&(Yw(n),n.schema=15),r<16&&(Kw(n),n.schema=16),r<17&&(Zi(n,Rm),Ki(n,Rm),n.schema=17),r<18&&(Zi(n,Dm),Ki(n,Dm),n.schema=18),r<19&&(Dw(n),n.schema=19),r<20&&(Zw(n),Jw(n),n.schema=20),r<21&&(e_(n),t_(n),n.schema=21),r<22&&(Fm(n),n.schema=22),r<23&&(r_(n),n.schema=23),r<24&&(o_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&($w(n),r<25&&(n.schema=25)),r<26&&(jw(n),n.schema=26),r<27&&(kw(n),n.schema=27),r<28&&(Fm(n),n.schema=28),r<29&&(Uw(n),n.schema=29),r<30&&(n_(n),n.schema=30),r<31&&(i_(n),n.schema=31),r<33&&(s_(n),n.schema=33),r<34&&(a_(n),n.schema=34),r<35&&(l_(n),n.schema=35),r<36&&(c_(n),n.schema=36),r<37&&(d_(n),n.schema=37),r<38&&(Zi(n,Vm),Ki(n,Vm),n.schema=38),r<39&&(u_(n),n.schema=39))}var Ai=Ws(Hm());import{Object3D as DO,Vector3 as Vt,Euler as tu,MathUtils as og,Matrix4 as qo}from"three";var p_=.5*(Math.sqrt(3)-1),Ji=(3-Math.sqrt(3))/6,f_=1/3,Sr=1/6,CR=(Math.sqrt(5)-1)/4,NR=(5-Math.sqrt(5))/20,es=n=>Math.floor(n)|0,Wm=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]),Pc=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 $a(n=Math.random){let r=$m(n),e=new Float64Array(r).map(o=>Wm[o%12*2]),t=new Float64Array(r).map(o=>Wm[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*p_,d=es(i+a),p=es(s+a),f=(d+p)*Ji,m=d-f,h=p-f,y=i-m,g=s-h,v,b;y>g?(v=1,b=0):(v=0,b=1);let w=y-v+Ji,S=g-b+Ji,T=y-1+2*Ji,_=g-1+2*Ji,x=d&255,N=p&255,P=.5-y*y-g*g;if(P>=0){let A=x+r[N],R=e[A],k=t[A];P*=P,l=P*P*(R*y+k*g)}let C=.5-w*w-S*S;if(C>=0){let A=x+v+r[N+b],R=e[A],k=t[A];C*=C,c=C*C*(R*w+k*S)}let O=.5-T*T-_*_;if(O>=0){let A=x+1+r[N+1],R=e[A],k=t[A];O*=O,u=O*O*(R*T+k*_)}return 70*(l+c+u)}}function qm(n=Math.random){let r=$m(n),e=new Float64Array(r).map(i=>Pc[i%12*3]),t=new Float64Array(r).map(i=>Pc[i%12*3+1]),o=new Float64Array(r).map(i=>Pc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*f_,m=es(s+f),h=es(l+f),y=es(c+f),g=(m+h+y)*Sr,v=m-g,b=h-g,w=y-g,S=s-v,T=l-b,_=c-w,x,N,P,C,O,A;S>=T?T>=_?(x=1,N=0,P=0,C=1,O=1,A=0):S>=_?(x=1,N=0,P=0,C=1,O=0,A=1):(x=0,N=0,P=1,C=1,O=0,A=1):T<_?(x=0,N=0,P=1,C=0,O=1,A=1):S<_?(x=0,N=1,P=0,C=0,O=1,A=1):(x=0,N=1,P=0,C=1,O=1,A=0);let R=S-x+Sr,k=T-N+Sr,$=_-P+Sr,te=S-C+2*Sr,X=T-O+2*Sr,q=_-A+2*Sr,H=S-1+3*Sr,V=T-1+3*Sr,G=_-1+3*Sr,B=m&255,L=h&255,D=y&255,Y=.6-S*S-T*T-_*_;if(Y<0)u=0;else{let M=B+r[L+r[D]];Y*=Y,u=Y*Y*(e[M]*S+t[M]*T+o[M]*_)}let W=.6-R*R-k*k-$*$;if(W<0)a=0;else{let M=B+x+r[L+N+r[D+P]];W*=W,a=W*W*(e[M]*R+t[M]*k+o[M]*$)}let F=.6-te*te-X*X-q*q;if(F<0)d=0;else{let M=B+C+r[L+O+r[D+A]];F*=F,d=F*F*(e[M]*te+t[M]*X+o[M]*q)}let j=.6-H*H-V*V-G*G;if(j<0)p=0;else{let M=B+1+r[L+1+r[D+1]];j*=j,p=j*j*(e[M]*H+t[M]*V+o[M]*G)}return 32*(u+a+d+p)}}function $m(n){let e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let o=t+~~(n()*(256-t)),i=e[t];e[t]=e[o],e[o]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}import{Triangle as m_}from"three";var Zt=new m_,Xa=class{constructor(r){this.weightAttribute=null;let e=r.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 r=this.positionAttribute,e=new Float32Array(r.count/3);for(let o=0;o<r.count;o+=3){let i=1;Zt.a.fromBufferAttribute(r,o),Zt.b.fromBufferAttribute(r,o+1),Zt.c.fromBufferAttribute(r,o+2),i*=Zt.getArea(),e[o/3]=i}this.distribution=new Float32Array(r.count/3);let t=0;for(let o=0;o<e.length;o++)t+=e[o],this.distribution[o]=t;return this}setRandomGenerator(r){return this.randomFunction=r,this}sample(r,e){if(this.distribution){let t=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*t);return this.sampleFace(o,r,e)}}binarySearch(r){if(!this.distribution)return 0;let e=this.distribution,t=0,o=e.length-1,i=-1;for(;t<=o;){let s=Math.ceil((t+o)/2);if(s===0||e[s-1]<=r&&e[s]>r){i=s;break}else r<e[s]?o=s-1:t=s+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Zt.a.fromBufferAttribute(this.positionAttribute,r*3),Zt.b.fromBufferAttribute(this.positionAttribute,r*3+1),Zt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Zt.a,o).addScaledVector(Zt.b,i).addScaledVector(Zt.c,1-(o+i)),Zt.getNormal(t),this}};import{Object3D as v_}from"three";var Km=Ws(Ym());import{Object3D as h_,Matrix4 as Hr}from"three";var y_=new Hr,g_=new Hr,x_=new Hr,ts;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(ts||(ts={}));var Bn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new Hr;this.matrixWorldRigid=new Hr;this.shearScale=new Hr;this.shearScaleInv=new Hr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof h_&&(t=t.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===t)return!0;o=o.parent}return!1}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(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,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let i=this.parent;if(t&&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)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let s of this.children)ts.is(s)&&s.traverseObject(t,o+1)}updateMatrixWorldSVD(){let t=this.matrixWorld.elements,o=[[t[0],t[4],t[8]],[t[1],t[5],t[9]],[t[2],t[6],t[10]]],{u:i,v:s,q:l}=(0,Km.SVD)(o),c=y_.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=g_.set(s[0][0],s[0][1],s[0][2],0,s[1][0],s[1][1],s[1][2],0,s[2][0],s[2][1],s[2][2],0,0,0,0,1),a=x_.copy(u).transpose();this.shearScale.makeScale(l[0],l[1],l[2]).multiply(a).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,a).copyPosition(this.matrixWorld),l.every(d=>Math.abs(l[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new Hr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Hr?t.hiddenMatrix.premultiply(i):t.applyMatrix4(i),t.updateWorldMatrix(!1,!1),this.add(t),o!==void 0&&(this.children.pop(),this.children.splice(o,0,t)),this}copy(t,o=!1){return super.copy(t,o),this.hasNonUniformScale=t.hasNonUniformScale,this}};var Oc=class extends Bn(v_){},b_=n=>n.type==="Mesh",Wr=class extends Oc{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,t){}expand(){let e=0,t=this.object.entityChildren(e);for(;t;){let o=this.children[e];o?.object!==t&&(o&&this.remove(o),o=new Wr(t),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=t.matrix,o.hiddenMatrix=t.hiddenMatrix),o.expand(),e+=1,t=this.object.entityChildren(e)}for(;this.children.length>e;)this.remove(this.children[e])}get visible(){return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&this.object.dataPatched.cloner?.hideBase===!0}set visible(e){}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return b_(this.object)}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}};import{Box3 as lP,BufferGeometry as cP,MeshBasicMaterial as dP}from"three";import{Matrix4 as sP,Mesh as aP}from"three";import{Matrix4 as Za,Vector3 as O_,Euler as A_}from"three";import{Box3 as S_,Line3 as w_,Matrix4 as Ac,Vector3 as Gt}from"three";var Io=new Gt,Mo=new Gt,Dn=new Ac,Qm=[new Gt(-1,1,1),new Gt(-1,-1,1),new Gt(1,-1,1),new Gt(1,1,1),new Gt(-1,1,-1),new Gt(-1,-1,-1),new Gt(1,-1,-1),new Gt(1,1,-1)],__=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],T_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Zm=(n,r,e)=>{n.updateEntityBoxSize(Io,Mo),Dn.copy(r).multiply(n.matrixWorld),Mo.x===0&&Mo.y===0&&Mo.z===0?e.push(new Gt(Io.x,Io.y,Io.z).applyMatrix4(Dn)):Qm.forEach(t=>{e.push(t.clone().multiply(Mo).add(Io).applyMatrix4(Dn))})},rs=class extends S_{constructor(){super(...arguments);this.matrix=new Ac;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Ac().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{if(s.visible||s.cloner&&s.data.visible){if(!("geometry"in s)){i.push(new Gt);return}Zm(s,t,i)}}):Zm(e,t,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(Dn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Mo).multiplyScalar(.5),this.getCenter(Io),Dn.copy(this.matrix).setPosition(Io),this.vertices=Qm.map(e=>e.clone().multiply(Mo).applyMatrix4(Dn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=__.map(([e,t])=>new w_(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Gt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=T_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Qt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as P_,CubicBezierCurve3 as Cc,Vector3 as Jt}from"three";var Ic=class extends P_{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),s=o[o.length-1]/o.length;for(let l=0,c=this.curves;l<c.length;l++){let u=c[l],a=l===0?o[l]:o[l]-o[l-1],d=Math.ceil(r*a/s),p=u.getPoints(d);for(let f=0;f<p.length;f++){let m=p[f];t&&t.equals(m)||(e.push(m),t=m)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var Mc=.001;function Ec(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Mc}function Nc(n,r){let e=new Jt(...n.position),t=new Jt(...n.controlNext.position),o=new Jt(...r.controlPrevious.position),i=new Jt(...r.position);return Ec(e,t,i)&&Ec(e,o,i)}function Ka(n){let r=n.points.map(a=>new Jt(...a.data.position)),e=[n.points[0]],t=new Jt(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)Ec(t,r[a],r[a+1])||(e.push(n.points[a]),t=r[a]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),s=e.length,l=[];for(let a=0;a<s;a++){let d=e[a].data,p=new Jt(...d.position),f=new Jt(...d.controlPrevious.position),m=new Jt(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(a===0||a===s-1)){l[a]={...h,removedLength:0};continue}let y=o&&a==0?s-1:a-1,g=o&&a==s-1?0:a+1,v=e[y].data,b=e[g].data,w=new Jt(...v.position),S=new Jt(...b.position),T=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=Nc(v,d),N=Nc(d,b);if(!x||!N)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),C=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:C,removedLength:d.roundness/C}}}for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p];if(f.removedLength!==0||m.removedLength!==0){let h=f.position.distanceTo(m.position);f.removedLength=Math.min(f.removedLength,h/2),m.removedLength=Math.min(m.removedLength,h/2)}}let c=[];for(let a=0;a<i;a++){let d=a,p=o&&a===s-1?0:a+1,f=l[d],m=l[p],h=null;if(!Nc(e[d].data,e[p].data))f.position.distanceTo(m.position)>Mc&&(h=new Cc(f.position,f.controlNext,m.controlPrevious,m.position));else{let y=f.position.clone(),g=m.position.clone();(f.removedLength!==0||m.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),m.prevDir&&g.add(m.prevDir.clone().setLength(m.removedLength))),y.distanceTo(g)>Mc&&(h=new Cc(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*a+1]=h}for(let a=0;a<s;a++){let d=l[a];if(d.removedLength===0){c[2*a]=null;continue}let p=d.position,f=d.prevDir.clone().multiplyScalar(d.removedLength).add(p),m=d.nextDir.clone().multiplyScalar(d.removedLength).add(p),h=d.tan*d.removedLength,y=d.prevDir.clone().add(d.nextDir).normalize(),g=f.clone().lerp(m,.5),v=f.distanceTo(m)/2,b=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(v,2))).add(g),w=y.clone().multiplyScalar(-h).add(b),S=p.distanceTo(w)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(S*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),x=f.clone().lerp(T,4/3),N=m.clone().lerp(_,4/3);c[2*a]=new Cc(f,x,N,m)}let u=new Ic;return c.forEach(a=>{a&&u.add(a)}),u}var Ce;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Ce||(Ce={}));var os=n=>Ce.is(n),C_={type:"completeState",isfromEntity:!0},Qa=n=>class extends Bn(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new rs;this._recursiveBBox=new rs;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(t){let o=this.children[t];if(Ce.is(o))return o}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let t=this;for(;t.data.type!=="Instance";){let o=t.parent;if(Ce.is(o))t=o;else return}return t}forInstancesRec(t){this.instances.forEach(o=>{o.disposed||t(o),o.forInstancesRec(t)})}super_Entity(t,o){typeof t=="string"&&(this.uuid=t),this.identity=t,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(t,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let s of this.data.states)No.toOps(this.data,s.data).forEach(c=>{let u=ba.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let s=this.data.states.data(t);s&&(this.dataPatched=No.patch(this.data,s),No.toOps(this.data,s).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched),this.stateSelection=t,this.updatePathSnapping(this.dataPatched.pathSnapping)}}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}updateEntityBoxSize(t,o){t.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(t=>{os(t)&&t.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(t=>{t.resetBBoxNeedsUpdateSelf()})}find(t){let o;return this.traverseEntity(i=>{i.uuid===t&&(o=i)}),o}traverseSortNextHelper(){let t=this.parent;if(t){let o=t.children,i=o.indexOf(this)+1;if(Ce.is(o[i]))return o[i];if(Ce.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ce.is(this.children[0])?t[0]:this.traverseSortNextHelper()}goUp(t){let o=this;for(;t>0&&o!==null;)o=o.parent,t-=1;return o}hasAnccestorOrSelf(t){return this===t||this.hasAnccestor(t)}hasAnccestor(t){let o=this.parent;for(;o;){if(t===o)return!0;o=o.parent}return!1}countToAccestor(t){let o=0,i=this;for(;i!==t;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(t){for(let o of this.children)os(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Ce.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)os(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)os(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}copy(t,o=!1){return super.copy(t,o),this.dataPatched=t.dataPatched,this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),this}hasEntityChild(){return this.children.some(t=>os(t))}isAncestorOf(t){if(this.uuid===t)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===t&&(o=!0)}),o}toObjectTransformState(t=[]){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 yn(o,t)}updateTransformState(t){let o=!1;return t.position&&(this.position.fromArray(t.position),o=!0),t.rotation&&(this.rotation.fromArray(t.rotation),o=!0),t.scale&&(o=!0,this.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&(o=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??ao.identity)),o&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),o}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Ce.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ce.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return yn(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=Xt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[a]=u;if(this?.stateSelection===a){let d={...t.props};if(Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=mt.zoom(p,t.path.slice(2));if(f)for(let m in t.props)t.props[m]===void 0&&m in f&&(d[m]=f[m])}}c={...t,props:d,path:t.path.slice(2)}}}}else if(t.type===0){let a=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(a!==void 0){if(t.props.name!==void 0&&a.name){let{name:p,...f}=a;a=f}if(t.props.material!==void 0&&"material"in a){let{material:p,...f}=a;a=f}let d=mt.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,No.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Xt(t.path,["overrides"])){let a=[],d=[...t.path];for(a.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)a.push(d[1]),d.splice(0,2);if(a[a.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){a[a.length-1]=p;let f=i.scene.findInstance([this.uuid,...a]);f&&(f.overrideData=t.props[p],f.updateState(kr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=mt.zoom(p.component.data,d);if(t={...t,path:d},t.type===0){let m=t.props;if(f)for(let[h,y]of Object.entries(t.props))y===void 0&&(m===t.props&&(m={...t.props}),m[h]=f[h]);t={...t,props:m}}p.overrideData=Mn.resolve(o.overrides,a),p.updateByOp(t,st.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let a;if(t.path.length===0&&t.type===0){let d;for(let p of co.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of co.rootOverrideProps)if(Xt(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=kr.filterOp(d.overrideData,a);p&&d.updateByOp(p,st.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=kr.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=st.applySimple(d.data,p),d.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(t,o,i){if(this.dataPatched=o,t.path.length===0&&t.type===0)t.props.type!==void 0&&!Yt.is(t.props.type)&&Qt.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Qt.changeEntityProptotype(this,o,i);for(let s of this.children)Ce.is(s)&&s.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Xt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Xt(t.path,["cloner"])!==null){let s=st.drop(t,1);s.path.length===0&&s.type===0&&s.props.disabled===!0?this.setFromClonerState(null,i):this.cloner?this.cloner.updateState(o.cloner,i.scene):(this.setFromClonerState(o.cloner,i),this.expandCloner(i.scene)),this.updateVisible()}}updatePathSnapping(t){this._updatedPathSnapping=t,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(t){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,s=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset,l=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let c=t.find(o);if(!c||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let u=c.data,a=Ka(u.geometry.path),d=(i+s)%1;i+s===1&&d===0&&(d=1);let p=a.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new Za;c.updateMatrixWorld();let m=new Za().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(l==="tangential"){let y=new Za().extractRotation(c.matrixWorld),g=a.getTangentAt(d).applyMatrix4(y).add(p),v=new Za().lookAt(p,g,new O_(0,1,0)),b=new A_().setFromRotationMatrix(v);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(C_)})}updateVisible(){this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0)}updateState_Entity(t,o){t.name!==void 0&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Qt.Cloner&&t.parameters.type==="toObject")}setFromClonerState(t,o){this.disposed||(t===null||t.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Qt.Cloner(this,t),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(t,o.scene))}expandCloner(t){!this.disposed&&this.cloner&&this.cloner.expandClones(t)}invalidateClonerTransform(t){this.cloner&&this.cloner.invalidateTransform(t)}};import{ConeGeometry as M_}from"three";import{BufferGeometry as N_,CylinderGeometry as I_,Float32BufferAttribute as Lc,Vector2 as er,Vector3 as Ja}from"three";var eh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters),t=e.width/2,o=e.radiusTop??t,i=e.radiusBottom??t;return o===i?(o=t,i=t):o>i?(o=t,i=i*t/o):(o=o*t/i,i=t),{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:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,radiusTop:u,radiusBottom:a,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return d||f?m=new ns(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new I_(u,a,t,o,i,s,l,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function uo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Jm(n){return new er(n.y,-n.x)}var ns=class extends N_{constructor(r,e,t,o,i,s,l,c,u,a,d,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||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=[],y=[],g=[],v=0,b=t/2,w=new Ja,S=new Ja;f&&r==0&&(r=u),f&&e==0&&(e=a);let T=new er(r,b),_=new er(e,-b),x=null,N=null,P=null,C=null,O=T.clone().sub(_),A=0,R=0,k=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,k=e-A);let $=T.clone();$.x-=A;let te=Math.PI-O.angle(),X=O.angle(),q=Math.tan(X/2),H=Math.tan(te/2),V=q+H,G=p?V:H,B=p?V:q;if(u=Math.min(u,(r-R)/G,O.length()/V),a=Math.min(a,(e-k)/B,O.length()/V),u>0){let j=u/q;x=T.clone().sub(new er(j,u)),p&&(P=x.clone(),P.x-=A-V*u),T.sub(O.clone().setLength(j))}if(a>0){let j=a/H;N=_.clone().sub(new er(j,-a)),_.add(O.clone().setLength(j)),p&&(C=N.clone(),C.x-=A-V*a,$.sub(O.clone().setLength(j)))}O=T.clone().sub(_);let L=O.length()<.5,D=[];for(let j=0;j<=o;j++){let M=[],Q=j/o,re=Q*c+l,oe=new er(Math.sin(re),Math.cos(re));C&&N?(Y(M,Q,oe,te,a,C,-1,!0),Y(M,Q,oe,X,a,N,-1,!1)):N?(W(M,oe,N.x,0,-1),Y(M,Q,oe,X,a,N,-1,!1)):s||W(M,oe,e,k,-1);let K=Jm(O).normalize();if(uo(K,oe,w),!L)for(let ee=0;ee<=i;ee++){let J=ee/i,ie=O.clone().multiplyScalar(J).add(_);uo(ie,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(v++)}if(P&&x?(Y(M,Q,oe,te,u,x,1,!1),Y(M,Q,oe,X,u,P,1,!0)):x?(Y(M,Q,oe,te,u,x,1,!1),W(M,oe,x.x,0,1)):s||W(M,oe,r,R,1),p&&!L){let ee=Jm(O).multiplyScalar(-1).normalize();uo(ee,oe,w);for(let J=0;J<=i;J++){let ie=J/i,ce=O.clone().multiplyScalar(-ie).add($);uo(ce,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(Q,.5+S.y/t),M.push(v++)}}p&&!s&&M.push(M[0]),D.push(M)}for(let j=0;j<D.length-1;j++)for(let M=0;M<D[0].length-1;M++){if(s&&p&&M==i)continue;let Q=D[j][M],re=D[j+1][M],oe=D[j+1][M+1],K=D[j][M+1],ee=h[oe*3+0],J=h[oe*3+2];m.push(Q,re,K),(ee!=0||J!=0)&&m.push(re,oe,K)}c<Math.PI*2&&(F(-1,D[0],l),F(1,D[D.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Lc(h,3)),this.setAttribute("normal",new Lc(y,3)),this.setAttribute("uv",new Lc(g,2));function Y(j,M,Q,re,oe,K,ee,J){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=ee<0?ce:1-ce;J&&(se-=1),se*=re;let fe=new er(Math.sin(se),Math.cos(se)*ee),Ge=fe.clone().multiplyScalar(oe).add(K);uo(Ge,Q,S),h.push(S.x,S.y,S.z),uo(fe,Q,w),y.push(w.x,w.y,w.z),g.push(M,.5+S.y/t),j.push(v++)}}function W(j,M,Q,re,oe){let K=new Ja,ee=new er,J=[Q,re];oe<0&&J.reverse();for(let ie of J)ee.set(ie,b*oe),uo(ee,M,K),h.push(K.x,K.y,K.z),y.push(0,oe,0),g.push(.5,.5),j.push(v++)}function F(j,M,Q){let re=new er(Math.sin(Q),Math.cos(Q)),oe=new er(-Math.cos(Q),Math.sin(Q)),K=new Ja,ee=j<0?(ce,se,fe)=>m.push(ce,se,fe):(ce,se,fe)=>m.push(ce,fe,se),J=new er((r+e+R+k)/4,0);uo(J,re,K),h.push(K.x,K.y,K.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let ie=v++;for(let ce of M){let se=h.slice(ce*3,ce*3+3);h.push(...se),y.push(oe.x,0,oe.y);let fe=g.slice(ce*2,ce*2+2);g.push(...fe),v++}for(let ce=ie+1;ce<v-1;ce++)ee(ie,ce,ce+1);ee(ie,v-1,ie+1)}}};var th=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,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:r,depth:e,height:t,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:l,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:a,cornerSegments:d}=n.parameters,p;return u>0||a>0||c<360?p=new ns(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new M_(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as E_,BufferGeometry as L_,Float32BufferAttribute as Bc,Vector3 as is}from"three";var rh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,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:r,height:e,depth:t,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:l,cornerSegments:c}=n.parameters,u;return l==0?u=new E_(r,e,t,o,i,s):u=new Gc(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Dc=Math.PI/2,Gc=class extends L_{constructor(r=1,e=1,t=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,r/2,e/2,t/2);let a=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,s,i,0),y("z","y","x",1,-1,t,e,-r,s,i,1),y("x","z","y",1,1,r,t,e,o,s,2),y("x","z","y",1,-1,r,t,-e,o,s,3),y("x","y","z",1,-1,r,e,t,o,i,4),y("x","y","z",-1,-1,r,e,-t,o,i,5),l>0&&(g("z","y","x",-1,-1,1,t,e,r,s,0),g("z","y","x",1,-1,-1,t,e,r,s,1),g("z","y","x",-1,1,-1,t,e,r,s,1),g("z","y","x",1,1,1,t,e,r,s,0),g("x","y","z",-1,-1,-1,r,e,t,o,0),g("x","y","z",1,-1,1,r,e,t,o,1),g("x","y","z",-1,1,1,r,e,t,o,0),g("x","y","z",1,1,-1,r,e,t,o,1),g("y","x","z",-1,-1,1,e,r,t,i,0),g("y","x","z",1,-1,-1,e,r,t,i,1),g("y","x","z",1,1,1,e,r,t,i,1),g("y","x","z",-1,1,-1,e,r,t,i,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new Bc(d,3)),this.setAttribute("normal",new Bc(p,3)),this.setAttribute("uv",new Bc(f,2));function y(b,w,S,T,_,x,N,P,C,O,A){let R=(x-2*l)/C,k=(N-2*l)/O,$=x/2-l,te=N/2-l,X=P/2,q=C+1,H=O+1,V=0,G=0,B=new is;for(let L=0;L<H;L++){let D=L*k-te;for(let Y=0;Y<q;Y++){let W=Y*R-$;B[b]=W*T,B[w]=D*_,B[S]=X,d.push(B.x,B.y,B.z),B[b]=0,B[w]=0,B[S]=P>0?1:-1,p.push(B.x,B.y,B.z),f.push(Y/C),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let D=0;D<C;D++){let Y=m+D+q*L,W=m+D+q*(L+1),F=m+(D+1)+q*(L+1),j=m+(D+1)+q*L;a.push(Y,W,j),a.push(W,F,j),G+=6}u.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,T,_,x,N,P,C,O,A){let R=(N-2*l)/O,k=N/2-l,$=P/2-l,te=C/2,X=O+1,q=0,H=0,V=new is,G=new is;for(let B=0;B<c+1;B++){let L=B/c*Dc,D=Math.sin(L)*l,Y=(1-Math.cos(L))*l,W=Math.sin(L),F=Math.cos(L);V[w]=($+D)*_,V[S]=(te-Y)*x,G[b]=0,G[w]=W*Math.sign(V[w]),G[S]=F*Math.sign(V[S]);for(let j=0;j<X;j++){let M=j*R-k;V[b]=M*T,d.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(j/O),f.push(0),q+=1}}for(let B=0;B<c;B++)for(let L=0;L<O;L++){let D=m+L+X*B,Y=m+L+X*(B+1),W=m+(L+1)+X*(B+1),F=m+(L+1)+X*B;a.push(D,Y,F),a.push(Y,W,F),H+=6}u.addGroup(h,H,A),h+=H,m+=q}function v(b,w,S){let T=new is,_=new is(r/2,e/2,t/2);_.subScalar(l);let x=[],N=b*w*S>0?(C,O,A)=>a.push(C,O,A):(C,O,A)=>a.push(C,A,O);for(let C=0;C<=c;C++){let O=[],A=Dc*(1-C/c),R=Math.cos(A),k=Math.sin(A),$=0;for(let te=0;te<=C;te++){let X=Math.cos($),q=Math.sin($);T.x=R*X,T.y=k,T.z=R*q;let H=_.clone().addScaledVector(T,l);d.push(b*H.x,w*H.y,S*H.z),p.push(b*T.x,w*T.y,S*T.z),f.push(0,0),O.push(m++),$+=Dc/C}x.push(O)}let P=x.length-1;for(let C=0;C<P;C++){let O=x[C],A=x[C+1],R=O.length-1;N(O[0],A[1],A[0]);for(let k=1;k<=R;k++)N(O[k-1],O[k],A[k]),N(O[k],A[k+1],A[k])}}}};import{BufferGeometry as B_,Float32BufferAttribute as Rc,Triangle as D_,Vector3 as qr,Vector2 as Vc}from"three";var po=class extends B_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new Rc(l,3)),this.setAttribute("normal",new Rc(u,3)),this.setAttribute("uv",new Rc(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}[t],m=new qr,h=m.clone(),y=new D_,g=i*o,v=o-g,b=s+1,w=new qr,S=(q,H)=>w.subVectors(q,H).normalize(),T=(q,H)=>Array(q).fill(void 0).map(H),_=T(r.length/3,(q,H)=>new qr().fromArray(r,H*3).setLength(o)),x=[],N=1e6;for(let q=0;q<_.length;q++){let H=_[q],V=[],G,B,L,D=1e10,Y=-1;for(;(Y=e.indexOf(q,Y+1))!=-1;){let M=Y-Y%3;G=e[M+(Y+1)%3],B=e[M+(Y+2)%3],L=H.distanceToSquared(_[G]),D=Math.min(D,L),V.push([G,B,L])}D+=1e-6;let W=[],F=0,j=V.length;for(let M=0;M<j;M++){[G,B,L]=V[F];let Q=x[G]?.includes(q)==!0;L<=D&&W.push(G+ +Q*N),F=V.findIndex(re=>re[0]==B)}x.push(W)}let P=[];{let q=0,H=0,V,G,B=f==3;for(let L=0;L<=s;L++){V=L*(L+1)/2,G=(L+1)*(L+2)/2;for(let D=0;D<s-L;D++)[q,H]=[V+D+L+2,G+D+L+3],P.push(V,G,...B?[H,V]:[q,G],H,q),[V,G]=[q,H];P.push(V,G,V+s+2)}}let C=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),k=m.clone(),$=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let q=0;q<_.length;q++){m.copy(_[q]).normalize(),C.copy(m).multiplyScalar(v);let H=x[q];for(let W=0;W<H.length;W++){let F=H[W],j=H[(W+1)%f];y.setFromPointsAndIndices(_,q,F%N,j%N),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(C,te[q][W])}let V=[],G=[],B=[],L=new qr;s==0&&[...te[q]].reduce((W,F)=>W.add(F),L).multiplyScalar(1/f);for(let W=0;W<f;W++){let F=[],j=(W-1+f)%f,M=te[q][j],Q=te[q][W];m.copy(M).sub(C),h.copy(Q).sub(C);let re=C.angleTo(m),oe=m.angleTo(h),K=Math.cos(re)*g;s==0?O.copy(L):O.copy(C).setLength(v+K),G.push(K);let ee=[O,M,Q];for(let J=0;J<2;J++){let ie=ee[J],ce=ee[J+1];R.subVectors(ie,C),k.subVectors(ce,C),A.crossVectors(R,k).normalize();for(let se=0;se<b;se++){let fe=[re,oe][J]*se/b;m.copy(R).applyAxisAngle(A,fe).add(C),V.push(m.clone()),J&&(S(m,C),F.push([se==0?ie:m.clone(),w.clone()]))}J&&(S(ce,C),F.push([ce,w.clone()]))}B.push(F)}$.push(B);let D=2*b,Y=2;for(let W=0;W<f;W++){let F=D*W,j=D*((W+1)%f),M=[V[F]];for(let re=1;re<b;re++){R=V[F+re],k=V[j+re],M.push(R);for(let oe=1,K=re-Y+1;oe<=K;oe++)m.lerpVectors(R,k,oe/(K+1)),m.sub(C).setLength(G[W]).add(C),M.push(m.clone());M.push(k)}for(let re=0;re<b;re++)M.push(V[re+b+F]);M.push(V[j+b]);let Q=P.map(re=>M[re]);l.push(...Q.map(re=>[re.x,re.y,re.z]).flat()),u.push(...Q.map(re=>(S(re,C),[w.x,w.y,w.z])).flat())}}let X=[];for(let q=0;q<x.length;q++)for(let H=0;H<f;H++){let V=x[q][H];if(V<N){let G=x[V].findIndex(D=>D%N==q),B=$[q][H],L=$[V][G];for(let D=0;D<b;D++){let Y=B[D],W=L[b-D],F=B[D+1],j=L[b-(D+1)];[Y,W,F,F,W,j].forEach(M=>{l.push(M[0].x,M[0].y,M[0].z),u.push(M[1].x,M[1].y,M[1].z)})}X.push(B[0][0],L[b][0],B[b][0],L[0][0])}}for(;X.length;){let q,H,V,G;[q,H]=X.splice(0,2);let B=[q];for(;q!=H;)B.push(H),V=X.indexOf(H),G=V%2,H=X.splice(V-G,2)[1-G];w.subVectors(B[0],B[1]).cross(m.subVectors(B[0],B[2])).normalize();let L=w.dot(B[0])<0;L&&w.negate();for(let D=1;D<=B.length-2;D++)[B[D+ +L],B[D+1-+L],B[0]].forEach(Y=>{l.push(Y.x,Y.y,Y.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new qr;for(let _=0;_<l.length;_+=3){p.x=l[_+0],p.y=l[_+1],p.z=l[_+2];let x=S(p)/2/Math.PI+.5,N=T(p)/Math.PI+.5;c.push(x,1-N)}let f=new qr,m=new qr,h=new qr,y=new qr,g=new Vc,v=new Vc,b=new Vc,w=(_,x,N,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),N.x===0&&N.z===0&&(c[x]=P/2/Math.PI+.5)};for(let _=0,x=0;_<l.length;_+=9,x+=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]),g.set(c[x+0],c[x+1]),v.set(c[x+2],c[x+3]),b.set(c[x+4],c[x+5]),y.copy(f).add(m).add(h).divideScalar(3);let N=S(y);w(g,x+0,f,N),w(v,x+2,m,N),w(b,x+4,h,N)}for(let _=0;_<c.length;_+=6){let x=c[_+0],N=c[_+2],P=c[_+4],C=Math.max(x,N,P),O=Math.min(x,N,P);C>.9&&O<.1&&(x<.2&&(c[_+0]+=1),N<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function S(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new po(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as G_}from"three";var oh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new ss(r*.5,i,s):new G_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},ss=class extends po{constructor(r=1,e=.2,t=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,r,e,t),this.type=c}static fromJSON(r){return new ss(r.radius,r.corner,r.cornerSides)}};import{Plane as $_,Shape as xh,Vector2 as $r,Vector3 as X_,MathUtils as Wc,LineCurve as qc,QuadraticBezierCurve as vh,CubicBezierCurve as ol}from"three";import{CubicBezierCurve as el,EllipseCurve as R_,LineCurve as tl,LineCurve3 as V_,MathUtils as z_,QuadraticBezierCurve as Fc,SplineCurve as F_,Vector2 as ft,Vector3 as sh}from"three";var as=1e-12,Gn=class{constructor(r){this.position=new ft;this.startPosition=new ft;this.uuid=z_.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new Gn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Rn=class extends Gn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Rn(this.parent).copy(this)}},tr=class extends Gn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Rn(this),new Rn(this))}static create(e,t){let o=new tr(e,new ft(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=t?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 tr(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),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new ft,t=new ft){let[o,i]=this.computeTangents();return o&&i&&(nh(o,e),nh(i,t)),[e,t]}computeTangent(e=new ft){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ft){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function nh(n,r=new ft){let e=n.length();return r.set(-n.y/e,n.x/e)}var jc=n=>n,Vn=new ft,rl=new ft,j_=new ft,k_=new ft,U_=new ft,H_=new ft,ah=new sh,lh=new sh;function ch(n){let r=new ft;r.addVectors(n.v0,Vn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ft;return e.addVectors(n.v2,rl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new el(n.v0,r,e,n.v2)}function ls(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function W_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function q_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function kc(n,r,e){let t=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.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+t*t-i*i)/(2*o*t))}function dh(n,r,e){return ih(n,r)&&ih(r,e)&&zc(n.position,r.position,e.position)}function zc(n,r,e){return Vn.copy(r).sub(n).cross(rl.copy(e).sub(n))===0}function uh(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),s=(n.y+r.y)/2,l=(n.x+r.x)/2,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-r.y)/i,u=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(r.x-n.x)/i;return t.set(l+c,s+u),o.set(l-c,s-u),[t,o]}function ph(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function fh(n,r,e,t,o,i){let s=r.x-n.x,l=r.y-n.y,c=e.x-n.x,u=e.y-n.y,a=Math.sqrt((s+c)*(s+c)+(l+u)*(l+u)),d;return kc(r,n,e)>Math.PI&&(a*=-1),ls(u,l)?d=(l+u)*(t/a-.5)*8/3/(s-c):d=(s+c)*(t/a-.5)*8/3/(u-l),o.set(r.x-d*l,r.y+d*s),i.set(e.x+d*u,e.y-d*c),[o,i]}function Uc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function ih(n,r){return zc(n.position,n.controls[1].position,r.position)&&zc(n.position,r.controls[0].position,r.position)}function mh(n,r,e,t,o=.5){let i=Vn.subVectors(r,n).multiplyScalar(o).add(n),s=rl.subVectors(e,r).multiplyScalar(o).add(r),l=j_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=k_.subVectors(s,i).multiplyScalar(o).add(i),a=U_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=H_.subVectors(a,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,a.x,a.y,d.x,d.y,t.x,t.y]}function hh(n,r,e=12,t=!0){let o=lh.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=jc(r[c]),a=Vn,d=fo(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof el||u instanceof Fc||u instanceof tl){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&q_(i,o))continue;i===void 0&&(i=ah),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return t&&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 yh(n,r,e,t=12,o=!0){let i=lh.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=jc(r[c]),d=Vn,p=fo(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof el||a instanceof Fc||a instanceof tl){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=ah:(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 Hc(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],l=0;if(e&&s.roundedCurveCorner!==void 0){let c=fo(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=fo(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=fo(n[0].roundedCurveCorner,r)*.5),t}function fo(n,r=12){return n&&n instanceof R_?r*2:n&&(n instanceof tl||n instanceof V_)?1:n&&n instanceof F_?r*n.points.length:r}function gh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=jc(r[s]),c=fo(l,e),u=Vn;for(let a=0;a<=c;a++)if(l instanceof el||l instanceof Fc||l instanceof tl){if(l.getPoint(a/c,u),o!==void 0&&W_(o,u,as))continue;o===void 0&&(o=rl),o.copy(u),n.push(u.x,u.y),i++}}return ls(n[0],n[n.length-2],as)&&ls(n[1],n[n.length-1],as)&&(n.pop(),n.pop()),t&&i>1&&!(ls(n[i-1],n[1],as)&&ls(n[i-2],n[0],as))&&(n.push(n[0],n[1]),i++),n}var $c=new $r,Y_=new $r,K_=new $r,Z_=new $r,Q_=new $r,J_=new $r,Se=class extends xh{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new $_(new X_(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=Wc.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Se;return i.isClosed=e.isClosed,i.points=e.points.map(s=>tr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Se.createFromState(s)),t!==void 0&&o!==void 0&&i.applySize(t,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 t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=t;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 t=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],l=e-t;if(l<=s.points.length-1)return s.points[l];t+=s.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=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 t+l;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=$c.set(e,t);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,t);this._update()}createPoint(e,t=0,o=Wc.generateUUID()){let i;e instanceof $r?i=e:i=new $r(e,t);let s=new tr(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(i.uuid===e)return i}for(let t=0,o=this.shapeHoles.length;t<o;t++){let s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(){for(let e=0,t=this.shapeHoles.length;e<t;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let i=o?this.roundedCurveDivisions:this.curveDivisions;return hh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Hc(this.points,e,!1),this.roundedCurveDivisions=Hc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return yh(e,this.curves,t,o,this.autoClose).reduce((s,l)=>s+l,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),gh(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=fo(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,t,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],l=this.curveDivisions,c=l[e];if(Uc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo($c.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=l[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Uc(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.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,t.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,t.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let t=0,o=this.points.length;t<o;t++){let i=this.points[t];if(t===0)this.moveTo(i.position.x,i.position.y);else{let s=this.points[t-1];this._applyCurveForPoint(i,s)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let t=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(t,o)}if(this.points.length>2){let t=0;for(let o=0,i=this.points.length;o<i;o++){let s=this.points[o],l=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=s.roundness,a=l&&c&&dh(l,s,c);if(!s.controlsMoved()&&u>0&&!a){let d=s.curveBefore,p=s.curveAfter;if(d===void 0||p===void 0)continue;let f=s.roundedCurveBefore,m=s.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),v=Math.min(u,y*.499),b=Math.min(g,v),w=1-b/h,S=b/y,T=d.getPointAt(w,$c),_=p.getPointAt(S,Y_);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let N=kc(T,s.position,_)/2,P=Math.tan(N)*T.distanceTo(s.position),[C,O]=uh(T,_,P,K_,Z_),A=ph(C,O,s.position),[R,k]=fh(A,T,_,P,Q_,J_);x=new ol(T.clone(),R.clone(),k.clone(),_.clone())}else x=new vh(T.clone(),s.position.clone(),_.clone());s.roundedCurveCorner=x,this.roundedCurves.splice(o+t,0,x),t++}}}}_subSplitCurve(e,t,o,i,s){if(e instanceof qc)i!==void 0&&t.v2.copy(i),s!==void 0&&t.v1.copy(s);else{let l=e,c=t,u=l.getUtoTmapping(o,0),a=mh(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 t}clone(){let e=new Se(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;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],d=e.points[i+5],p=e.points[i+6],f=new tr(Wc.generateUUID(),new $r(s,l));f.controls[0].position.set(c,u),f.controls[1].position.set(a,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Se;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(i,s)=>{s instanceof ol&&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 vh&&(i[l]=ch(i[l]));for(l=0,c=i.length;l<c;l++){let d=i[l],p=l>0?i[l-1]:null,f;d instanceof ol?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof qc&&(f=this.createPoint(d.v1)),f!==void 0&&(p!==null&&t(f,p),s.push(f))}let u=i[i.length-1],a=!1;return u instanceof ol?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof qc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof xh&&(this.shapeHoles=e.holes.map(i=>{let s=new Se;return s.fromShape(i),s})),this.update(),this}updatePoint(e,t){let o=this.getPointByUuid(e);o&&(t.position!==void 0&&o.position.fromArray(t.position),t.roundness!==void 0&&(o.roundness=t.roundness),t.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,t){let i=this.getPointByUuid(e)?.controls[0];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}updateNextControl(e,t){let i=this.getPointByUuid(e)?.controls[1];i&&(t.position&&i.position.fromArray(t.position),this.needsUpdate=!0)}};var Yc=Math.PI*2;function Xc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function eT(n,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(n),o=Math.sin(n),i=Math.cos(n+r),s=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function bh(n,r,e,t){let o=n*t-r*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+r*t));return o*Math.acos(i)}function tT(n,r,e,t,o,i,s,l,c,u){let a=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(s,2),f=Math.pow(l,2),m=a*d-a*f-d*p;m<0&&(m=0),m/=a*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*l,y=m*-i/o*s,g=h+(n+e)/2,v=y+(r+t)/2,b=(s-h)/o,w=(l-y)/i,S=(-s-h)/o,T=(-l-y)/i,_=bh(1,0,b,w),x=bh(b,w,S,T);return!u&&x>0&&(x-=Yc),u&&x<0&&(x+=Yc),{centerx:g,centery:v,ang1:_,ang2:x}}function Sh({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:s,sweepFlag:l}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,a=(r-t)/2;if(u===0&&a===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(a,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=tT(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(Yc/4);Math.abs(1-g)<1e-7&&(g=1);let v=Math.max(Math.ceil(g),1);m/=v;for(let b=0;b<v;b++)c.push(eT(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=Xc(b[0],o,i,h,y),{x:T,y:_}=Xc(b[1],o,i,h,y),{x,y:N}=Xc(b[2],o,i,h,y);return{x1:w,y1:S,x2:T,y2:_,x,y:N}})}import{BufferAttribute as al,BufferGeometry as aT}from"three";var ve;(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"})(ve||(ve={}));var De;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(De||(De={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var le=function(){function n(){}return n.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},n.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},n.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},n.edgeGoesLeft=function(r){return n.vertLeq(r.Dst,r.Org)},n.edgeGoesRight=function(r){return n.vertLeq(r.Org,r.Dst)},n.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},n.edgeEval=function(r,e,t){ue(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?o<i?e.t-r.t+(r.t-t.t)*(o/(o+i)):e.t-t.t+(t.t-r.t)*(i/(o+i)):0},n.edgeSign=function(r,e,t){ue(n.vertLeq(r,e)&&n.vertLeq(e,t));var o=e.s-r.s,i=t.s-e.s;return o+i>0?(e.t-t.t)*o+(e.t-r.t)*i:0},n.transEval=function(r,e,t){ue(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?o<i?e.s-r.s+(r.s-t.s)*(o/(o+i)):e.s-t.s+(t.s-r.s)*(i/(o+i)):0},n.transSign=function(r,e,t){ue(n.transLeq(r,e)&&n.transLeq(e,t));var o=e.t-r.t,i=t.t-e.t;return o+i>0?(e.s-t.s)*o+(e.s-r.s)*i:0},n.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},n.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},n.intersect=function(r,e,t,o,i){var s,l,c;n.vertLeq(r,e)||(c=r,r=e,e=c),n.vertLeq(t,o)||(c=t,t=o,o=c),n.vertLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.vertLeq(t,e)?n.vertLeq(e,o)?(s=n.edgeEval(r,t,e),l=n.edgeEval(t,e,o),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,e.s)):(s=n.edgeSign(r,t,e),l=-n.edgeSign(r,o,e),s+l<0&&(s=-s,l=-l),i.s=n.interpolate(s,t.s,l,o.s)):i.s=(t.s+e.s)/2,n.transLeq(r,e)||(c=r,r=e,e=c),n.transLeq(t,o)||(c=t,t=o,o=c),n.transLeq(r,t)||(c=r,r=t,t=c,c=e,e=o,o=c),n.transLeq(t,e)?n.transLeq(e,o)?(s=n.transEval(r,t,e),l=n.transEval(t,e,o),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,e.t)):(s=n.transSign(r,t,e),l=-n.transSign(r,o,e),s+l<0&&(s=-s,l=-l),i.t=n.interpolate(s,t.t,l,o.t)):i.t=(t.t+e.t)/2},n}(),cs=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}(),nl=function(){function n(r){this.side=r,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(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),n}(),zn=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}(),wh=function(){function n(){var r=new zn,e=new cs,t=new nl(0),o=new nl(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return n.prototype.makeEdge_=function(r){var e=new nl(0),t=new nl(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},n.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},n.prototype.makeVertex_=function(r,e,t){var o=r;ue(o,"Vertex can't be null!");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;ue(o,"Face can't be null");var i=t.prev;o.prev=i,i.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},n.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var i=r.prev,s=r.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var r=new zn,e=new zn,t=new cs,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},n.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var i=new zn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new cs;this.makeFace_(s,e,r.Lface),r.Lface.anEdge=r}}},n.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new cs;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},n.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new zn;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},n.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},n.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),i=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(i,e),o.Org=r.Dst,i.Org=e.Org,o.Lface=i.Lface=r.Lface,r.Lface.anEdge=i,!t){var s=new cs;this.makeFace_(s,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,s,l;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),i=t.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(t));while(t!=e);s=r.prev,l=r.next,l.prev=s,s.next=l},n.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},n.prototype.mergeConvexFaces=function(r){var e,t,o,i,s,l,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(l=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),l+c-2<=r&&le.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&le.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,s,l,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){ue(o.prev===i),c=o.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),l=e,l=e;(s=l.next)!==e;l=s){ue(s.prev===l),c=s.anEdge;do ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c),ue(c.Org===s),c=c.Onext;while(c!==s.anEdge)}for(ue(s.prev===l&&s.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)ue(c.Sym.next===u.Sym),ue(c.Sym!==c),ue(c.Sym.Sym===c),ue(c.Org!==null),ue(c.Dst!==null),ue(c.Lnext.Onext.Sym===c),ue(c.Onext.Sym.Lnext===c);ue(c.Sym.next===u.Sym&&c.Sym===this.eHeadSym&&c.Sym.Sym===c&&c.Org===null&&c.Dst===null&&c.Lface===null&&c.Rface===null)},n}(),_h=function(){function n(){this.handle=null}return n}(),Th=function(){function n(){this.key=null,this.node=0}return n}(),rT=function(){function n(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new _h,this.handles[t]=new Th;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(t[o].key,t[i].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,s;for(o=e[r].handle;;){if(s=r>>1,i=e[s].handle,s===0||this.leq(t[i].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=i,t[i].node=r,r=s}},n.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(r){var e,t;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 _h;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Th}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},n.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;ue(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},n}(),Kc=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}(),Ph=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),oT=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Ph,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(r){return this.insertBefore(this.head,r)},n.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},n.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Ph;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},n.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},n}(),nT=function(){function n(){}return n.regionBelow=function(r){return r.nodeUp.prev.key},n.regionAbove=function(r){return r.nodeUp.next.key},n.debugEvent=function(r){},n.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.edgeLeq=function(r,e,t){var o=r.event,i=e.eUp,s=t.eUp;if(i.Dst===o)return s.Dst===o?le.vertLeq(i.Org,s.Org)?le.edgeSign(s.Dst,i.Org,s.Org)<=0:le.edgeSign(i.Dst,s.Org,i.Org)>=0:le.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return le.edgeSign(i.Dst,o,i.Org)>=0;var l=le.edgeEval(i.Dst,o,i.Org),c=le.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){ue(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},n.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(r,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(r){var e=r.eUp.Dst;do r=n.regionAbove(r);while(r.eUp.Dst===e);return r},n.addRegionBelow=function(r,e,t){var o=new Kc;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},n.isWindingInside=function(r,e){switch(r.windingRule){case ve.ODD:return(e&1)!==0;case ve.NONZERO:return e!==0;case ve.POSITIVE:return e>0;case ve.NEGATIVE:return e<0;case ve.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(r,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(r,e.windingNumber)},n.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,n.deleteRegion(r,e)},n.finishLeftRegions=function(r,e,t){for(var o,i=null,s=e,l=e.eUp;s!==t;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=l.Org){if(!i.fixUpperEdge){n.finishRegion(r,s);break}o=r.mesh.connect(l.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}l.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(l,o)),n.finishRegion(r,s),l=i.eUp,s=i}return l},n.addRightEdges=function(r,e,t,o,i,s){var l,c,u,a,d=!0;u=t;do ue(le.vertLeq(u.Org,u.Dst)),n.addRegionBelow(r,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&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(a.Oprev,u)),l.windingNumber=c.windingNumber-u.winding,l.inside=n.isWindingInside(r,l.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,a),n.deleteRegion(r,c),r.mesh.delete(a)),d=!1,c=l,a=u;c.dirty=!0,ue(c.windingNumber-u.winding===l.windingNumber),s&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=le.vertL1dist(e,r),i=le.vertL1dist(t,r),s=.5*i/(o+i),l=.5*o/(o+i);r.coords[0]+=s*e.coords[0]+l*t.coords[0],r.coords[1]+=s*e.coords[1]+l*t.coords[1],r.coords[2]+=s*e.coords[2]+l*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(le.vertLeq(o.Org,i.Org)){if(le.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;le.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(r.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(r,i.Oprev,o)):(r.mesh.splitEdge(i.Sym),r.mesh.splice(o,i.Oprev),e.dirty=t.dirty=!0)}else{if(le.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s;if(ue(!le.vertEq(o.Dst,i.Dst)),le.vertLeq(o.Dst,i.Dst)){if(le.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(le.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,s=o.Org,l=i.Org,c=o.Dst,u=i.Dst,a,d,p=new zn,f,m;if(ue(!le.vertEq(u,c)),ue(le.edgeSign(c,r.event,s)<=0),ue(le.edgeSign(u,r.event,l)>=0),ue(s!==r.event&&l!==r.event),ue(!e.fixUpperEdge&&!t.fixUpperEdge),s===l||(a=Math.min(s.t,c.t),d=Math.max(l.t,u.t),a>d))return!1;if(le.vertLeq(s,l)){if(le.edgeSign(u,s,l)>0)return!1}else if(le.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),le.intersect(c,s,u,l,p),ue(Math.min(s.t,c.t)<=p.t),ue(p.t<=Math.max(l.t,u.t)),ue(Math.min(u.s,c.s)<=p.s),ue(p.s<=Math.max(l.s,s.s)),le.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=le.vertLeq(s,l)?s:l,le.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),le.vertEq(p,s)||le.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!le.vertEq(c,r.event)&&le.edgeSign(c,r.event,p)>=0||!le.vertEq(u,r.event)&&le.edgeSign(u,r.event,p)<=0?u===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(i.Sym,o),e=n.topLeftRegion(r,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),t),n.addRightEdges(r,e,o.Oprev,o,o,!0),!0):c===r.event?(r.mesh.splitEdge(i.Sym),r.mesh.splice(o.Lnext,i.Oprev),t=e,e=n.topRightRegion(e),m=n.regionBelow(e).eUp.Rprev,t.eUp=i.Oprev,i=n.finishLeftRegions(r,t,null),n.addRightEdges(r,e,i.Onext,o.Rprev,m,!0),!0):(le.edgeSign(c,r.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),le.edgeSign(u,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(i.Sym),i.Org.s=r.event.s,i.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(i.Sym),r.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),n.getIntersectData(r,o.Org,s,c,l,u),n.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},n.walkDirtyRegions=function(r,e){for(var t=n.regionBelow(e),o,i;;){for(;t.dirty;)e=t,t=n.regionBelow(t);if(!e.dirty&&(t=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=t.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(n.deleteRegion(r,t),r.mesh.delete(i),t=n.regionBelow(e),i=t.eUp):e.fixUpperEdge&&(n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||i.Dst===r.event)){if(n.checkForIntersect(r,e))return}else n.checkForRightSplice(r,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(r,e),r.mesh.delete(o),e=n.regionAbove(t))}},n.connectRightVertex=function(r,e,t){var o,i=t.Onext,s=n.regionBelow(e),l=e.eUp,c=s.eUp,u=!1;if(l.Dst!==c.Dst&&n.checkForIntersect(r,e),le.vertEq(l.Org,r.event)&&(r.mesh.splice(i.Oprev,l),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),s),u=!0),le.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,s,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}le.vertLeq(c.Org,l.Org)?o=c.Oprev:o=l,o=r.mesh.connect(t.Lprev,o),n.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(r,e)},n.connectLeftDegenerate=function(r,e,t){var o,i,s,l,c;if(o=e.eUp,le.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!le.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),n.sweepEvent(r,t);return}ue(!1),e=n.topRightRegion(e),c=n.regionBelow(e),s=c.eUp.Sym,i=l=s.Onext,c.fixUpperEdge&&(ue(i!==s),n.deleteRegion(r,c),r.mesh.delete(s),s=i.Oprev),r.mesh.splice(t.anEdge,s),le.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,s.Onext,l,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,s,l,c,u=new Kc;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,le.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=le.vertLeq(l.Dst,s.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var a=r.mesh.connect(l.Dnext,e.anEdge);c=a.Sym}i.fixUpperEdge?n.fixUpperEdge(r,i,c):n.computeWinding(r,n.addRegionBelow(r,t,c)),n.sweepEvent(r,e)}else n.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(r,e){r.event=e,n.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){n.connectLeftVertex(r,e);return}var o=n.topLeftRegion(r,t.activeRegion);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,l=n.finishLeftRegions(r,i,null);l.Onext===s?n.connectRightVertex(r,o,l):n.addRightEdges(r,o,l.Onext,s,s,!0)},n.addSentinel=function(r,e,t,o){var i=new Kc,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=r.dict.insert(i)},n.initEdgeDict=function(r){r.dict=new oT(r,n.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,i=r.bmax[0]+e,s=r.bmin[1]-t,l=r.bmax[1]+t;n.addSentinel(r,o,i,s),n.addSentinel(r,o,i,l)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++t===1)),ue(e.windingNumber===0),n.deleteRegion(r,e)},n.removeDegenerateEdges=function(r){var e,t,o,i=r.mesh.eHead;for(e=i.next;e!==i;e=t)t=e.next,o=e.Lnext,le.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},n.initPriorityQ=function(r){var e,t,o,i=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)i++;for(i+=8,e=r.pq=new rT(i,le.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},n.donePriorityQ=function(r){r.pq=null},n.removeDegenerateFaces=function(r,e){var t,o,i;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,i=t.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),r.mesh.delete(i));return!0},n.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(n.removeDegenerateEdges(r),!n.initPriorityQ(r))return!1;for(n.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!le.vertEq(o,t));)o=r.pq.extractMin(),n.spliceMergeVertices(r,t.anEdge,o.anEdge);n.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,n.debugEvent(r),n.doneEdgeDict(r),n.donePriorityQ(r),n.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},n}(),iT=function(){function n(){this.mesh=new wh,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=ve.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(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},n.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},n.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},n.prototype.computeNormal_=function(r){var e,t,o,i,s,l,c=[0,0,0],u=[0,0,0],a=[0,0,0],d=[0,0,0],p=[0,0,0],f=[null,null,null],m=[null,null,null],h=this.mesh.vHead;e=h.next;for(var y=0;y<3;++y)i=e.coords[y],u[y]=i,m[y]=e,c[y]=i,f[y]=e;for(e=h.next;e!==h;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<u[g]&&(u[g]=i,m[g]=e),i>c[g]&&(c[g]=i,f[g]=e);var v=0;if(c[1]-u[1]>c[0]-u[0]&&(v=1),c[2]-u[2]>c[v]-u[v]&&(v=2),u[v]>=c[v]){r[0]=0,r[1]=0,r[2]=1;return}for(l=0,t=m[v],o=f[v],a[0]=t.coords[0]-o.coords[0],a[1]=t.coords[1]-o.coords[1],a[2]=t.coords[2]-o.coords[2],e=h.next;e!==h;e=e.next)d[0]=e.coords[0]-o.coords[0],d[1]=e.coords[1]-o.coords[1],d[2]=e.coords[2]-o.coords[2],p[0]=a[1]*d[2]-a[2]*d[1],p[1]=a[2]*d[0]-a[0]*d[2],p[2]=a[0]*d[1]-a[1]*d[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>l&&(l=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);l<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(a)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,s=r.next;s!==r;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=t.next;e!==t;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 r=this.mesh.vHead,e=[0,0,0],t,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),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var l=r.next;l!==r;l=l.next)l.s=this.dot_(l.coords,t),l.t=this.dot_(l.coords,o);i&&this.checkOrientation_();for(var c=!0,u=r.next;u!==r;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(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;le.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;le.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(le.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(le.edgeGoesLeft(o.Lnext)||le.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=r.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(le.edgeGoesRight(t.Lprev)||le.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)i=r.connect(t,t.Lprev),t=i.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)i=r.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},n.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},n.prototype.setWindingNumber_=function(r,e,t){for(var o,i=r.eHead.next;i!==r.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:t?r.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},n.prototype.outputPolymesh_=function(r,e,t,o){var i,s=0,l=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var a=r.fHead.next;a!==r.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>t)throw"Face vertex greater that support polygon";a.n=s,++s}this.elementCount=s,e===De.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=l,this.vertices=[],this.vertices.length=l*o,this.vertexIndices=[],this.vertexIndices.length=l;for(var u=r.vHead.next;u!==r.vHead;u=u.next)if(u.n!==-1){var d=u.n*o;this.vertices[d+0]=u.coords[0],this.vertices[d+1]=u.coords[1],o>2&&(this.vertices[d+2]=u.coords[2]),this.vertexIndices[u.n]=u.idx}for(var p=0,a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){i=a.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==a.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===De.CONNECTED_POLYGONS){i=a.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==a.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){o=t=l.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==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=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){s=0,o=t=l.anEdge;do this.vertices[c++]=t.Org.coords[0],this.vertices[c++]=t.Org.coords[1],e>2&&(this.vertices[c++]=t.Org.coords[2]),this.vertexIndices[u++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[a++]=i,this.elements[a++]=s,i+=s}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new wh),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},n.prototype.tesselate=function(r,e,t,o,i,s){if(r===void 0&&(r=ve.ODD),e===void 0&&(e=De.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=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),nT.computeInterior(this,s);var l=this.mesh;return e===De.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===De.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function rr(n){var r=n.windingRule,e=r===void 0?ve.ODD:r,t=n.elementType,o=t===void 0?De.POLYGONS:t,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,d=n.contours,p=d===void 0?[]:d,f=n.strict,m=f===void 0?!0:f,h=n.debug,y=h===void 0?!1:h;if(!p&&m)throw new Error("Contours can't be empty");if(!!p){var g=new iT;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var v=0;v<p.length;v++)g.addContour(c||2,p[v]);return g.tesselate(e,o,s,c,a,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var KV=ve.ODD,ZV=ve.NONZERO,QV=ve.POSITIVE,JV=ve.NEGATIVE,ez=ve.ABS_GEQ_TWO,tz=De.POLYGONS,rz=De.CONNECTED_POLYGONS,oz=De.BOUNDARY_CONTOURS;import{BufferAttribute as sl,BufferGeometry as sT}from"three";var il=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*il.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.normals=new Float32Array(this.buffer,i*o,3*r),i+=3*r,this.uvs=new Float32Array(this.buffer,i*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*il.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,s=0,l=new Float32Array(o,s*i,3*r);s+=3*r;let c=new Float32Array(o,s*i,3*r);s+=3*r;let u=new Float32Array(o,s*i,2*r);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=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},ds=il;ds.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var us={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Qc={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Jc={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Zc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Fn=class extends sT{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let c=this._shape.extractShapePointsToFlatArray([],i),u=this._shape.shapeHoles.map(_=>{let x=_.extractShapePointsToFlatArray([],i),N=[];for(let P=x.length-1;P>=1;P-=2){let C=x[P-1],O=x[P-0];N.push(C,O)}return N}),a;try{a=rr({windingRule:l,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{a=us}let d;try{d=rr({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...u]})}catch{d=Qc}if(!a)throw new Error("error generating geometry");let p=a.elementCount;if(d){a.elementCount+=d.elementCount;for(let _=0;_<d.elements.length;_++){let x=d.elements[_],N=_%2===0?a.vertexCount:0;a.elements.push(x+N)}for(let _=0;_<d.vertexIndices.length;_++){let x=d.vertexIndices[_],N=a.vertexCount;a.vertexIndices.push(x+N)}for(let _=0;_<d.vertices.length;_++){let x=d.vertices[_];a.vertices.push(x)}}let f=1/0,m=-1/0,h=1/0,y=-1/0;for(let _=0,x=a.vertexCount;_<x;_++){let N=_*2,P=a.vertices[N+0],C=a.vertices[N+1];P<f&&(f=P),P>m&&(m=P),C<h&&(h=C),C>y&&(y=C)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new ds(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,N=_*2,P=a.elements[N+0],C=a.elements[N+1],O=P+C,A={start:P,count:C,normals:[],continuous:[],concave:[]},R=P,k=O-1,$=P+1,te=this._shape.roundedCurves.length;do{let V=R-P,G=a.vertices[k*2+0],B=a.vertices[k*2+1],L=a.vertices[R*2+0],D=a.vertices[R*2+1],Y=a.vertices[$*2+0],W=a.vertices[$*2+1],F=L-G,j=D-B,M=Math.sqrt(F*F+j*j);F/=M,j/=M;let Q=L-Y,re=D-W,oe=Math.sqrt(Q*Q+re*re);Q/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=Q,A.concave[V]=F*re-j*Q>0;let K=a.vertexIndices[R];if(Array.isArray(K))A.continuous[V]=!1;else{let[ee,J]=this._shape.getCurveIndexFromVertexId(K-1,!0);if(J>0&&J<1)A.continuous[V]=!0;else{let ie=J===1?ee+1:ee-1;ie=(ie+te)%te;let ce=J===1?0:1,se=this._shape.roundedCurves[ee].getTangent(J),fe=this._shape.roundedCurves[ie].getTangent(ce);A.continuous[V]=se.dot(fe)>.95}}x&&(A.normals[V*2+0]*=-1,A.normals[V*2+1]*=-1),[k,R,$]=[R,$,$+1],$>=O&&($-=C)}while($!==P+1);let X=[];X.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,O*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((V,G)=>[G,G]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:a.vertices.slice(P*2,O*2)});for(let V=1;V<=this._bevelSegments;V++){let G=V/this._bevelSegments*Math.PI/2,B=(1-Math.cos(G))*this._bevelSize,L=[],D=[],Y=[],W=[],F=0;for(let M=0;M<C;M++){let Q=M*2,re=(M-1+C)%C*2,oe=a.vertices[A.start*2+Q+0],K=a.vertices[A.start*2+Q+1],ee=-A.normals[re+0]*B,J=-A.normals[re+1]*B,ie=-A.normals[Q+0]*B,ce=-A.normals[Q+1]*B;if(A.concave[M]||!A.concave[M]&&x){let se=Math.atan2(J,ee),fe=Math.atan2(ce,ie);fe>se&&(fe-=Math.PI*2);let Ge=fe-se;if(A.continuous[M]||x){let ye=se+Ge/2,Ue=Math.cos(ye)*B,Te=Math.sin(ye)*B;L[2*F+0]=oe+Ue*(x?-1:1),L[2*F+1]=K+Te*(x?-1:1),W[F]=M,F++}else{let ye=Math.max(1,Math.floor(i/4*Math.abs(Ge)/Math.PI));for(let Ue=0;Ue<=ye;Ue++){let Te=se+Ge*(Ue/ye),vt=Math.cos(Te)*B,zt=Math.sin(Te)*B;L[2*F+0]=oe+vt,L[2*F+1]=K+zt,W[F]=M,F++}}}else L[2*F+0]=oe+ee,L[2*F+1]=K+J,W[F]=M,D[M]=F,F++,L[2*F+0]=oe,L[2*F+1]=K,W[F]=M,F++,L[2*F+0]=oe+ie,L[2*F+1]=K+ce,W[F]=M,Y[M]=F,F++}let j=rr({windingRule:ve.POSITIVE,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:M=>{let re=M.Org.idx,oe=W[re],K=W[(re+1)%W.length];M.idx=[oe,K],M.Sym.idx=[K,oe]},vertexIdCallback:M=>{let Q=M.Lprev.idx;return[Q?Q[1]:0,M.idx?M.idx[0]:0]}});if(!j)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!j.vertexCount)break;for(let M=0;M<j.vertexIndices.length;M++){let[Q,re]=j.vertexIndices[M];if(Q===re)continue;let oe=re;re<Q&&(oe+=C);for(let K=Q;K<oe;K++){let ee=K%C,J=(K+1)%C;if(!A.continuous[ee]||!A.continuous[J]){j.vertexIndices[M]=[Q,ee],j.vertexIndices.splice(M+1,0,[J,re]),j.vertices.splice((M+1)*2,0,j.vertices[M*2],j.vertices[M*2+1]);break}}}X.push({bevelI:V,angle:G,size:B,boundary:j,reverseMap:W,insetPoints:L})}let q=(V,G,B)=>{let L=0,D=V.boundary.vertexIndices.length;for(;L<D&&B(V.boundary.vertexIndices[G]);)G=(G+1)%D,L++;return L},H=g.length;for(let V=1;V<X.length;V++){let G=X[V-1],B=X[V],L=G.boundary.vertexIndices.length,D=B.boundary.vertexIndices.length;if(!L||!D)break;let Y=A.concave.length,W=0,F=Zc(W,C);for(;!G.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)W++,F=Zc(W,C);let j=G.boundary.vertexIndices.findIndex(F),M=B.boundary.vertexIndices.findIndex(F);do j=(j+1)%L;while(F(G.boundary.vertexIndices[j]));do M=(M+1)%D;while(F(B.boundary.vertexIndices[M]));W=(W+1)%C;let Q=W,re=this._buildBevelVert(A,G,(j-1+L)%L),oe=this._buildBevelVert(A,B,(M-1+D)%D),K=re,ee=oe,J,ie,ce=!1;do{F=Zc(W,C);let se=q(G,j,F),fe=q(B,M,F),Ge=ce;if(ce=!1,se&&!fe){for(let ye=0;ye<se;ye++)J=this._buildBevelVert(A,G,(j+ye)%L,ye/(se-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J;ce=!0}else if(!se&&fe)for(let ye=0;ye<fe;ye++)ie=this._buildBevelVert(A,B,(M+ye)%D,ye/(fe-1)),g.push(ee.topN,K.topP,ie.topP),g.push(K.bottomP,ee.bottomN,ie.bottomP),ee=ie;else if(se&&fe)if(J=this._buildBevelVert(A,G,j,0),ie=this._buildBevelVert(A,B,M,0),Ge?(g.push(K.topN,ie.topP,ee.topN),g.push(K.topN,J.topP,ie.topP),g.push(ie.bottomP,K.bottomN,ee.bottomN),g.push(ie.bottomP,J.bottomP,K.bottomN)):(g.push(ee.topN,K.topN,J.topP),g.push(ee.topN,J.topP,ie.topP),g.push(J.bottomP,K.bottomN,ee.bottomN),g.push(J.bottomP,ee.bottomN,ie.bottomP)),K=J,ee=ie,se===fe)for(let ye=1;ye<se;ye++)J=this._buildBevelVert(A,G,(j+ye)%L,ye/(se-1)),ie=this._buildBevelVert(A,B,(M+ye)%D,ye/(fe-1)),g.push(K.topN,J.topP,ee.topN),g.push(ee.topN,J.topP,ie.topP),g.push(J.bottomP,K.bottomN,ee.bottomN),g.push(J.bottomP,ee.bottomN,ie.bottomP),K=J,ee=ie;else if(se>fe){let ye=se/fe,Ue=0;for(let Te=1;Te<se;Te++)J=this._buildBevelVert(A,G,(j+Te)%L,Te/(se-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J,Te>(Ue+1)*ye&&(Ue++,ie=this._buildBevelVert(A,B,(M+Ue)%D,Ue/(fe-1)),g.push(ee.topN,J.topP,ie.topP),g.push(J.bottomP,ee.bottomN,ie.bottomP),ee=ie)}else{let ye=fe/se,Ue=0;for(let Te=1;Te<fe;Te++)ie=this._buildBevelVert(A,B,(M+Te)%D,Te/(fe-1)),g.push(ee.topN,J.topP,ie.topP),g.push(J.bottomP,ee.bottomN,ie.bottomP),ee=ie,Te>(Ue+1)*ye&&(Ue++,J=this._buildBevelVert(A,G,(j+Ue)%L,Ue/(se-1)),g.push(K.topN,J.topP,ee.topN),g.push(J.bottomP,K.bottomN,ee.bottomN),K=J)}j=(j+se)%L,M=(M+fe)%D,W=(W+1)%Y}while(W!==Q)}if(this._buildWall(X,A,g),x){let V=[];for(let G=g.length-1;G>=H+2;G-=3){let B=g[G-2],L=g[G-1],D=g[G-0];V.push(D,L,B)}g.splice(H,g.length-H,...V)}if(x){let V=[];for(let G=X[X.length-1].boundary.vertices.length-1;G>=1;G-=2){let B=X[X.length-1].boundary.vertices[G-1],L=X[X.length-1].boundary.vertices[G-0];V.push(B,L)}v.push(V)}if(!x){let V=X[X.length-1],G;try{G=rr({windingRule:X.length>1?ve.POSITIVE:ve.ODD,elementType:De.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]})}catch{G=Jc}if(!G)throw new Error("Error generating geometry for surface");u.length===0&&Object.assign(this,{capStartIndex:g.length});for(let B=0;B<G.elementCount*3;B+=3){let L=this._buildSurfaceVert(G,G.elements[B+0]),D=this._buildSurfaceVert(G,G.elements[B+1]),Y=this._buildSurfaceVert(G,G.elements[B+2]);g.push(L.top,D.top,Y.top),g.push(Y.bottom,D.bottom,L.bottom)}}this.vertexCache={}}this._buffer.shrink();let b=new sl(Uint32Array.from(g),1),w=new sl(this._buffer.positions,3),S=new sl(this._buffer.normals,3),T=new sl(this._buffer.uvs,2);w.needsUpdate=!0,S.needsUpdate=!0,T.needsUpdate=!0,b.needsUpdate=!0,this.setAttribute("position",w),this.setAttribute("normal",S),this.setAttribute("uv",T),this.setIndex(b)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[t*2+0],s=e.vertices[t*2+1],l=(i-this._minX)/this._width,c=(s-this._minY)/this._height,u=this._buffer.get(2),a=u*3,d=u*2,p={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[d+0]=l,this._buffer.uvs[d+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[d+2]=l,this._buffer.uvs[d+3]=c,this.vertexCache[o]=p,p}_buildBevelVert(e,t,o,i=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[l,c]=t.boundary.vertexIndices[o],u,a,d,p;l!==c?(a=l,u=c,p=!1,d=e.continuous[a]&&e.continuous[u]):(u=l,a=(u-1+e.count)%e.count,p=e.concave[u]&&t.bevelI>0,d=e.continuous[u]||p);let f=Math.cos(t.angle),m=Math.sin(t.angle),h=o*2,y=u*2,g=a*2,v=t.boundary.vertices[h+0],b=t.boundary.vertices[h+1],w=(1-m)*this._bevelSize,S=(v-this._minX)/this._width,T=(b-this._minY)/this._height,_=e.normals[y+0],x=e.normals[y+1],N=e.normals[g+0],P=e.normals[g+1];if(p){let k=N-_,$=P-x;_=_+k*(1-i),x=x+$*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let C=this._buffer.get(d?2:4),O=C*3,A=C*2,R={i:o,fi:u,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=_*f,this._buffer.normals[O+1]=x*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=_*f,this._buffer.normals[O+4]=x*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S,d||(C+=2,O+=6,A+=4,R.topP=C+0,R.bottomP=C+1,this._buffer.positions[O+0]=v,this._buffer.positions[O+1]=b,this._buffer.positions[O+2]=this._depth-w,this._buffer.normals[O+0]=N*f,this._buffer.normals[O+1]=P*f,this._buffer.normals[O+2]=m,this._buffer.uvs[A+0]=S,this._buffer.uvs[A+1]=T,this._buffer.positions[O+3]=v,this._buffer.positions[O+4]=b,this._buffer.positions[O+5]=w,this._buffer.normals[O+3]=N*f,this._buffer.normals[O+4]=P*f,this._buffer.normals[O+5]=-m,this._buffer.uvs[A+2]=T,this._buffer.uvs[A+3]=S),this.vertexCache[s]=R,R}clone(){let e=new Fn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jr(this.userData),e}};var jn=class extends aT{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ve.ODD;this.elementType=De.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ve.ODD,elementType:De.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,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],v=i[y+1];if(a!==void 0&&g!==a&&(c=!1),d!==void 0&&v!==d&&(u=!1),a=g,d=v,!c&&!u)break}if(!c&&!u)try{l=rr({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{l=us}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new al(new Float32Array(p*3),3),this._normalAttribute=new al(new Float32Array(p*3),3),this._uvAttribute=new al(new Float32Array(p*2),2),this._indexAttribute=new al(new Uint32Array(f*3),1),l){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,S=p;w<S;w++){let T=w*2,_=l.vertices[T+0],x=l.vertices[T+1];_<m&&(m=_),_>h&&(h=_),x<y&&(y=x),x>g&&(g=x)}let v=h-m,b=g-y;for(let w=0,S=p;w<S;w++){let T=w*2,_=l.vertices[T+0],x=l.vertices[T+1],N=(_-m)/v,P=(x-y)/b;this._positionAttribute.setXYZ(w,_,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,N,P)}for(let w=0,S=f;w<S;w++){let T=w*3,_=l.elements[T+0],x=l.elements[T+1],N=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,N)}}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 jn(this._shape,this._curveSegments);return e.userData=jr(this.userData),e}};var kn=class extends Fn{constructor(e,t,o=0,i=12,s=3,l=ve.ODD){super(e,t,o,i,s,l);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let s=0,l=i.boundary.vertexCount;s<l;s++){let c=this._buildBevelVert(t,i,s),u=this._buildBevelVert(t,i,(s+1)%l);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new kn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jr(this.userData),e}};var Tt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:ve.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=n.shape??r?.shape,l=s?.roundness??e.roundness;s!==void 0&&(s instanceof Se?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Se(t,o).fromJSON(s),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&s.update());let c=s??new Se(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:l}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:s}=n.parameters;n.shape.roundness=i;let l;return r<=0?l=new jn(n.shape,o,{windingRule:s}):l=new kn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as Ah,Vector2 as Ch}from"three";var Nh=Math.PI*2,Hn=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,angle:o,innerRadius:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u=n.shape,a=r*.5,d=e*.5,p=lT(u,a,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=Tt.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function lT(n,r,e,t,o,i){if(t>=Nh)return o>30||o%4===0?(dT(n,r,e,i),Math.round(o/4)):Oh(n,t,o,r,e,i);t=Math.max(t,.001);let s={x:0,y:e},l=t+Math.PI*.5,c={x:Math.cos(l)*r,y:Math.sin(l)*e},u=Sh({px:s.x,py:s.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?cT(n,s.x,s.y,u,o,r,e,i):Oh(n,t,o,r,e,i)}function cT(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(Un(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=Un(d.x,d.y);p.controls[1].position.set(d.x1,d.y1),f.controls[0].position.set(d.x2,d.y2),n.addPoint(f)}return l>0?Ih(n,i,s,l):n.addPoint(Un(0,0)),c}function Oh(n,r,e,t,o,i){let s=-r/e;for(let l=0;l<=e;l++){let c=s*l,u=Math.sin(c)*t,a=Math.cos(c)*o;n.addPoint(Un(u,a))}return r<Nh?i>0?Ih(n,t,o,i):n.addPoint(Un(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Mh(n,t,o,i)),1}function dT(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(ll(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(ll(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(ll(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(ll(o,i-e,o+l,i-e,o-l,i-e)),t>0&&Mh(n,r,e,t)}function Un(n,r){return new tr(Ah.generateUUID(),new Ch(n,r))}function ll(n,r,e,t,o,i){let s=Un(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Ih(n,r,e,t){Eh(n,r,e,t).forEach(i=>n.addPoint(i))}function Mh(n,r,e,t){let o=Eh(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Eh(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new Ch(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=Ah.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 uT,Float32BufferAttribute as ed,Uint32BufferAttribute as pT,Vector3 as Lh}from"three";var Bh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),i=Math.abs(e.depth??t),s=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,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:r,height:e,depth:t,radius:o,revolutions:i,segments:s,pathRadius:l,pathType:c,pathSegments:u,cornerRadius:a,cornerSegments:d}=n.parameters,p=new ps(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},td=new pT([0,0,0],1),ps=class extends uT{constructor(r=!0,e=1,t=1,o=1,i=1,s=1,l=1,c=1,u=1,a=1,d=1,p=1){if(super(),s===0)return;let f=r&&s===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new Lh,h=new Lh,y=m(),g=m(),v=m(),b,w,S,T,_,x,N,P,C=m(),O=m(),A=m(),R=m(),k=m(),$=m(),te=m(),X=m(),q=t-2*c+.001,H=q/s,V=Math.ceil(l*s),G=V+1,B=q/V,L=-q/2,D=a+1,Y=2*Math.PI/a,W=Math.PI/2/p,F=.01,j=Math.min((1-d/100)*c,c-F),M=c-j,Q=0,re=2,oe=p*re+re,K=D*oe/re,ee=K+D*G,J=D*(G+oe),[ie,ce,se]=[3,3,2].map(Fe=>Array(J*Fe).fill(0)),fe=[],Ge=i-c;function ye(Fe,It){let fr=Math.PI/2;x=It*B,P=2*Math.PI*(x%H)/H+fr,x+=L,N=Math.sin(P)*Ge,_=Math.cos(P)*Ge,r?Fe.set(_,N,x):Fe.set(_,x,N)}ye(h,-1e-10),ye(y,0),C.copy(h),ye(h,1);let Ue=h.distanceTo(y),Te=f?0:M+j,vt=Ue*V+2*Te,zt=j,$o=vt-Te;for(let Fe=0;Fe<=V;Fe++){ye(g,Fe),X.subVectors(g,C).normalize(),C.copy(g),$.copy(g).setComponent(+r+1,0).normalize(),te.crossVectors(X,$).normalize();let It=Fe===0,fr=Fe===V,qg=It?3*Math.PI/2:W,$g=It?zt:$o,Xg=It?D:ee,Yg=It?0:J-D,Kg=X.clone().multiplyScalar(It?-M:M).add(g),Zg=X.clone().multiplyScalar(It?-1:1).normalize();for(let Dr=0;Dr<D;Dr++){let yu=Dr*Y;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(yu)),y.copy(te).multiplyScalar(c*Math.sin(yu))),A.copy(O).normalize(),It||fr){f||(Q=Yg+Dr,[0,1,2].forEach(bt=>{ie[Q*3+bt]=Kg.getComponent(bt),ce[Q*3+bt]=Zg.getComponent(bt)}),se[Q*2]=+fr,se[Q*2+1]=Dr/a),y.copy(A).multiplyScalar(j),v.addVectors(g,y);for(let bt=0;bt<p;bt++){let Xl=bt*W+qg;R.addVectors(h.copy(X).multiplyScalar(M*Math.sin(Xl)),y.copy(A).multiplyScalar(M*Math.cos(Xl))),k.copy(R).normalize(),y.addVectors(v,R),R.normalize(),Q=Xg+bt*D+Dr,[0,1,2].forEach(Us=>{ie[Q*3+Us]=y.getComponent(Us),ce[Q*3+Us]=k.getComponent(Us)});let Qg=+It+Math.sin(Xl);se[Q*2]=($g+M*Qg)/vt,se[Q*2+1]=Dr/a}}y.addVectors(g,O),Q=K+Fe*D+Dr,[0,1,2].forEach(bt=>{ie[Q*3+bt]=y.getComponent(bt),ce[Q*3+bt]=A.getComponent(bt)}),se[Q*2]=(Te+Fe*Ue)/vt,se[Q*2+1]=Dr/a}}let Nt=G+2*p+re,Fs=1,[js,ks]=[+f,Nt-1];for(let Fe=js;Fe<=ks-1;Fe++){let It=f&&Fe===ks-1;for(let fr=0;fr<D-1;fr++)b=Fe*D+fr,w=b+1,S=(It?fr:b)+D,T=(It?fr+1:w)+D,Fe===0?fe.push(w,T,S):Fe===Nt-2?fe.push(b,w,S):fe.push(b,w,S,w,T,S)}this.setIndex(fe),this.setAttribute("position",new ed(ie,3)),this.setAttribute("normal",new ed(ce,3)),this.setAttribute("uv",new ed(se,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,s,l,c,u=6*(e-1)*r.radialSegments,a=e,d=a===e;for(let p=0;p<r.radialSegments;p++)i=a*t+p,s=i+1,l=(d?p:i)+t,c=(d?p+1:s)+t,o[u++]=i,o[u++]=s,o[u++]=l,o[u++]=s,o[u++]=c,o[u++]=l;return o.length=u,td.array=o,td.count=o.length,td}};import{IcosahedronGeometry as fT}from"three";var Dh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e,depth:t,detail:o,corner:i,cornerSides:s}=n.parameters,l=o===0&&i!==0?new fs(r*.5,i,s):new fT(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},fs=class extends po{constructor(r=1,e=.2,t=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,r,e,t),this.type=l}static fromJSON(r){return new fs(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as mT,Shape as hT}from"three";var Gh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){(n.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.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:r,segments:e,verticalSegments:t}=n.parameters,o=new hT;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let i=new mT(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Hh,BufferGeometryLoader as AT,Vector3 as CT,BoxGeometry as Wh}from"three";import{BufferGeometry as _T,Vector2 as id,Vector3 as Uh}from"three";import{Box3 as yT,BufferAttribute as ms,BufferGeometry as Rh,Color as nd,EventDispatcher as gT,Float32BufferAttribute as Wn,Matrix3 as Vh,Matrix4 as kh,MathUtils as xT,Object3D as vT,Sphere as bT,Vector2 as Rt,Vector3 as at,Vector4 as ST}from"three";var wr=new kh,rd=new vT,cl=new at,mo=class extends gT{constructor(){super(),this.uuid=xT.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(r){let e=new Vh().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];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(r){return wr.makeRotationX(r),this.applyMatrix4(wr),this}rotateY(r){return wr.makeRotationY(r),this.applyMatrix4(wr),this}rotateZ(r){return wr.makeRotationZ(r),this.applyMatrix4(wr),this}translate(r,e,t){return wr.makeTranslation(r,e,t),this.applyMatrix4(wr),this}scale(r,e,t){return wr.makeScale(r,e,t),this.applyMatrix4(wr),this}lookAt(r){return rd.lookAt(r),rd.updateMatrix(),this.applyMatrix4(rd.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.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 p=0;p<i.count;p++)e.vertices.push(new at().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new nd().fromBufferAttribute(l,p));function a(p,f,m,h){let y=l===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=s===void 0?[]:[new at().fromBufferAttribute(s,p),new at().fromBufferAttribute(s,f),new at().fromBufferAttribute(s,m)],v=new qn(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Rt().fromBufferAttribute(c,p),new Rt().fromBufferAttribute(c,f),new Rt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Rt().fromBufferAttribute(u,p),new Rt().fromBufferAttribute(u,f),new Rt().fromBufferAttribute(u,m)])}let d=r.groups;if(d.length>0)for(let p=0;p<d.length;p++){let f=d[p],m=f.start,h=f.count;for(let y=m,g=m+h;y<g;y+=3)t!==void 0?a(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):a(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)a(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)a(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(cl).negate(),this.translate(cl.x,cl.y,cl.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new kh;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new at,e=new at;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],s=this.vertices[i.a],l=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,l),e.subVectors(s,l),r.cross(e),r.normalize(),i.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new at;if(r){let t=new at,o=new at;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];t.subVectors(a,u),o.subVectors(c,u),t.cross(o),e[l.a].add(t),e[l.b].add(t),e[l.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],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 r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;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 r=new mo;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;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 at,a={a:new at,b:new at,c:new at};i.push(u),s.push(a)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.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,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new yT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new bT),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,i=this.vertices.length,s=this.vertices,l=r.vertices,c=this.faces,u=r.faces,a=this.colors,d=r.colors;e!==void 0&&(o=new Vh().getNormalMatrix(e));for(let p=0,f=l.length;p<f;p++){let h=l[p].clone();e!==void 0&&h.applyMatrix4(e),s.push(h)}for(let p=0,f=d.length;p<f;p++)a.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,v=m.vertexColors,b=new qn(m.a+i,m.b+i,m.c+i);b.normal.copy(m.normal),o!==void 0&&b.normal.applyMatrix3(o).normalize();for(let w=0,S=g.length;w<S;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),b.vertexNormals.push(h);b.color.copy(m.color);for(let w=0,S=v.length;w<S;w++)y=v[w],b.vertexColors.push(y.clone());b.materialIndex=m.materialIndex+t,c.push(b)}for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++)v.push(g[b].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],i=Math.pow(10,r);for(let c=0,u=this.vertices.length;c<u;c++){let a=this.vertices[c],d=Math.round(a.x*i)+"_"+Math.round(a.y*i)+"_"+Math.round(a.z*i);e[d]===void 0?(e[d]=c,t.push(this.vertices[c]),o[c]=t.length-1):o[c]=o[e[d]]}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 d=[a.a,a.b,a.c];for(let p=0;p<3;p++)if(d[p]===d[(p+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,d=this.faceVertexUvs.length;a<d;a++)this.faceVertexUvs[a].splice(u,1)}let l=this.vertices.length-t.length;return this.vertices=t,l}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new at(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let c=0;c<e;c++)r[c]._id=c;function t(c,u){return c.materialIndex-u.materialIndex}r.sort(t);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=r[c]._id;s&&s.push(o[u]),l&&l.push(i[u])}s&&(this.faceVertexUvs[0]=s),l&&(this.faceVertexUvs[1]=l)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let h in m)m[h]!==void 0&&(r[h]=m[h]);return r}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 t=[],o=[],i={},s=[],l={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,v=this.faceVertexUvs[0][m]!==void 0,b=h.normal.length()>0,w=h.vertexNormals.length>0,S=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=a(_,0,0),_=a(_,1,y),_=a(_,2,g),_=a(_,3,v),_=a(_,4,b),_=a(_,5,w),_=a(_,6,S),_=a(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),v){let x=this.faceVertexUvs[0][m];t.push(f(x[0]),f(x[1]),f(x[2]))}if(b&&t.push(d(h.normal)),w){let x=h.vertexNormals;t.push(d(x[0]),d(x[1]),d(x[2]))}if(S&&t.push(p(h.color)),T){let x=h.vertexColors;t.push(p(x[0]),p(x[1]),p(x[2]))}}function a(m,h,y){return y?m|1<<h:m&~(1<<h)}function d(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 p(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 r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new mo().copy(this)}copy(r){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=r.name;let e=r.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,f=t.length;p<f;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=r.faceVertexUvs.length;p<f;p++){let m=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let h=0,y=m.length;h<y;h++){let g=m[h],v=[];for(let b=0,w=g.length;b<w;b++){let S=g[b];v.push(S.clone())}this.faceVertexUvs[p].push(v)}}let i=r.morphTargets;for(let p=0,f=i.length;p<f;p++){let m={};if(m.name=i[p].name,i[p].vertices!==void 0){m.vertices=[];for(let h=0,y=i[p].vertices.length;h<y;h++)m.vertices.push(i[p].vertices[h].clone())}if(i[p].normals!==void 0){m.normals=[];for(let h=0,y=i[p].normals.length;h<y;h++)m.normals.push(i[p].normals[h].clone())}this.morphTargets.push(m)}let s=r.morphNormals;for(let p=0,f=s.length;p<f;p++){let m={};if(s[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=s[p].vertexNormals.length;h<y;h++){let g=s[p].vertexNormals[h],v={};v.a=g.a.clone(),v.b=g.b.clone(),v.c=g.c.clone(),m.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=s[p].faceNormals.length;h<y;h++)m.faceNormals.push(s[p].faceNormals[h].clone())}this.morphNormals.push(m)}let l=r.skinWeights;for(let p=0,f=l.length;p<f;p++)this.skinWeights.push(l[p].clone());let c=r.skinIndices;for(let p=0,f=c.length;p<f;p++)this.skinIndices.push(c[p].clone());let u=r.lineDistances;for(let p=0,f=u.length;p<f;p++)this.lineDistances.push(u[p]);let a=r.boundingBox;a!==null&&(this.boundingBox=a.clone());let d=r.boundingSphere;return d!==null&&(this.boundingSphere=d.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new od().fromGeometry(this),e=new Rh,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",dl.call(new ms(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",dl.call(new ms(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",zh.call(new ms(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Fh.call(new ms(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Fh.call(new ms(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],s=r.morphTargets[o];for(let l=0,c=s.length;l<c;l++){let u=s[l],a=new Wn(u.data.length*3,3);a.name=u.name,i.push(dl.call(a,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new Wn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",jh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new Wn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",jh.call(o,r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.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(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new Rh,t=r.geometry;if(r.isPoints||r.isLine){let o=new Wn(t.vertices.length*3,3),i=new Wn(t.colors.length*3,3);if(e.setAttribute("position",dl.call(o,t.vertices)),e.setAttribute("color",zh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new Wn(t.lineDistances.length,1);e.setAttribute("lineDistance",wT.call(s,t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};mo.prototype.isGeometry=!0;var od=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(r){let e=[],t,o,i,s=r.faces;for(o=0;o<s.length;o++){let l=s[o];l.materialIndex!==i&&(i=l.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:i})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,i=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,l=r.morphTargets,c=l.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:l[g].name,data:[]};this.morphTargets.position=u}let a=r.morphNormals,d=a.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:a[g].name,data:[]};this.morphTargets.normal=p}let f=r.skinIndices,m=r.skinWeights,h=f.length===t.length,y=m.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let v=e[g];this.vertices.push(t[v.a],t[v.b],t[v.c]);let b=v.vertexNormals;if(b.length===3)this.normals.push(b[0],b[1],b[2]);else{let S=v.normal;this.normals.push(S,S,S)}let w=v.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let S=v.color;this.colors.push(S,S,S)}if(i===!0){let S=o[0][g];S!==void 0?this.uvs.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new Rt,new Rt,new Rt))}if(s===!0){let S=o[1][g];S!==void 0?this.uvs2.push(S[0],S[1],S[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new Rt,new Rt,new Rt))}for(let S=0;S<c;S++){let T=l[S].vertices;u[S].data.push(T[v.a],T[v.b],T[v.c])}for(let S=0;S<d;S++){let T=a[S].vertexNormals[g];p[S].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[v.a],f[v.b],f[v.c]),y&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},qn=class{constructor(r,e,t,o,i,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new at,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new nd,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};function wT(n){return this.array.set(n),this}function zh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",t),i=new nd),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Fh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",t),i=new Rt),r[e++]=i.x,r[e++]=i.y}return this}function dl(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",t),i=new at),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function jh(n){let r=this.array,e=0;for(let t=0,o=n.length;t<o;t++){let i=n[t];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",t),i=new ST),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var TT=["a","b","c"];function PT(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function sd(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function ad(n,r,e,t,o,i){let s=Math.min(n,r),l=Math.max(n,r),c=s+"_"+l,u;if(t.has(c))u=t.get(c);else{let a=e[s],d=e[l];u={a,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function OT(n,r,e,t){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)s=r[o],ad(s.a,s.b,n,t,s,e),ad(s.b,s.c,n,t,s,e),ad(s.c,s.a,n,t,s,e)}function ul(n,r,e,t,o){n.push(new qn(r,e,t,void 0,void 0,o))}function $n(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function pl(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var fl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof _T?r=new mo().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new Uh,t,o,i,s,l,c=r.vertices,u=r.faces,a=r.faceVertexUvs[0],d=a!==void 0&&a.length>0,p=[],f=new Map;OT(c,u,p,f);let m=[],h,y,g,v,b,w,S;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new Uh,b=3/8,w=1/8,S=y.faces.length,S!=2&&(b=.5,w=0,S!=1),g.addVectors(y.a,y.b).multiplyScalar(b),e.set(0,0,0),s=0;s<S;s++){for(v=y.faces[s],l=0;l<3&&(h=c[PT(v,TT[l])],!(h!==y.a&&h!==y.b));l++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,x,N,P,C,O,A=[];for(o=0,i=c.length;o<i;o++){for(C=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),x=T,t<=2&&(t==2?(_=3/4,x=1/8):t==1||t==0),O=C.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)N=P[s],h=N.a!==C?N.a:N.b,e.add(h);e.multiplyScalar(Number(x)),O.add(e),A.push(O)}let R=A.concat(m),k=A.length,$,te,X,q=[],H=[],V,G,B,L,D=new id,Y=new id,W=new id;for(o=0,i=u.length;o<i;o++)v=u[o],$=Number(sd(v.a,v.b,f).newEdge)+k,te=Number(sd(v.b,v.c,f).newEdge)+k,X=Number(sd(v.c,v.a,f).newEdge)+k,ul(q,$,te,X,v.materialIndex),ul(q,v.a,$,X,v.materialIndex),ul(q,v.b,te,$,v.materialIndex),ul(q,v.c,X,te,v.materialIndex),d&&(V=a[o],G=V[0],B=V[1],L=V[2],D.set($n(G.x,B.x),$n(G.y,B.y)),Y.set($n(B.x,L.x),$n(B.y,L.y)),W.set($n(G.x,L.x),$n(G.y,L.y)),pl(H,D,Y,W),pl(H,G,D,W),pl(H,B,Y,D),pl(H,L,W,Y));r.vertices=R,r.faces=q,d&&(r.faceVertexUvs[0]=H)}};var qe=new CT,qh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Hh().copy(new Wh(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(qe),t={width:qe.x,height:qe.y,depth:qe.z,subdivisions:0}):t=r.parameters;let o={...t,...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:r,height:e,depth:t,subdivisions:o}=n.parameters,i=n.geometry??new Hh().copy(new Wh(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(qe)):qe.set(s.width,s.height,s.depth),(r!==qe.x||e!==qe.y||t!==qe.z)&&i.scale(qe.x===0?1:r/qe.x,qe.y===0?1:e/qe.y,qe.z===0?1:t/qe.z);let l=i.originalGeometry;try{o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new fl(o).modify(l).toBufferGeometry()):(l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{l!==void 0&&(i=l),l=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return l!==void 0&&Object.assign(i,{originalGeometry:l}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new AT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(qe);let s=100/qe.x;Object.assign(i.parameters,{width:100,height:qe.y*s,depth:qe.z*s}),r(this.build(i))})}};var ml=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,spikes:t,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,c=n.shape,u=r*.5,a=e*.5,d=0,p=0,f=2*Math.PI/t;for(let h=0;h<t;h++){let y=f*h,g=d+Math.sin(y)*u,v=p+Math.cos(y)*a;c.addPoint(c.createPoint(g,v))}c.isClosed=!0;for(let h=0,y=c.points.length;h<y;h++)c.points[h].roundness=o;c.roundness=o,c.update();let m=Tt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as NT,Float32BufferAttribute as ld,Vector2 as _r,Vector3 as Je}from"three";var $h=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e,depth:t,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=new dd(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function hs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function cd(n,r,e,t,o,i){let s=r.clone().sub(n),l=e.clone().sub(n),c=s.angleTo(l);if(s.normalize(),l.normalize(),t===o){let u=s.add(l).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=s.angleTo(l);i.copy(n),i.addScaledVector(s,o/Math.sin(u)),i.addScaledVector(l,t/Math.sin(u))}}function IT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var dd=class extends NT{constructor(r=.5,e=1,t=4,o=1,i=!1,s=0,l=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),l=Math.floor(l);let c=[],u=[],a=[],d=[],p=0,f=e/2,m=Math.PI/t,h=r*Math.cos(Math.PI/t),y=2*Math.PI/t,g=(t-2)*Math.PI/t,v=Math.PI-g,b=new Je(0,-f,0),w=new Je(0,f,0),S=new _r(r,-f),T=new _r(h,-f),_=new _r(0,w.y).sub(T),x=new _r(0,w.y).sub(S),N=new _r(_.y,-_.x).normalize(),P=new _r(x.y,-x.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;s=Math.min(s,O);let A;{let H=new Je(N.x,N.y,0),V=new Je(Math.cos(y)*H.x,H.y,Math.sin(y)*H.x);A=H.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),k=s/Math.tan((Math.PI-A)/2),$=new Je;if(!i){u.push(b.x,b.y,b.z),a.push(0,-1,0),d.push(0,0);let H=p++,V=[],G=S.clone(),B=R/Math.cos(Math.PI/t);G.x-=B;for(let L=0;L<t;L++){let D=L/t*Math.PI*2+m,Y=new _r(Math.sin(D),Math.cos(D));hs(G,Y,$),u.push($.x,$.y,$.z),a.push(0,-1,0),d.push(0,0),V.push(p++)}for(let L=0;L<V.length;L++)c.push(V[L],H,V[(L+1)%V.length])}let te=[];{let H=new Je,V=new Je,G=new Je,B=new Je,L=new Je,D=new Je;for(let Y=0;Y<t;Y++){let W=Y/t*Math.PI*2+m,F=(Y+.5)/t*Math.PI*2+m,j=(Y+1)/t*Math.PI*2+m,M=new _r(Math.sin(W),Math.cos(W)),Q=new _r(Math.sin(F),Math.cos(F)),re=new _r(Math.sin(j),Math.cos(j));hs(S,M,V),hs(S,re,G),hs(N,Q,H),cd(w,V,G,k,k,B),u.push(B.x,B.y,B.z),cd(V,w,G,k,R,L),u.push(L.x,L.y,L.z),cd(G,V,w,R,k,D),u.push(D.x,D.y,D.z),a.push(H.x,H.y,H.z),a.push(H.x,H.y,H.z),a.push(H.x,H.y,H.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,K=p++,ee=p++;if(c.push(oe,K,ee),s>0){{let ce=V.clone().add(G).multiplyScalar(.5),se=w.clone().sub(ce).normalize(),Ge=b.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ye=D.clone().sub(L);X(ce,ye,Ge,_.angle())}let J,ie;{let ce=new Je;hs(P,re,ce);let se=D.clone().add(B).multiplyScalar(.5);se=IT(se,G,w);let fe=D.clone().sub(B);[J,ie]=X(se,fe,ce,A,B.y)}{let ce=J,se=ce.clone().setY(0).normalize(),fe=new Je(0,-1,0),Ge=se.clone().cross(fe);q(ce,se,fe,Ge)}te.concat(ie);{let ce=_.angle(),se=Math.PI-ce,fe=w.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Ge=new Je,ye=[];for(let Te=0;Te<l;Te++){let vt=[],zt=Math.PI/2-se*Te/l,$o=Math.cos(zt),Nt=Math.sin(zt),Fs=F;for(let js=0;js<=Te;js++){let ks=Math.cos(Fs),Fe=Math.sin(Fs);H.x=$o*Fe,H.y=Nt,H.z=$o*ks,Ge.copy(fe).addScaledVector(H,s),u.push(Ge.x,Ge.y,Ge.z),a.push(H.x,H.y,H.z),d.push(0,0),vt.push(p++),Fs+=Math.PI*2/Te/t}ye.push(vt)}ie.reverse(),ye.push(ie);let Ue=ye.length-1;for(let Te=0;Te<Ue;Te++){let vt=ye[Te],zt=ye[Te+1],$o=vt.length-1;c.push(zt[1],vt[0],zt[0]);for(let Nt=1;Nt<=$o;Nt++)c.push(vt[Nt],vt[Nt-1],zt[Nt]),c.push(zt[Nt+1],vt[Nt],zt[Nt])}}}}}this.setIndex(c),this.setAttribute("position",new ld(u,3)),this.setAttribute("normal",new ld(a,3)),this.setAttribute("uv",new ld(d,2));function X(H,V,G,B,L){let D=-B/2,Y=(Math.PI-B)/2,W=V.clone().normalize().cross(G);H.addScaledVector(G,-s/Math.sin(Y));let F=new Je,j=new Je,M=1,Q=p,re=[];for(let oe=0;oe<=l;oe++){let K=D+oe/l*B;j.set(0,0,0),j.addScaledVector(W,Math.sin(K)),j.addScaledVector(G,Math.cos(K));for(let ee=0;ee<=M;ee++){let J=ee/M-.5;if(F.copy(H),F.addScaledVector(V,J),F.addScaledVector(j,s),L!=null){let ie=Math.max(0,F.y-L);F.addScaledVector(V,-ie/V.y)}u.push(F.x,F.y,F.z),a.push(j.x,j.y,j.z),d.push(0,0),ee===0&&re.push(p),p++}}for(let oe=0;oe<l;oe++)for(let K=0;K<M;K++){let ee=Q+K+(M+1)*oe,J=ee+(M+1),ie=J+1,ce=ee+1;c.push(ee,J,ce),c.push(J,ie,ce)}return[H.clone().addScaledVector(V,.5),re]}function q(H,V,G,B){let L=Math.PI/2,D=x.angle()-L,Y=[],W=new Je,F=new Je;for(let M=0;M<=l;M++){let Q=[],re=M/l;for(let oe=0;oe<=M;oe++){let ee=((M?oe/M:0)-.5)*v,J=Math.cos(ee),ie=Math.sin(ee),ce=Math.atan(Math.tan(D)*J),se=(L+ce)*re,fe=Math.cos(se),Ge=Math.sin(se);W.set(0,0,0),W.addScaledVector(V,Ge*J),W.addScaledVector(G,fe),W.addScaledVector(B,Ge*ie),F.copy(H).addScaledVector(W,s),u.push(F.x,F.y,F.z),a.push(W.x,W.y,W.z),d.push(0,0),Q.push(p++)}Y.push(Q)}let j=Y.length-1;for(let M=0;M<j;M++){let Q=Y[M],re=Y[M+1],oe=Q.length-1;c.push(Q[0],re[1],re[0]);for(let K=1;K<=oe;K++)c.push(Q[K-1],Q[K],re[K]),c.push(Q[K],re[K+1],re[K])}}}};var hl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(n){let r=n.shape,{width:e,height:t,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},a={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,S,T){return S>e&&T>t?Math.min(w*e/S,w*t/T):S>e?w*e/S:T>t?w*t/T:w}let f=[];f[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),f[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),f[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),f[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let m=a.x,h=d.x,y=d.y,g=a.y;r.addPoint(r.createPoint(m,y)),r.addPoint(r.createPoint(h,y)),r.addPoint(r.createPoint(h,g)),r.addPoint(r.createPoint(m,g)),r.isClosed=!0;let v=!0;for(let w=0,S=r.points.length;w<S;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(v=!1);v&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let b=Tt.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as MT}from"three";var Xh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:l,thetaStart:c,thetaLength:u}=n.parameters,a=new MT(.5*r,o,i,s,l,c,u);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...n,type:"SphereGeometry"}})}};import{PlaneGeometry as ET}from"three";var Yh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=n.parameters,i=new ET(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as LT,Float32BufferAttribute as ud,Vector3 as BT}from"three";var Kh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e,depth:t,angle:o,cornerRadius:i,cornerSegments:s}=n.parameters,l=new pd(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},pd=class extends LT{constructor(r=1,e=1,t=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 d=[],p=Math.PI/2,f=(F=0,j=0,M=0)=>new BT(F,j,M),m=f(),h=f(),[y,g,v]=[e/2,r/2,t/2],b=-g,w=+g,[S,T,_]=[f(b,-y,+v),f(b,-y,-v),f(b,+y,-v)],x=(F,j=!1)=>Math.sin(F-Math.PI/(1+ +j)),N=(F,j=!1)=>Math.cos(F-Math.PI/(1+ +j));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,C=S.z-a;o<=p?(_.z=Math.min(P,C),_.z==C&&(_.y-=(P-C)/Math.tan(p-o))):T.z=Math.min(T.z-P-v,S.z-a),m.subVectors(S,T),h.subVectors(_,T);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),R=O/Math.cos(o/2),k=m.clone().normalize().add(h.normalize()).setLength(R).add(T);m.set(0,x(o,!0),N(o,!0)),d.push([_,m.clone()]);let $=(Math.PI-o)/s;for(let F=0;F<=s;F++){let j=p+o+F*$;m.set(0,Math.sin(j)*A,Math.cos(j)*A),m.add(k),h.set(0,x(j),N(j)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let te=Math.sin($/2)*A*2,X=d.length-1,q=d[0][0].distanceTo(d[1][0]),H=d[X-1][0].distanceTo(d[X][0]),V=q+te*s+H;d[0].push(1);for(let F=0;F<=s;F++)d[F+1].push(1-(q+F*te)/V);d[X].push(0);let[G,B,L]=d[0],D,Y,W;for(let F=1;F<d.length;F++)[D,Y,W]=d[F],l.push(b,G.y,G.z,b,D.y,D.z,w,G.y,G.z,w,G.y,G.z,b,D.y,D.z,w,D.y,D.z),c.push(0,B.y,B.z,0,Y.y,Y.z,0,B.y,B.z,0,B.y,B.z,0,Y.y,Y.z,0,Y.y,Y.z),u.push(0,L,0,W,1,L,1,L,0,W,1,W),[G,B,L]=[D,Y,W];this.setAttribute("position",new ud(l,3)),this.setAttribute("normal",new ud(c,3)),this.setAttribute("uv",new ud(u,2))}};var yl=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:i,angle:s,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,a=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=s*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,v=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let S=h*w,T=f+Math.sin(S)*d,_=m+Math.cos(S)*p;a.addPoint(a.createPoint(T,_))}}else for(let w=0;w<o;w++){let S=f+Math.cos(y)*d,T=m+Math.sin(y)*p;a.addPoint(a.createPoint(S,T)),y+=h,S=f+Math.cos(y)*g,T=m+Math.sin(y)*v,w<=o,a.addPoint(a.createPoint(S,T)),y+=h}a.isClosed=!0;for(let w=0,S=a.points.length;w<S;w++)a.points[w].roundness=i;a.roundness=i,a.update();let b=Tt.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as DT}from"three";var Zh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,height:e}=n.parameters,t=new DT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Qh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),t=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:t,height:o,depth:i})}}static build(n){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:l,cornerSegments:c}=n.parameters,u=GT(r,e,t,r*.5,s,i,0,0,o,l,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function GT(n,r,e,t,o,i,s,l,c,u,a){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(u=0),new ps(!0,n,r,e,t,o,i,s,l,c,u,a)}import{TorusKnotGeometry as RT}from"three";var Jh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.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:r,tube:e,tubularSegments:t,radialSegments:o,p:i,q:s}=n.parameters,l=r*.5;l!==e&&(l-=e);let c=new RT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var ey=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Se?n.shape:new Se,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:l}=n.parameters,c=n.shape,u=r*.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 p=0,f=c.points.length;p<f;p++)c.points[p].roundness=t;c.roundness=t,c.update();let d=Tt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as ry,Vector3 as et,Matrix4 as ys,BufferGeometry as oy,BufferAttribute as fd,MathUtils as md}from"three";function ty(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function VT(n,r,e){let t=[new et,new et,new et],o=[new et,new et,new et];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,s)=>{let l=o[s],c=md.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new ys().makeBasis(t[0],t[1],t[2])}var ny=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=Object.assign({},r?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),s=r?.shapeData??Hn.create({parameters:wc}).userData.shape;return{path:n.path??Cn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...ja,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new hd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new oy,{userData:{...n,type:"PathGeometry"}})}},hd=class extends oy{constructor(e){super();this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&e.depth===1)||!ty(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let t=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion,s=this.inputs.path.isClosed?e.length:e.length-1,l=Math.floor(i*s),c=this.inputs.path.isClosed?Math.ceil((o+i)*s):Math.ceil(Math.min(1,o+i)*s),u=Math.min(Math.max(2,c-l+1),s+2),a=[],d=[];for(let O=0;O<u;O++){let A=this.inputs.path.isClosed?(O+l)%e.length:Math.min(O+l,e.length-1);a.push(e[A].clone()),d.push(t[A].clone())}let p=(O,A,R)=>{a[O]=a[O].clone().lerp(a[A],R),d[O]=VT(d[O],d[A],R)},f=0,m=i*s%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*s%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(a.length-1,a.length-2,1-h)),o===0){let O=a.length-1;a[O].copy(a[0]),d[O].copy(d[0])}this._applyPathModifiers(d,f,h);let{regions:g,infos:v,vertices:b}=this._computeShapePoints(5),w=0,S=0;v.sort((O,A)=>O.start-A.start),v.forEach(O=>{O.verticesStart=w,O.verticesCount=O.continuous.reduce((A,R,k)=>A+(k===0||!R?2:1),0),S+=O.verticesCount,w=S});let T=S*u,_,x=0;if(this._isOpenEnded()){try{_=rr({windingRule:ve.ODD,elementType:De.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=Jc}x=_.vertexCount}let N=T+2*x,P={positions:new Float32Array(N*3),normals:new Float32Array(N*3),uvs:new Float32Array(N*2)},C=[];v.forEach(O=>{this._extrudeRegion(O,b,d,a,P,C,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,T,C,P,d[0],a[0],!1),this._closeEnd(_,T+x,C,P,d[d.length-1],a[a.length-1],!0)),this.setAttribute("position",new fd(P.positions,3)),this.setAttribute("normal",new fd(P.normals,3)),this.setAttribute("uv",new fd(P.uvs,2)),this.setIndex(C)}_extractPathPoints(){let t=Ka(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(s=>{o[o.length-1].distanceToSquared(s)>.001&&o.push(s)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let t=[],o=e.length,i=this.inputs.path.isClosed,s=new et,l=new et,c=new et,u=new et,a=new et(0,1,0);for(let y=0;y<o;y++){let g=e[y],v;y===0?v=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):v=e[y-1];let b;y===o-1?b=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):b=e[y+1];let w=g.clone().sub(v).normalize(),S=b.clone().sub(g).normalize(),T=w.clone().add(S).normalize();c.copy(T),y===0&&(T.equals(a)||T.clone().negate().equals(a))&&a.set(0,0,1);let _=a.clone().cross(T).normalize(),x=T.clone().cross(_).normalize();a.copy(x),u.copy(_),y===0&&(s.copy(x),l.copy(T));let N=new ys().makeBasis(_,x,T);t.push(N)}let d=i?l:c,p=i?s:new et(0,1,0),f=d.clone().cross(u).normalize(),m=Math.acos(p.dot(f));if(isNaN(m))return t;let h=p.clone().cross(f);d.dot(h)>0&&(m*=-1);for(let y=1;y<t.length;y++){let g=new ys().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:s,twist:l,startScale:c,endScale:u}=this.inputs.parameters.extrusion,a=new ys,d=new ys;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));a.makeRotationZ(md.lerp(s,s+l,m));let h=md.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(a).multiply(d)}),e}_computeShapePoints(e=12,t=ve.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),s=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let v=y.length-1;v>=1;v-=2){let b=y[v-1],w=y[v-0];g.push(b,w)}return g}),l;try{l=rr({windingRule:t,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{l=us}let c;try{c=rr({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=Qc}if(!l)throw new Error("error generating geometry");let u=l.elementCount;if(c){l.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?l.vertexCount:0;l.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=l.vertexCount;l.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];l.vertices.push(y)}}let a=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=l.vertexCount;h<y;h++){let g=h*2,v=l.vertices[g+0],b=l.vertices[g+1];v<a&&(a=v),v>d&&(d=v),b<p&&(p=b),b>f&&(f=b)}let m=[];for(let h=l.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,v=l.elements[g+0],b=l.elements[g+1],w=v+b,S={start:v,count:b,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(S);let T=v,_=w-1,x=v+1,N=o.roundedCurves.length;do{let P=T-v,C=l.vertices[_*2+0],O=l.vertices[_*2+1],A=l.vertices[T*2+0],R=l.vertices[T*2+1],k=l.vertices[x*2+0],$=l.vertices[x*2+1],te=A-C,X=R-O,q=Math.sqrt(te*te+X*X);te/=q,X/=q;let H=A-k,V=R-$,G=Math.sqrt(H*H+V*V);H/=G,V/=G,S.normals[P*2+0]=-V,S.normals[P*2+1]=H;let B=l.vertexIndices[T];if(Array.isArray(B))S.continuous[P]=!1;else{let[L,D]=o.getCurveIndexFromVertexId(B-1,!0);if(D>0&&D<1)S.continuous[P]=!0;else{let Y=D===1?L+1:L-1;Y=(Y+N)%N;let W=D===1?0:1,F=o.roundedCurves[L].getTangent(D),j=o.roundedCurves[Y].getTangent(W);S.continuous[P]=F.dot(j)>.95}}y&&(S.normals[P*2+0]*=-1,S.normals[P*2+1]*=-1),[_,T,x]=[T,x,x+1],x>=w&&(x-=b)}while(x!==v+1)}return{regions:[i,...s],infos:m,vertices:l.vertices}}_insertVertex(e,t,o,i,s){let l=t*2,c=t*3;e.positions[c+0]=o.x,e.positions[c+1]=o.y,e.positions[c+2]=o.z,e.normals[c+0]=i.x,e.normals[c+1]=i.y,e.normals[c+2]=i.z,e.uvs[l+0]=s.x,e.uvs[l+1]=s.y}_extrudeRegion(e,t,o,i,s,l,c){let u=new et,a=new et,d=new et,p=new et,f=new ry;o.forEach((h,y)=>{let g=i[y],v=e.verticesStart*o.length+e.verticesCount*y;for(let b=0;b<e.count;b++){let w=(e.start+b)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[b])p.set(e.normals[b*2+0],e.normals[b*2+1],0);else{let S=b==0?(e.start+e.count-1)*2:w-2;a.set(t[S+0],t[S+1],0),p.copy(u).sub(a),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(b===0?1:b/e.count,y/(o.length-1)),this._insertVertex(s,v,d,p,f),v++,!e.continuous[b]||b===0){if(b===0)p.set(e.normals[b*2+0],e.normals[b*2+1],0),f.set(0,y/(o.length-1));else{let S=b===e.count-1?e.start*2:w+2;a.set(t[S+0],t[S+1],0),p.copy(a).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(s,v,d,p,f),v++}}});let m=o.length-1;for(let h=0;h<m;h++){let y=e.verticesStart*o.length+e.verticesCount*h,g=e.verticesStart*o.length+e.verticesCount*(h+1),v=0;for(let b=0;b<e.count;b++){(!e.continuous[b]||b===0)&&v++;let w=b===e.count-1?0:v+1,S=y+v,T=y+w,_=g+w,x=g+v;e.isHole?l.push(S,_,T,S,x,_):l.push(S,T,_,S,_,x),v++}}}_closeEnd(e,t,o,i,s,l,c){let u=e.vertexCount,a=new et(0,0,c?-1:1).applyMatrix4(s),d=new et,p=new ry;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(s).add(l),this._insertVertex(i,t+m,d,a,p)}let f=e.elements;for(let m=0;m<e.elementCount;m++){let h=3*m,y=f[h+0]+t,g=f[h+(c?1:2)]+t,v=f[h+(c?2:1)]+t;o.push(y,g,v)}}};import{BufferAttribute as iy,BufferGeometry as yd}from"three";import{mergeBufferGeometries as zT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function sy(){let n=new yd;return n.setAttribute("position",new iy(new Float32Array([]),3)),n.setIndex(new iy(new Uint16Array([]),1)),n}var FT=sy().attributes,jT=12,kT=1,Xn=class extends yd{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,FT),this.userData={parameters:e,type:"TextGeometry"};let o=t.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,t).then(()=>{this.update(e),t?.requestRender()})}async updateFont(e,t){let o=t.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let t=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!t?.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}=e,d=a===2?u.toUpperCase():a===3?u.toLowerCase():u,p=UT(e,t,d),{shapes:f,charWidths:m,charCoords:h}=t.generateShapes(p,e),y=o*.5,g=i*.5,v=f.map(S=>new Se().fromShape(S));this.vectorShapes=v;let b=v.map(S=>Tt.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?ve.NONZERO:ve.ODD,subdivisions:this.isLowResolution&&s>0?kT:jT}})),w=b.length?zT(b):sy();w.translate(-y,g,0),this.dispose(),this.wrappedText=p,this.charCoords=h,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(w.attributes).forEach(([S,T])=>{this.setAttribute(S,T)}),this.setIndex(w.index),this.computeBoundingSphere()}clone(){let e=Gr(new yd,Xn.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([t,o])=>{this.setAttribute(t,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 UT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
2
2
  `?(t[t.length-1]+=o,o="",i===`
3
- `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as gu,BufferAttribute as cy,Uint32BufferAttribute as xu,Float32BufferAttribute as vu,Matrix4 as WT,Vector3 as xs,Sphere as qT,Box3 as $T,BoxGeometry as XT}from"three";var ay,Kn=new Promise(n=>{ay=n}),sy=!1;async function ly(){if(sy)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.348/build",[e,t]=await Promise.all([import("./process.js"),fetch(`${r}/process.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});ay(i),sy=!0}import{BufferGeometryLoader as kT}from"three";function Eo(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Se.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new kT().parse(n);else{if(n.type==="SubdivGeometry")return new ke(n,e);if(n.type==="TextGeometry")return new Xn(n,r)}let o;try{o=yu(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(on.defaultData(),100,100);t.shape=i,o=yu(t)}return o}import{Matrix4 as UT}from"three";var HT=new UT;function gs(n,r,e,t){let o=n.position.array,i=n.normal.array,s=HT.makeScale(r,e,t).invert().elements,l,c,d;for(var a=0,u=o.length;a<u;a+=3)o[a]*=r,o[a+1]*=e,o[a+2]*=t,l=i[a],c=i[a+1],d=i[a+2],i[a]=s[0]*l+s[4]*c+s[8]*d,i[a+1]=s[1]*l+s[5]*c+s[9]*d,i[a+2]=s[2]*l+s[6]*c+s[10]*d;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var yl=new $T,Zn=new xs,ue;Kn.then(n=>{ue=n});var uy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),dy=new Uint32Array([0,1,2,3]),py=new Uint8Array([4]),ke=class extends gu{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=to.div(t,o);this.subdividedGeometry&&gs(this.subdividedGeometry.attributes,...i),this.originalGeometry&&gs(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Zn.fromArray(i));let l=Zn.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=l/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=ke.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new XT(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(ke.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new qT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;yl.setFromBufferAttribute(t),yl.getCenter(o),e.boundingSphere.radius=o.distanceTo(yl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),yl.getSize(Zn);let i={width:Zn.x,height:Zn.y,depth:Zn.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,d=e?.phongAngle??35;o===!1&&(d=-1),t&&(ue.free_bvh(t),ue.free_subdivision_surface(t));try{s=ke.allocate(e,i)}catch(a){console.error(a,e),s=ke.allocate({positionWASM:uy,indexWASM:dy,verticesPerFaceWASM:py},i)}if(ue.set_destination_refinement_level(s,0),l=ke.buildLevel(s,!0,d),e.subdivisions>0)try{ue.set_destination_refinement_level(s,e.subdivisions),c=ke.buildLevel(s,!1,d)}catch{try{ue.set_destination_refinement_level(s,e.subdivisions-1),c=ke.buildLevel(s,!1,d)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:l,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0?t.geometry:Eo(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let l,c,d,a;({positions:l,triIndices:a}=_u(i.getAttribute("position"),s));let u;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;u=[p,f]}return{indices:c,verticesPerFace:d}=Tu(l,a,i,u),{positions:l,indices:c,verticesPerFace:d}}static allocate(e,t){let o,i,s,l=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=uy,i=dy,s=py);let d=o.length,a=i.length,u=s.length,p=o.length+l.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=ue._malloc(m),v=new Float32Array(ue.HEAPF32.buffer,g,p),b=new Uint32Array(ue.HEAPU32.buffer,g+h,f);v.set(o,0),v.set(l,o.length),v.set(c,o.length+l.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(T=>T!==1)&&(w=new WT().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?ue.alloc_subdivision_surface2(g,d,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,u,w.elements):ue.alloc_subdivision_surface(g,d,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,u);return ue._free(g),S}static buildLevel(e,t,o,i,s){let l=s?ue.get_mesh_data2(e,t?ue.Level.CONTROL:ue.Level.REFINED,o,s.elements):ue.get_mesh_data(e,t?ue.Level.CONTROL:ue.Level.REFINED,o),c=8,d=ue.HEAPU32.subarray(l>>2,(l>>2)+c),a=d.subarray(4,4+4),u=0,p=ue.HEAPU32[d[u]>>2],f=ue.HEAPF32.subarray(p>>2,(p>>2)+a[u]);u++;let m=ue.HEAPU32[d[u]>>2],h=ue.HEAPF32.subarray(m>>2,(m>>2)+a[u]);u++;let y=ue.HEAPU32[d[u]>>2],g=ue.HEAPU32.subarray(y>>2,(y>>2)+a[u]);u++;let v=ue.HEAPU32[d[u]>>2],b=ue.HEAPU32.subarray(v>>2,(v>>2)+a[u]);if(u++,i===void 0){let w=new gu;if(w.setIndex(new xu(b,1)),w.setAttribute("position",new vu(f,3)),w.setAttribute("normal",new vu(h,3)),t){w.setAttribute("faceMap",new xu(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new cy(S,4))}return ue.free_mesh_data(l),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,ue.free_mesh_data(l)}static freeSubdivPointer(e){ue.free_bvh(e),ue.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=ue.get_wireframe_data_for_base_level(e),s=4,l=ue.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),d=0,a=ue.HEAPU32[l[d]>>2],u=ue.HEAPF32.subarray(a>>2,(a>>2)+c[d]);d++;let p=ue.HEAPU32[l[d]>>2],f=ue.HEAPU32.subarray(p>>2,(p>>2)+c[d]);if(t===void 0){let m=new gu;m.setAttribute("position",new vu(u,3));let h=new Float32Array(u.length);for(let y=0,g=u.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new cy(h,3)),m.setIndex(new xu(f,1)),ue.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(u),t.attributes.position.needsUpdate=!0,ue.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||ue.set_destination_refinement_level(e,t);let s=o?ue.get_topological_data2(e,i?ue.Level.CONTROL:ue.Level.REFINED,o.elements):ue.get_topological_data(e,i?ue.Level.CONTROL:ue.Level.REFINED),l=6,c=ue.HEAPU32.subarray(s>>2,(s>>2)+l),d=c.subarray(3,3+3),a=0,u=ue.HEAPU32[c[a]>>2],p=new Float32Array(ue.HEAPF32.subarray(u>>2,(u>>2)+d[a]));a++;let f=ue.HEAPU32[c[a]>>2],m=new Uint32Array(ue.HEAPU32.subarray(f>>2,(f>>2)+d[a]));a++;let h=ue.HEAPU32[c[a]>>2],y=new Uint8Array(ue.HEAPU32.subarray(h>>2,(h>>2)+d[a]));return ue.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var fy=["getX","getY","getZ"];function _u(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],l=1e4;for(let d=0;d<t;d++){let a=r?r.getX(d):d,u="";for(let p=0;p<3;p++)u+=`${~~(n[fy[p]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let p=0;p<3;p++)s.push(n[fy[p]](a));e[u]=o,i.push(o),o++}}let c=[];for(let d=0;d<i.length;d+=3)i[d]===i[d+1]||i[d]===i[d+2]||i[d+1]===i[d+2]||c.push(i[d],i[d+1],i[d+2]);return{positions:s,triIndices:c}}var gl=new xs,bu=new xs,Su=new xs,wu=new xs;function Tu(n,r,e,t){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,p)=>Math.floor(p/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 d=0;if(c<0)for(let a=0;a<s.length;a+=2)n.push(s[a],s[a+1],0),o.push(d++);else for(let a=s.length-2;a>=0;a-=2)n.push(s[a],s[a+1],0),o.push(d++);return i.push(d),{indices:o,verticesPerFace:i}}for(let s=0,l=e.capStartIndex??r.length;s<l;)if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){gl.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),bu.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Su.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),wu.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),bu.sub(gl).normalize(),Su.sub(gl).normalize(),wu.sub(gl).normalize();let c=bu.cross(Su).dot(wu);Math.abs(c)>.005||t&&t.some((d,a)=>a%2===1?!1:s>=t[a]&&s<t[a+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],l=[],c=0,d=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]===d&&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 or={};o0(or,{calcBoolean:()=>JT,calcBooleanTopological:()=>QT,freeMeshSet:()=>rP,getMeshSet:()=>eP,transformMeshSet:()=>tP});var YT,my=new Promise(n=>{YT=n});import{Float32BufferAttribute as hy,Sphere as KT}from"three";var ge,Qn;my.then(n=>ge=n);function ZT(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:s}=_u(n.getAttribute("position"),o),l;if(r&&e){let{indices:c,verticesPerFace:d}=Tu(i,s,n);l=d.length,t=[];for(let a=0,u=0;a<l;a++){t.push(d[a]);for(let p=0;p<d[a];p++)t.push(c[u++])}}else{let c=s.length;t=Array(c+c/3),l=0;for(let d=0,a=0;a<t.length;)t[a++]=3,l++,t[a++]=s[d++],t[a++]=s[d++],t[a++]=s[d++]}return{positions:i,faceIndices:t,nFaces:l}}function yy(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=ge._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ge.HEAPU32.buffer,i,r):new Float32Array(ge.HEAPF32.buffer,i,r)).set(n,0),i}function gy(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 QT(n,r){Qn===void 0&&(Qn=ge.init_csg());let e=yy(n),t=ge.csg_calc_topological(Qn,e,n.length,gy(r));ge._free(e);let o=6,i=ge.HEAPU32.subarray(t>>2,(t>>2)+o),s=i.subarray(3,3+3),l=0,c=ge.HEAPU32[i[l]>>2],d=new Float32Array(ge.HEAPF32.subarray(c>>2,(c>>2)+s[l]));l++;let a=ge.HEAPU32[i[l]>>2],u=new Uint32Array(ge.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ge.HEAPU32[i[l]>>2],f=new Uint8Array(ge.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ge.free_mesh_data(t),{positions:d,indices:u,verticesPerFace:f}}function JT(n,r,e,t){Qn===void 0&&(Qn=ge.init_csg());let o=yy(n),i=ge.csg_calc(Qn,o,n.length,t,gy(r));ge._free(o);let s=5,l=ge.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+3),d=0,a=ge.HEAPU32[l[d]>>2],u=ge.HEAPF32.subarray(a>>2,(a>>2)+c[d]);d++;let p=ge.HEAPU32[l[d]>>2],f=ge.HEAPF32.subarray(p>>2,(p>>2)+c[d]);d++;let m=c[d];e.setAttribute("position",new hy(u,3)),e.setAttribute("normal",new hy(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new KT),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 eP(n,r,e){if(ge===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,v)=>g+v,0)+i);for(let g=0,v=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=ZT(n,r,e));let s=t.length,l=o.length,c=t.length,d=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+d*Uint32Array.BYTES_PER_ELEMENT,u=c*Float32Array.BYTES_PER_ELEMENT,p=d*Uint32Array.BYTES_PER_ELEMENT,f=ge._malloc(a),m=new Float32Array(ge.HEAPF32.buffer,f,c),h=new Uint32Array(ge.HEAPU32.buffer,f+u,d);return m.set(t,0),h.set(o,0),ge.get_csg_mesh(f,s,f+u,l,i)}function tP(n,r){ge.transform_csg_mesh(n,r.elements)}function rP(n){ge.free_csg_mesh(n)}var oP={ConeGeometry:eh,CubeGeometry:th,CylinderGeometry:Jm,DodecahedronGeometry:rh,EllipseGeometry:Hn,HelixGeometry:Lh,IcosahedronGeometry:Bh,LatheGeometry:Dh,NonParametricGeometry:Wh,PolygonGeometry:fl,PyramidGeometry:qh,RectangleGeometry:ml,SphereGeometry:$h,PlaneGeometry:Xh,BackdropGeometry:Yh,StarGeometry:hl,TextFrameGeometry:Kh,TorusGeometry:Zh,TorusKnotGeometry:Qh,TriangleGeometry:Jh,PathGeometry:oy,VectorGeometry:Tt},yu=n=>oP[n.type].create(n);function vs(n){return n!==null&&"booleanOp"in n}var Jn=class extends Za(iP){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new nP}updateVisible(){super.updateVisible(),this.visible=!vs(this.parent)&&this.visible,vs(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),vs(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Jn&&(e.freeBooleanPointer(),vs(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&vs(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var xl=new sP;function bs(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,l=1/0,c=-1/0,d=-1/0,a=-1/0;for(let u=r;u<e;u++){let p=n.getX(u),f=n.getY(u),m=n.getZ(u);p<i&&(i=p),f<s&&(s=f),m<l&&(l=m),p>c&&(c=p),f>d&&(d=f),m>a&&(a=m)}xl.min.set(i,s,l),xl.max.set(c,d,a),xl.getCenter(t),xl.getSize(o).multiplyScalar(.5)}var cP=new aP,uP=new lP,lt=class extends Jn{constructor(r,e){super(cP,uP),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?bs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as vO,Matrix4 as bO,Sphere as Uy,Vector3 as SO}from"three";import{BufferAttribute as yO,Float32BufferAttribute as ky,MathUtils as Ku,Vector3 as Zu}from"three";import{ShaderMaterial as oO}from"three";import{CubeReflectionMapping as wP,CubeRefractionMapping as _P,CubeUVReflectionMapping as TP,LinearEncoding as Sy,sRGBEncoding as PP}from"three";var Ss=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};import{MathUtils as dP}from"three";var tt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=dP.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,s){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof tt&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var Pu=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},$e=new Pu;import{Vector2 as xy}from"three";import{MathUtils as pP}from"three";var ae=class extends tt{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=pP.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,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return l.name=l.name||super.build(e,t,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let d=this.getTemp(e,o);if(d)return e.format(d,c,t);{d=super.generate(e,t,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(d+" = "+a+";"),e.format(d,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ie=class extends ae{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,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,t,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,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}};var ze=class extends Ie{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof xy?e:new xy(e,t)}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,t,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as vy}from"three";var ct=class extends Ie{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof vy?e:new vy(e,t,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,t,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as fP}from"three";var Xe=class extends fP{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,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)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,s=o[1],l=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}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 Pt=class extends Ie{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Xe?e:new Xe(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var mP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,by=/[a-z_0-9]+/gi,U=class extends ae{constructor(e,t,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,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,s){let l,c=0,d=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=by.exec(this.src);)a.push(l);for(let u=0;u<a.length;u++){let p=a[u],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&$e.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=$e.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||$e.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&d[p.index+c-1]!=="."&&(d=d.substring(0,p.index+c)+h+d.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&$e.contains(h)&&e.include($e.get(h))}return t==="source"?d:this.isMethod?(this.isInterface||e.include(this,void 0,d),this.name):e.format("( "+d+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=mP.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(by);if(l){let c=0;for(;c<l.length;){let d=l[c++],a;d==="in"||d==="out"||d==="inout"?a=l[c++]:(a=d,d="");let u=l[c++];this.inputs.push({name:u,type:a,qualifier:d})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var hP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ou=class extends ae{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Ou.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let l,c,d="",a=hP.exec(e);this.useDefine=s??this.src.charAt(0)==="#",a&&a.length>1?(c=a[1],l=a[2],d=a[3]):(l=this.src,c="f"),this.name=l,this.type=c,this.value=d}build(e,t){if(t==="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),t)}generate(e,t,o,i,s){return e.format(this.name,this.getType(e),t)}},be=Ou;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var yP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),gP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),ei=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=yP.exec(e);if(t){let o=t[2],i;for(;i=gP.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var ti=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){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),t)}};$e.addKeyword("uv",function(){return new ti});$e.addKeyword("uv2",function(){return new ti(1)});import{LinearEncoding as xP,sRGBEncoding as vP}from"three";var Lo=class extends ae{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Lo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case xP:return["Linear"];case vP:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Lo.Nodes[this.method],l=e.include(s);if(l===Lo.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,t)}else return e.format(l+"( "+o+" )",i,t)}fromEncoding(e){let t=Lo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Lo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},gt=Lo;gt.Nodes={LinearToLinear:new U(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
3
+ `&&t.push("")):r.getTextWidth(t[t.length-1]+o,n)>n.width&&(t[t.length-1].length&&t.push(""),r.getTextWidth(t[t.length-1]+o,n)>n.width&&(o.length===1?(t[t.length-1]+=o,o=""):(t[t.length-1]+=o.slice(0,-1),o=o[o.length-1],t.push(""))));return t[t.length-1]+=o,t}import{BufferGeometry as xd,BufferAttribute as dy,Uint32BufferAttribute as vd,Float32BufferAttribute as bd,Matrix4 as $T,Vector3 as xs,Sphere as XT,Box3 as YT,BoxGeometry as KT}from"three";var ly,Kn=new Promise(n=>{ly=n}),ay=!1;async function cy(){if(ay)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.350/build",[e,t]=await Promise.all([import("./process.js"),fetch(`${r}/process.wasm`).then(s=>s.arrayBuffer())]),o=e.default,i=await o({wasmBinary:t});ly(i),ay=!0}import{BufferGeometryLoader as HT}from"three";function Eo(n,r,e){let t={parameters:n,type:n.type};if(n.type==="PathGeometry")t.path=n.path;else if(n.type==="VectorGeometry"){let i=Se.createFromState(n.shape,n.width,n.height);t.shape=i}else if(n.type==="NonParametricGeometry")n.data.groups&&n.data.groups.forEach(i=>i.materialIndex=Math.max(i.materialIndex??0,0)),t.geometry=new HT().parse(n);else{if(n.type==="SubdivGeometry")return new ke(n,e);if(n.type==="TextGeometry")return new Xn(n,r)}let o;try{o=gd(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(An.defaultData(),100,100);t.shape=i,o=gd(t)}return o}import{Matrix4 as WT}from"three";var qT=new WT;function gs(n,r,e,t){let o=n.position.array,i=n.normal.array,s=qT.makeScale(r,e,t).invert().elements,l,c,u;for(var a=0,d=o.length;a<d;a+=3)o[a]*=r,o[a+1]*=e,o[a+2]*=t,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;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var gl=new YT,Zn=new xs,de;Kn.then(n=>{de=n});var uy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),py=new Uint32Array([0,1,2,3]),fy=new Uint8Array([4]),ke=class extends xd{constructor(e,t){super();this.data=e;this.flatShading=t;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,t){this.freeSubdivPointer();let o=this.data.scaleBaked,i=so.div(t,o);this.subdividedGeometry&&gs(this.subdividedGeometry.attributes,...i),this.originalGeometry&&gs(this.originalGeometry.attributes,...i),this.data=e;let s=this.userData.parameters;this.userData.parameters={width:s.width*i[0],height:s.height*i[1],depth:s.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Zn.fromArray(i));let l=Zn.set(s.width,s.height,s.depth).length();this.originalGeometry.boundingSphere.radius=l/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=ke.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new KT(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=t??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(ke.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new XT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;gl.setFromBufferAttribute(t),gl.getCenter(o),e.boundingSphere.radius=o.distanceTo(gl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),gl.getSize(Zn);let i={width:Zn.x,height:Zn.y,depth:Zn.z};return this.userData.parameters=i,i}static build(e,t,o,i){let s,l,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(de.free_bvh(t),de.free_subdivision_surface(t));try{s=ke.allocate(e,i)}catch(a){console.error(a,e),s=ke.allocate({positionWASM:uy,indexWASM:py,verticesPerFaceWASM:fy},i)}if(de.set_destination_refinement_level(s,0),l=ke.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=ke.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=ke.buildLevel(s,!1,u)}catch{c=null}}else c=null;return{subdivPointer:s,originalGeometry:l,subdividedGeometry:c}}static primitiveToQuads(e,t,o){e.widthSegments>16&&(e.widthSegments=16),e.heightSegments>16&&(e.heightSegments=16),e.depthSegments>16&&(e.depthSegments=16),e.radialSegments>16&&(e.radialSegments=16),e.type==="DodecahedronGeometry"&&(e.detail=0);let i=e.shape!==void 0?t.geometry:Eo(e,o,!1),s;e.type==="TorusGeometry"&&e.arc===Math.PI*2?s=i.getClosedTorusIndicesForBooleanOrSubdiv():s=i.getIndex();let l,c,u,a;({positions:l,triIndices:a}=Td(i.getAttribute("position"),s));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=Pd(l,a,i,d),{positions:l,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,s,l=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,s=e.verticesPerFaceWASM):(o=uy,i=py,s=fy);let u=o.length,a=i.length,d=s.length,p=o.length+l.length+c.length,f=i.length+s.length,m=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,h=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=de._malloc(m),v=new Float32Array(de.HEAPF32.buffer,g,p),b=new Uint32Array(de.HEAPU32.buffer,g+h,f);v.set(o,0),v.set(l,o.length),v.set(c,o.length+l.length),b.set(i,0),b.set(s,i.length);let w;e?.scaleBaked?.some(T=>T!==1)&&(w=new $T().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let S=w?de.alloc_subdivision_surface2(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):de.alloc_subdivision_surface(g,u,g+h,a,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return de._free(g),S}static buildLevel(e,t,o,i,s){let l=s?de.get_mesh_data2(e,t?de.Level.CONTROL:de.Level.REFINED,o,s.elements):de.get_mesh_data(e,t?de.Level.CONTROL:de.Level.REFINED,o),c=8,u=de.HEAPU32.subarray(l>>2,(l>>2)+c),a=u.subarray(4,4+4),d=0,p=de.HEAPU32[u[d]>>2],f=de.HEAPF32.subarray(p>>2,(p>>2)+a[d]);d++;let m=de.HEAPU32[u[d]>>2],h=de.HEAPF32.subarray(m>>2,(m>>2)+a[d]);d++;let y=de.HEAPU32[u[d]>>2],g=de.HEAPU32.subarray(y>>2,(y>>2)+a[d]);d++;let v=de.HEAPU32[u[d]>>2],b=de.HEAPU32.subarray(v>>2,(v>>2)+a[d]);if(d++,i===void 0){let w=new xd;if(w.setIndex(new vd(b,1)),w.setAttribute("position",new bd(f,3)),w.setAttribute("normal",new bd(h,3)),t){w.setAttribute("faceMap",new vd(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new dy(S,4))}return de.free_mesh_data(l),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(h),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,de.free_mesh_data(l)}static freeSubdivPointer(e){de.free_bvh(e),de.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=de.get_wireframe_data_for_base_level(e),s=4,l=de.HEAPU32.subarray(i>>2,(i>>2)+s),c=l.subarray(2,2+2),u=0,a=de.HEAPU32[l[u]>>2],d=de.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=de.HEAPU32[l[u]>>2],f=de.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new xd;m.setAttribute("position",new bd(d,3));let h=new Float32Array(d.length);for(let y=0,g=d.length;y<g;)h[y++]=o.r,h[y++]=o.g,h[y++]=o.b;return m.setAttribute("color",new dy(h,3)),m.setIndex(new vd(f,1)),de.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||de.set_destination_refinement_level(e,t);let s=o?de.get_topological_data2(e,i?de.Level.CONTROL:de.Level.REFINED,o.elements):de.get_topological_data(e,i?de.Level.CONTROL:de.Level.REFINED),l=6,c=de.HEAPU32.subarray(s>>2,(s>>2)+l),u=c.subarray(3,3+3),a=0,d=de.HEAPU32[c[a]>>2],p=new Float32Array(de.HEAPF32.subarray(d>>2,(d>>2)+u[a]));a++;let f=de.HEAPU32[c[a]>>2],m=new Uint32Array(de.HEAPU32.subarray(f>>2,(f>>2)+u[a]));a++;let h=de.HEAPU32[c[a]>>2],y=new Uint8Array(de.HEAPU32.subarray(h>>2,(h>>2)+u[a]));return de.free_topological_data(s),{positions:p,indices:m,verticesPerFace:y}}};var my=["getX","getY","getZ"];function Td(n,r){let e={},t=r?r.count:n.count,o=0,i=[],s=[],l=1e4;for(let u=0;u<t;u++){let a=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[my[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[my[p]](a));e[d]=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 xl=new xs,Sd=new xs,wd=new xs,_d=new xs;function Pd(n,r,e,t){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((d,p)=>Math.floor(p/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??r.length;s<l;)if(r[s+1]===r[s+3]&&r[s+2]===r[s+5]||r[s+0]===r[s+3]&&r[s+2]===r[s+4]){xl.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),Sd.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),wd.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),_d.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),Sd.sub(xl).normalize(),wd.sub(xl).normalize(),_d.sub(xl).normalize();let c=Sd.cross(wd).dot(_d);Math.abs(c)>.005||t&&t.some((u,a)=>a%2===1?!1:s>=t[a]&&s<t[a+1])?(o.push(r[s],r[s+1],r[s+2]),i.push(3),s+=3):(o.push(r[s],r[s+1],r[s+4],r[s+5]),i.push(4),s+=6)}else o.push(r[s],r[s+1],r[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,d=0;a<n.length;a+=3,d++)n[a+2]===0&&(s.push(d),c++),n[a+2]===u&&l.push(d);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 or={};n0(or,{calcBoolean:()=>tP,calcBooleanTopological:()=>eP,freeMeshSet:()=>nP,getMeshSet:()=>rP,transformMeshSet:()=>oP});var ZT,hy=new Promise(n=>{ZT=n});import{Float32BufferAttribute as yy,Sphere as QT}from"three";var ge,Qn;hy.then(n=>ge=n);function JT(n,r,e){let t,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:s}=Td(n.getAttribute("position"),o),l;if(r&&e){let{indices:c,verticesPerFace:u}=Pd(i,s,n);l=u.length,t=[];for(let a=0,d=0;a<l;a++){t.push(u[a]);for(let p=0;p<u[a];p++)t.push(c[d++])}}else{let c=s.length;t=Array(c+c/3),l=0;for(let u=0,a=0;a<t.length;)t[a++]=3,l++,t[a++]=s[u++],t[a++]=s[u++],t[a++]=s[u++]}return{positions:i,faceIndices:t,nFaces:l}}function gy(n){let r=n.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:t,i=ge._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(ge.HEAPU32.buffer,i,r):new Float32Array(ge.HEAPF32.buffer,i,r)).set(n,0),i}function xy(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 eP(n,r){Qn===void 0&&(Qn=ge.init_csg());let e=gy(n),t=ge.csg_calc_topological(Qn,e,n.length,xy(r));ge._free(e);let o=6,i=ge.HEAPU32.subarray(t>>2,(t>>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],d=new Uint32Array(ge.HEAPU32.subarray(a>>2,(a>>2)+s[l]));l++;let p=ge.HEAPU32[i[l]>>2],f=new Uint8Array(ge.HEAPU32.subarray(p>>2,(p>>2)+s[l]));return ge.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function tP(n,r,e,t){Qn===void 0&&(Qn=ge.init_csg());let o=gy(n),i=ge.csg_calc(Qn,o,n.length,t,xy(r));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],d=ge.HEAPF32.subarray(a>>2,(a>>2)+c[u]);u++;let p=ge.HEAPU32[l[u]>>2],f=ge.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new yy(d,3)),e.setAttribute("normal",new yy(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new QT),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 rP(n,r,e){if(ge===void 0)return-1;let t,o,i;if(r&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,t=y.positions,o=Array(y.verticesPerFace.reduce((g,v)=>g+v,0)+i);for(let g=0,v=0,b=0;g<y.verticesPerFace.length;g++){o[b++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[b++]=y.indices[v++]}}else({positions:t,faceIndices:o,nFaces:i}=JT(n,r,e));let s=t.length,l=o.length,c=t.length,u=o.length,a=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=ge._malloc(a),m=new Float32Array(ge.HEAPF32.buffer,f,c),h=new Uint32Array(ge.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),ge.get_csg_mesh(f,s,f+d,l,i)}function oP(n,r){ge.transform_csg_mesh(n,r.elements)}function nP(n){ge.free_csg_mesh(n)}var iP={ConeGeometry:th,CubeGeometry:rh,CylinderGeometry:eh,DodecahedronGeometry:oh,EllipseGeometry:Hn,HelixGeometry:Bh,IcosahedronGeometry:Dh,LatheGeometry:Gh,NonParametricGeometry:qh,PolygonGeometry:ml,PyramidGeometry:$h,RectangleGeometry:hl,SphereGeometry:Xh,PlaneGeometry:Yh,BackdropGeometry:Kh,StarGeometry:yl,TextFrameGeometry:Zh,TorusGeometry:Qh,TorusKnotGeometry:Jh,TriangleGeometry:ey,PathGeometry:ny,VectorGeometry:Tt},gd=n=>iP[n.type].create(n);function vs(n){return n!==null&&"booleanOp"in n}var Jn=class extends Qa(aP){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new sP}updateVisible(){super.updateVisible(),this.visible=!vs(this.parent)&&this.visible,vs(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),vs(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Jn&&(e.freeBooleanPointer(),vs(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&vs(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var vl=new lP;function bs(n,r=0,e=n.count,t,o){let i=1/0,s=1/0,l=1/0,c=-1/0,u=-1/0,a=-1/0;for(let d=r;d<e;d++){let p=n.getX(d),f=n.getY(d),m=n.getZ(d);p<i&&(i=p),f<s&&(s=f),m<l&&(l=m),p>c&&(c=p),f>u&&(u=f),m>a&&(a=m)}vl.min.set(i,s,l),vl.max.set(c,u,a),vl.getCenter(t),vl.getSize(o).multiplyScalar(.5)}var uP=new cP,pP=new dP,lt=class extends Jn{constructor(r,e){super(uP,pP),this.super_Entity(r,e)}updateState(r,e){this.updateState_Entity(r,e)}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?bs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};import{Box3 as SO,Matrix4 as wO,Sphere as Hy,Vector3 as _O}from"three";import{BufferAttribute as xO,Float32BufferAttribute as Uy,MathUtils as Zd,Vector3 as Qd}from"three";import{ShaderMaterial as iO}from"three";import{CubeReflectionMapping as TP,CubeRefractionMapping as PP,CubeUVReflectionMapping as OP,LinearEncoding as wy,sRGBEncoding as AP}from"three";var Ss=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};import{MathUtils as fP}from"three";var tt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=fP.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,i,s){return""}generate(r,e,t,o,i){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof tt&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var Od=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},$e=new Od;import{Vector2 as vy}from"three";import{MathUtils as mP}from"three";var ae=class extends tt{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,i){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=mP.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,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return l.name=l.name||super.build(e,t,o),l.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||l.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let u=this.getTemp(e,o);if(u)return e.format(u,c,t);{u=super.generate(e,t,o,l.output,i);let a=this.generate(e,c,o);return e.addNodeCode(u+" = "+a+";"),e.format(u,c,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,i,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),s,this.getLabel()).name}};var Ie=class extends ae{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,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,t,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,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}};var ze=class extends Ie{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof vy?e:new vy(e,t)}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,t,o,i,s,l){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};import{Vector3 as by}from"three";var ct=class extends Ie{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof by?e:new by(e,t,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,t,o,i,s,l){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};import{Color as hP}from"three";var Xe=class extends hP{constructor(e,t,o,i){super(e,t,o);this.isColorA=!0;this.a=i}setRGBA(e,t,o,i){super.setRGB(e,t,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)}setStyle(e,t="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,s=o[1],l=o[2];switch(s){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="rgba"?parseFloat(i[4]):1,super.setStyle(e,t);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.a=s==="hsla"?parseFloat(i[4]):1,super.setStyle(e,t);break}}return super.setStyle(e,t)}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 Pt=class extends Ie{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Xe?e:new Xe(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,s,l){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var yP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Sy=/[a-z_0-9]+/gi,U=class extends ae{constructor(e,t,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,t,o,i)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,i,s){let l,c=0,u=this.src;if(this.includes)for(let d=0;d<this.includes.length;d++)e.include(this.includes[d],this);for(let d in this.extensions)e.extensions[d]=!0;let a=[];for(;l=Sy.exec(this.src);)a.push(l);for(let d=0;d<a.length;d++){let p=a[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&&$e.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=$e.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||$e.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}h=y.build(e)}f!==h&&u[p.index+c-1]!=="."&&(u=u.substring(0,p.index+c)+h+u.substring(p.index+f.length+c),c+=h.length-f.length),this.getIncludeByName(h)===void 0&&$e.contains(h)&&e.include($e.get(h))}return t==="source"?u:this.isMethod?(this.isInterface||e.include(this,void 0,u),this.name):e.format("( "+u+" )",this.getType(e),t)}parse(e,t,o,i){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let s=yP.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(Sy);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 d=l[c++];this.inputs.push({name:d,type:a,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var gP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ad=class extends ae{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Ad.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,s){this.src=e||"";let l,c,u="",a=gP.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,t){if(t==="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),t)}generate(e,t,o,i,s){return e.format(this.name,this.getType(e),t)}},be=Ad;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var xP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ )*?)}`,"gim"),vP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),ei=class extends ae{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,i,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=xP.exec(e);if(t){let o=t[2],i;for(;i=vP.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var ti=class extends ae{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){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),t)}};$e.addKeyword("uv",function(){return new ti});$e.addKeyword("uv2",function(){return new ti(1)});import{LinearEncoding as bP,sRGBEncoding as SP}from"three";var Lo=class extends ae{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Lo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case bP:return["Linear"];case SP:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Lo.Nodes[this.method],l=e.include(s);if(l===Lo.LINEAR_TO_LINEAR)return e.format(o,i,t);if(s.inputs?.length===2){let c=this.factor.build(e,"f");return e.format(l+"( "+o+", "+c+" )",i,t)}else return e.format(l+"( "+o+" )",i,t)}fromEncoding(e){let t=Lo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Lo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},gt=Lo;gt.Nodes={LinearToLinear:new U(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
5
  `)),sRGBToLinear:new U(["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
6
  `)),LinearTosRGB:new U(["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
- `))},gt.LINEAR_TO_LINEAR="LinearToLinear",gt.SRGB_TO_LINEAR="sRGBToLinear",gt.LINEAR_TO_SRGB="LinearTosRGB";var we=class extends U{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as bP}from"three";var Ot=class extends Ie{constructor(e=new bP,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new ti,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),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 d={include:e.isShader("vertex"),ignoreCache:!0},a=this.getType(e);return e.addContext(d),this.colorSpace=this.colorSpace??new gt(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,t)}};var Z=class extends Ie{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var ws=class extends ae{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,s){i=this.getType(e);let l=this.value,c=l.build(e,t)+"( ",d=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let u=l.inputs[a],p=this.inputs[a]||this.inputs[u.name];d.push(p.build(e,e.getTypeByFormat(u.type)))}c+=d.join(", ")+" )"}return e.format(c,i,t)}};var Au=class extends ae{constructor(e,t,o=Au.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){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,t)}},rt=Au;rt.ADD="+",rt.SUB="-",rt.MUL="*",rt.DIV="/";var Ae=class extends ae{constructor(e,t=Ae.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let t=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 t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,i,s,l=this.a?e.getTypeLength(this.a.getType(e)):0,c=this.b?e.getTypeLength(this.b.getType(e)):0,d=this.c?e.getTypeLength(this.c.getType(e)):0,a=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,t);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,t);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Ae.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,d===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 p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",u,t)}},pe=Ae;pe.RAD="radians",pe.DEG="degrees",pe.EXP="exp",pe.EXP2="exp2",pe.LOG="log",pe.LOG2="log2",pe.SQRT="sqrt",pe.INV_SQRT="inversesqrt",pe.FLOOR="floor",pe.CEIL="ceil",pe.NORMALIZE="normalize",pe.FRACT="fract",pe.SATURATE="saturate",pe.SIN="sin",pe.COS="cos",pe.TAN="tan",pe.ASIN="asin",pe.ACOS="acos",pe.ARCTAN="atan",pe.ABS="abs",pe.SIGN="sign",pe.LENGTH="length",pe.NEGATE="negate",pe.INVERT="invert",pe.MIN="min",pe.MAX="max",pe.MOD="mod",pe.STEP="step",pe.REFLECT="reflect",pe.DISTANCE="distance",pe.DOT="dot",pe.CROSS="cross",pe.POW="pow",pe.MIX="mix",pe.CLAMP="clamp",pe.REFRACT="refract",pe.SMOOTHSTEP="smoothstep",pe.FACEFORWARD="faceforward";var ri=class extends ae{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new ws(ri.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new gt(new we("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new gt(new we("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new gt(new we("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new gt(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,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ws(ri.Nodes.roughnessToMip,[i]),l=new pe(s,ri.Nodes.m0,ri.Nodes.cubeUV_maxMipLevel,pe.CLAMP),c=new pe(l,pe.FLOOR),d=new pe(l,pe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),u=this.bilinearCubeUV(e,this.value,o,new rt(c,new Z(1).setReadonly(!0),rt.ADD)),p=new pe(a,u,d,pe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},oi=ri;oi.Nodes=function(){let e=new ei(`struct TextureCubeUVData {
7
+ `))},gt.LINEAR_TO_LINEAR="LinearToLinear",gt.SRGB_TO_LINEAR="sRGBToLinear",gt.LINEAR_TO_SRGB="LinearTosRGB";var we=class extends U{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as wP}from"three";var Ot=class extends Ie{constructor(e=new wP,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new ti,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),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 gt(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,t)}};var Z=class extends Ie{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,i,s,l){return e.format(this.value+(this.value%1?"":".0"),i,t)}};var ws=class extends ae{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,i,s){i=this.getType(e);let l=this.value,c=l.build(e,t)+"( ",u=[];if(l.inputs){for(let a=0;a<l.inputs.length;a++){let d=l.inputs[a],p=this.inputs[a]||this.inputs[d.name];u.push(p.build(e,e.getTypeByFormat(d.type)))}c+=u.join(", ")+" )"}return e.format(c,i,t)}};var Cd=class extends ae{constructor(e,t,o=Cd.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){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,t)}},rt=Cd;rt.ADD="+",rt.SUB="-",rt.MUL="*",rt.DIV="/";var Ae=class extends ae{constructor(e,t=Ae.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:i=t,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let t=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 t>o&&t>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){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),d=this.getType(e);switch(this.type=d,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,a)+" )",a,t);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,a)+" )",a,t);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,l===1?"f":a),i=this.b.build(e,a);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,a),i=this.b.build(e,c===1?"f":a);break;case Ae.REFRACT:o=this.a.build(e,a),i=this.b.build(e,a),s=this.c.build(e,"f");break;case Ae.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 p=[];p.push(o),i&&p.push(i),s&&p.push(s);let f=this.getNumInputs(e);if(p.length!==f)throw Error(`Arguments not match used in "${this.method}". Require ${f}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",d,t)}},pe=Ae;pe.RAD="radians",pe.DEG="degrees",pe.EXP="exp",pe.EXP2="exp2",pe.LOG="log",pe.LOG2="log2",pe.SQRT="sqrt",pe.INV_SQRT="inversesqrt",pe.FLOOR="floor",pe.CEIL="ceil",pe.NORMALIZE="normalize",pe.FRACT="fract",pe.SATURATE="saturate",pe.SIN="sin",pe.COS="cos",pe.TAN="tan",pe.ASIN="asin",pe.ACOS="acos",pe.ARCTAN="atan",pe.ABS="abs",pe.SIGN="sign",pe.LENGTH="length",pe.NEGATE="negate",pe.INVERT="invert",pe.MIN="min",pe.MAX="max",pe.MOD="mod",pe.STEP="step",pe.REFLECT="reflect",pe.DISTANCE="distance",pe.DOT="dot",pe.CROSS="cross",pe.POW="pow",pe.MIX="mix",pe.CLAMP="clamp",pe.REFRACT="refract",pe.SMOOTHSTEP="smoothstep",pe.FACEFORWARD="faceforward";var ri=class extends ae{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,i){let s=new ws(ri.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new gt(new we("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new gt(new we("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new gt(new we("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new gt(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,t){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ws(ri.Nodes.roughnessToMip,[i]),l=new pe(s,ri.Nodes.m0,ri.Nodes.cubeUV_maxMipLevel,pe.CLAMP),c=new pe(l,pe.FLOOR),u=new pe(l,pe.FRACT),a=this.bilinearCubeUV(e,this.value,o,c),d=this.bilinearCubeUV(e,this.value,o,new rt(c,new Z(1).setReadonly(!0),rt.ADD)),p=new pe(a,d,u,pe.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},oi=ri;oi.Nodes=function(){let e=new ei(`struct TextureCubeUVData {
8
8
  vec4 tl;
9
9
  vec4 tr;
10
10
  vec4 br;
@@ -41,7 +41,7 @@ var Qg=Object.create;var Xl=Object.defineProperty;var Jg=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 d=new U(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
44
+ }`);c.useKeywords=!1;let u=new U(`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 Qg=Object.create;var Xl=Object.defineProperty;var Jg=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,t,o,i,s]);d.useKeywords=!1;let a=new be("float r0 1.0",!0),u=new be("float v0 0.339",!0),p=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),y=new be("float r4 0.4",!0),g=new be("float v4 0.046",!0),v=new be("float m4 2.0",!0),b=new be("float r5 0.305",!0),w=new be("float v5 0.016",!0),S=new be("float m5 3.0",!0),T=new be("float r6 0.21",!0),_=new be("float v6 0.0038",!0),x=new be("float m6 4.0",!0),N=[a,u,p,f,m,h,y,g,v,b,w,S,T,_,x],P=new U(`float roughnessToMip(float roughness) {
72
+ }`,[e,l,c,t,o,i,s]);u.useKeywords=!1;let a=new be("float r0 1.0",!0),d=new be("float v0 0.339",!0),p=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),y=new be("float r4 0.4",!0),g=new be("float v4 0.046",!0),v=new be("float m4 2.0",!0),b=new be("float r5 0.305",!0),w=new be("float v5 0.016",!0),S=new be("float m5 3.0",!0),T=new be("float r6 0.21",!0),_=new be("float v6 0.0038",!0),x=new be("float m6 4.0",!0),N=[a,d,p,f,m,h,y,g,v,b,w,S,T,_,x],P=new U(`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 Qg=Object.create;var Xl=Object.defineProperty;var Jg=Object.getOwnPropertyDe
83
83
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
84
  }
85
85
  return mip;
86
- }`,N);return{bilinearCubeUV:d,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var Bo=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Bo.VIEW}getShared(){return this.scope===Bo.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let l;switch(this.scope){case Bo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Bo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Bo.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),t)}},ot=Bo;ot.LOCAL="local",ot.WORLD="world",ot.VIEW="view",ot.NORMAL="normal";$e.addKeyword("viewNormal",function(){return new ot(ot.VIEW)});$e.addKeyword("localNormal",function(){return new ot(ot.NORMAL)});$e.addKeyword("worldNormal",function(){return new ot(ot.WORLD)});var Tr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Tr.LOCAL}getType(){switch(this.scope){case Tr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Tr.LOCAL:case Tr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case Tr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case Tr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case Tr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Tr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},At=Tr;At.LOCAL="local",At.WORLD="world",At.VIEW="view",At.PROJECTION="projection";$e.addKeyword("position",function(){return new At});$e.addKeyword("worldPosition",function(){return new At(At.WORLD)});$e.addKeyword("viewPosition",function(){return new At(At.VIEW)});var nr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??nr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case nr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case nr.VECTOR:{let s=new ot(ot.VIEW),l=e.context.roughness,c=s.build(e,"v3"),d=new At(At.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,u=`reflect( -normalize( ${d} ), ${c} )`;a&&(u=`normalize( mix( ${u}, ${c}, ${a} * ${a} ) )`);let p=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case nr.CUBE:{let s=new nr(nr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case nr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new nr(nr.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(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},Pr=nr;Pr.CUBE="cube",Pr.SPHERE="sphere",Pr.VECTOR="vector";var vl=class extends ae{constructor(e=new Ot,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new oi(this.value,t??new Pr(Pr.VECTOR),o),this.irradianceNode=new oi(this.value,new ot(ot.WORLD),new Z(1).setReadonly(!0))}generate(e,t){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,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};import{CubeTexture as SP}from"three";var bl=class extends Ie{constructor(e=new SP,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Pr,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),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},d=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new gt(new we("",d)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,d),e.removeContext(),e.format(l,d,t)}};var wy=["x","y","z","w"],OP=["float","vec2","vec3","vec4"],AP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},CP={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[]"},Sl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);for(let l=0;l<i.length;l++)i[l].src&&(s+=i[l].src+`
86
+ }`,N);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var Bo=class extends ae{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??Bo.VIEW}getShared(){return this.scope===Bo.WORLD}build(e,t,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,i):super.build(e,t,o)}generate(e,t,o,i,s){let l;switch(this.scope){case Bo.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case Bo.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case Bo.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),t)}},ot=Bo;ot.LOCAL="local",ot.WORLD="world",ot.VIEW="view",ot.NORMAL="normal";$e.addKeyword("viewNormal",function(){return new ot(ot.VIEW)});$e.addKeyword("localNormal",function(){return new ot(ot.NORMAL)});$e.addKeyword("worldNormal",function(){return new ot(ot.WORLD)});var Tr=class extends ae{constructor(e){super("v3");this.nodeType="Position";this.scope=e??Tr.LOCAL}getType(){switch(this.scope){case Tr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case Tr.LOCAL:case Tr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case Tr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case Tr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case Tr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case Tr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},At=Tr;At.LOCAL="local",At.WORLD="world",At.VIEW="view",At.PROJECTION="projection";$e.addKeyword("position",function(){return new At});$e.addKeyword("worldPosition",function(){return new At(At.WORLD)});$e.addKeyword("viewPosition",function(){return new At(At.VIEW)});var nr=class extends ae{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??nr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case nr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case nr.VECTOR:{let s=new ot(ot.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new At(At.VIEW).build(e,"v3"),a=l?l.build(e,"f"):void 0,d=`reflect( -normalize( ${u} ), ${c} )`;a&&(d=`normalize( mix( ${d}, ${c}, ${a} * ${a} ) )`);let p=`inverseTransformDirection( ${d}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case nr.CUBE:{let s=new nr(nr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case nr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new nr(nr.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(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},Pr=nr;Pr.CUBE="cube",Pr.SPHERE="sphere",Pr.VECTOR="vector";var bl=class extends ae{constructor(e=new Ot,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new oi(this.value,t??new Pr(Pr.VECTOR),o),this.irradianceNode=new oi(this.value,new ot(ot.WORLD),new Z(1).setReadonly(!0))}generate(e,t){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,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};import{CubeTexture as _P}from"three";var Sl=class extends Ie{constructor(e=new _P,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new Pr,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),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 gt(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,t)}};var _y=["x","y","z","w"],CP=["float","vec2","vec3","vec4"],NP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},IP={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[]"},wl=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let i=this.getIncludes(t,o);if(!i)return"";let s="";i=i.sort(r);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 Qg=Object.create;var Xl=Object.defineProperty;var Jg=Object.getOwnPropertyDe
125
125
  `}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
126
126
  `}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
127
127
  `}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
128
- `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",s=""){let l=this.getVars(o),c=l[r];if(!c){let d=l.length;c={name:t||"node"+i+d+(s?"_"+s:""),type:e},l.push(c),l[r]=c}return c}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
129
- `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[o],l=s.type,c=s.name,d=s.size,a=this.getFormatByType(l);if(a===void 0)throw new Error("Node pars "+a+" not found.");a.includes("[]")?t+=e+" "+a.substring(0,a.length-2)+" "+c+`[${d}];
128
+ `}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",i="V",s=""){let l=this.getVars(o),c=l[r];if(!c){let u=l.length;c={name:t||"node"+i+u+(s?"_"+s:""),type:e},l.push(c),l[r]=c}return c}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
129
+ `)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,i=r.length;o<i;++o){let s=r[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("[]")?t+=e+" "+a.substring(0,a.length-2)+" "+c+`[${u}];
130
130
  `:t+=e+" "+a+" "+c+`;
131
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof tt?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,d=new Ss({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(d),l[r].push(d),l[r][d.name]=d,this.uniforms[d.name]=d,d}else{let l=this.inputs.uniforms,c=l.list.length,d=new Ss({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(d),l[r].push(d),l[r][d.name]=d,this.uniforms[d.name]=d,d}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?$e.get(r):r,this.context.include===!1)return r.name;r instanceof U?o=this.includes.functions:r instanceof be?o=this.includes.consts:r instanceof ei&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof U&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let l=0;do this.include(r.includes[l++],e);while(l<r.includes.length)}return t&&(s.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return OP[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case wP:case _P:return new bl(t);case TP:return new vl(new Ot(t));default:return new Ot(t)}else{if(t.isVector2)return new ze(t);if(t.isVector3)return new ct(t);if(t.isVector4)return new Pt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return AP[r]||r}getFormatByType(r){return CP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return wy[r]}getIndexByElement(r){return wy.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=Sy,e===Sy&&this.context.gamma&&(e=PP),e}};import{Vector2 as cr,Vector3 as Cr,Vector4 as Si}from"three";var Pe=class extends Ie{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Xe?e:new Xe(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,i,s,l){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let c=e.getNodeData(o),d=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let a=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${a};`)}return d?this.generateReadonly(e,t,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,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var xe=class extends Ie{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,l){return e.format(this.value.toString(),i,t)}};import{UniformsLib as NP,UniformsUtils as IP}from"three";var Do=class extends tt{constructor(){super("basic");this.nodeType="Basic";this.color=new Pe(5526619),this.shadingAlpha=new Z(1),this.shadingBlend=new xe(0)}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(IP.merge([NP.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
131
+ `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof tt?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,i,s){if(e.includes("[]")){let l=this.inputs.arrayUniforms,c=l.list.length,u=new Ss({type:e,size:t.size,name:o||"nodeUA"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}else{let l=this.inputs.uniforms,c=l.list.length,u=new Ss({type:e,name:o||"nodeU"+c+(s?"_"+s:""),node:t,needsUpdate:i});return l.list.push(u),l[r].push(u),l[r][u.name]=u,this.uniforms[u.name]=u,u}}createVertexUniform(r,e,t,o,i){return this.createUniform("vertex",r,e,t,o,i)}createFragmentUniform(r,e,t,o,i){return this.createUniform("fragment",r,e,t,o,i)}include(r,e,t){let o;if(r=typeof r=="string"?$e.get(r):r,this.context.include===!1)return r.name;r instanceof U?o=this.includes.functions:r instanceof be?o=this.includes.consts:r instanceof ei&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(r){let s=i[r.name];if(s||(s=i[r.name]={node:r,deps:[]},i.push(s),s.src=r.build(this,"source")),r instanceof U&&e&&i[e.name]&&i[e.name].deps.indexOf(r)===-1&&(i[e.name].deps.push(r),r.includes?.length)){let l=0;do this.include(r.includes[l++],e);while(l<r.includes.length)}return t&&(s.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return CP[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case TP:case PP:return new Sl(t);case OP:return new bl(new Ot(t));default:return new Ot(t)}else{if(t.isVector2)return new ze(t);if(t.isVector3)return new ct(t);if(t.isVector4)return new Pt(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return NP[r]||r}getFormatByType(r){return IP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return _y[r]}getIndexByElement(r){return _y.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=wy,e===wy&&this.context.gamma&&(e=AP),e}};import{Vector2 as cr,Vector3 as Cr,Vector4 as Si}from"three";var Pe=class extends Ie{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof Xe?e:new Xe(e||0,t,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,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,t,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,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,s,l,this.getLabel())),e.format(c.fragment.name,i,t))}generateReadonly(e,t,o,i,s,l){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,t)}};var xe=class extends Ie{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,i,s,l){return e.format(this.value.toString(),i,t)}};import{UniformsLib as MP,UniformsUtils as EP}from"three";var Do=class extends tt{constructor(){super("basic");this.nodeType="Basic";this.color=new Pe(5526619),this.shadingAlpha=new Z(1),this.shadingBlend=new xe(0)}get category(){return"phong"}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(EP.merge([MP.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>
@@ -148,13 +148,13 @@ var Qg=Object.create;var Xl=Object.defineProperty;var Jg=Object.getOwnPropertyDe
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;"),t=i.join(`
149
149
  `)}else{this.color===void 0&&(this.color=new Pe(5526619)),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};`);let c="1.0";this.mask&&(this.mask.analyze(e),c=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${c} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),l.push("#include <fog_fragment>","#include <dithering_fragment>"),t=l.join(`
151
- `)}return t}};import{UniformsLib as Py,UniformsUtils as BP}from"three";var ir=class extends Ie{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var sr=class extends Ie{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};import{Vector3 as MP}from"three";var ho=class extends Ie{};var wl=class extends ho{constructor(e){super("v3");this.image=e;this._value=new MP}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Go=class extends ho{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as EP}from"three";var ni=class extends Ie{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new EP}generateReadonly(e,t,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix3 as LP}from"three";function _y(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var _l=class extends ni{constructor(e,t){super(new LP);this.repeat=e;this.offset=t;_y(this.value,e,t)}updateMatrix(){_y(this.value,this.repeat,this.offset)}};import{Vector4 as Ty}from"three";var ar=class extends Ie{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Ty?new Array(e).fill(t):new Array(e).fill(new Ty(0))}};var ii=class extends ae{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){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),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Cu=class extends ae{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Cu.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ro=Cu;Ro.Nodes=function(){return{customColor:new U(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
151
+ `)}return t}};import{UniformsLib as Oy,UniformsUtils as GP}from"three";var ir=class extends Ie{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var sr=class extends Ie{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,i){return e.format(this.value?"true":"false",i,t)}};import{Vector3 as LP}from"three";var ho=class extends Ie{};var _l=class extends ho{constructor(e){super("v3");this.image=e;this._value=new LP}get value(){return this._value.x=this.image.isVideo?this.image.img.videoWidth??0:this.image.img.width,this._value.y=this.image.isVideo?this.image.img.videoHeight??0:this.image.img.height,this._value}};var Go=class extends ho{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Matrix3 as BP}from"three";var ni=class extends Ie{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new BP}generateReadonly(e,t,o,i,s,l){return e.format("mat3("+this.value.elements.join(", ")+")",i,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};import{Matrix3 as DP}from"three";function Ty(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var Tl=class extends ni{constructor(e,t){super(new DP);this.repeat=e;this.offset=t;Ty(this.value,e,t)}updateMatrix(){Ty(this.value,this.repeat,this.offset)}};import{Vector4 as Py}from"three";var ar=class extends Ie{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Py?new Array(e).fill(t):new Array(e).fill(new Py(0))}};var ii=class extends ae{constructor(e,t,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=i}generate(e,t){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),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Nd=class extends ae{constructor(e,t){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Nd.Nodes.customColor);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.color.build(e,"v3")),i.push(this.mask?`luminance(${this.mask.build(e,"v3")})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ro=Nd;Ro.Nodes=function(){return{customColor:new U(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
152
152
  float lalpha = alpha * mask;
153
153
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
154
154
  accumAlpha += (1.0 - accumAlpha) * lalpha;
155
155
 
156
156
  return color;
157
- }`)}}();var Nu=class extends ae{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Nu.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},si=Nu;si.Nodes=function(){return{customNormal:new U(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
157
+ }`)}}();var Id=class extends ae{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){let o=e.include(Id.Nodes.customNormal);e.addFragmentVariable(this.calpha,"float");let i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},si=Id;si.Nodes=function(){return{customNormal:new U(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
158
158
  vec3 normal = packNormalToRGB( norm ).rgb;
159
159
  normal *= step( vec3(0.5), cnormal );
160
160
 
@@ -163,7 +163,7 @@ var Qg=Object.create;var Xl=Object.defineProperty;var Jg=Object.getOwnPropertyDe
163
163
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
164
164
 
165
165
  return normal;
166
- }`)}}();var ai=class extends ae{constructor(e,t,o,i,s,l,c,d,a,u,p,f){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=l,this.size=c,this.blending=d,this.mat=a,this.alpha=u,this.mode=p,this.isMask=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(ai.Nodes.cylindrical);break;case 2:i=e.include(ai.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 U(`
166
+ }`)}}();var ai=class extends ae{constructor(e,t,o,i,s,l,c,u,a,d,p,f){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=t,this.crop=o,this.projection=i,this.axis=s,this.side=l,this.size=c,this.blending=u,this.mat=a,this.alpha=d,this.mode=p,this.isMask=f,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(ai.Nodes.cylindrical);break;case 2:i=e.include(ai.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 U(`
167
167
  vec3 ${o}_planarTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float blending, bool isMask, float mask, float alpha, int mode, out float calpha) {
168
168
 
169
169
  vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
@@ -332,7 +332,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
332
332
 
333
333
  return col;//n * 0.5 + 0.5;
334
334
  }
335
- `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var ci=class extends ae{constructor(e,t,o,i,s,l,c,d,a,u,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=d,this.colors=a,this.steps=u,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new U(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
335
+ `);return{cylindrical:e,spherical:t,uv:o,triplanar:i}}();var ci=class extends ae{constructor(e,t,o,i,s,l,c,u,a,d,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=l,this.origin=c,this.direction=u,this.colors=a,this.steps=d,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new U(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], bool isMask, float mask, float alpha, out float calpha) {
336
336
  vec4 color = colors[0];
337
337
  #ifdef ${o}_IS_VECTOR
338
338
  #ifdef ${o}_LINEAR
@@ -372,7 +372,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
372
372
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
373
373
 
374
374
  return color.rgb;
375
- }`,[ci.Nodes.vectorLinearWorldSpaceDepth,ci.Nodes.vectorLinearObjectSpaceDepth,ci.Nodes.vectorSphericalObjectSpaceDepth,ci.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.isMask.build(e,"b")),l.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ui=ci;ui.Nodes=function(){let e=new U(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
375
+ }`,[ci.Nodes.vectorLinearWorldSpaceDepth,ci.Nodes.vectorLinearObjectSpaceDepth,ci.Nodes.vectorSphericalObjectSpaceDepth,ci.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.isMask.build(e,"b")),l.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},di=ci;di.Nodes=function(){let e=new U(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
376
376
  vec3 n = normalize(direction);
377
377
  float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
378
378
  return ( dist - near ) / ( far - near );
@@ -386,7 +386,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
386
386
  }`),i=new U(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
387
387
  float dist = length(position - origin);
388
388
  return ( dist - near ) / ( far - near );
389
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var _s=class extends ae{constructor(e,t,o,i,s,l,c,d){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=d,this.alpha=l,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new U(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
389
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var _s=class extends ae{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.isMask=u,this.alpha=l,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new U(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
390
390
  float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
391
391
 
392
392
  float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
@@ -394,7 +394,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
394
394
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
395
395
 
396
396
  return color;
397
- }`),i=e.include(o),s=[];return s.push(this.color.build(e,"c")),s.push(this.bias.build(e,"f")),s.push(this.scale.build(e,"f")),s.push(this.intensity.build(e,"f")),s.push(this.factor.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Iu=class extends ae{constructor(e,t,o,i,s,l,c,d,a){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=l,this.angle=c,this.isMask=a,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Iu.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.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},di=Iu;di.Nodes=function(){return{gradient:new U(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
397
+ }`),i=e.include(o),s=[];return s.push(this.color.build(e,"c")),s.push(this.bias.build(e,"f")),s.push(this.scale.build(e,"f")),s.push(this.intensity.build(e,"f")),s.push(this.factor.build(e,"f")),s.push(this.isMask.build(e,"b")),s.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),e.format(i+"("+s.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Md=class extends ae{constructor(e,t,o,i,s,l,c,u,a){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=i,this.offset=s,this.morph=l,this.angle=c,this.isMask=a,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Md.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.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ui=Md;ui.Nodes=function(){return{gradient:new U(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, bool isMask, float mask, float alpha, out float calpha) {
398
398
  vec4 color = colors[0];
399
399
  vec2 m = morph / vUv.xy;
400
400
  vec2 rot = vec2( 0.5 + m.x, m.y );
@@ -436,7 +436,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
436
436
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
437
437
 
438
438
  return color.xyz;
439
- }`)}}();var Mu=class extends ae{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Mu.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.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),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),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},pi=Mu;pi.Nodes=function(){return{matcap:new U(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
439
+ }`)}}();var Ed=class extends ae{constructor(e,t,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Ed.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.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),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),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},pi=Ed;pi.Nodes=function(){return{matcap:new U(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
440
440
  vec3 viewDir = normalize( vViewPosition );
441
441
  vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
442
442
  vec3 y = cross( viewDir, x );
@@ -541,7 +541,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
541
541
  m = m * m;
542
542
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
543
543
  dot(p2,x2), dot(p3,x3) ) );
544
- }`,[o,i]),l=new U("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new U("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),d=new U(`float noise(vec3 p){
544
+ }`,[o,i]),l=new U("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new U("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),u=new U(`float noise(vec3 p){
545
545
  vec3 a = floor(p);
546
546
  vec3 d = p - a;
547
547
  d = d * d * (3.0 - 2.0 * d);
@@ -566,7 +566,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
566
566
  a *= 0.5;
567
567
  }
568
568
  return v;
569
- }`,[d]);a.keywords.NUM_OCTAVES=new be(`int NUM_OCTAVES ${5}`);let u=new U("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new U(`float perlin(vec3 P){
569
+ }`,[u]);a.keywords.NUM_OCTAVES=new be(`int NUM_OCTAVES ${5}`);let d=new U("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new U(`float perlin(vec3 P){
570
570
  vec3 Pi0 = floor(P);
571
571
  vec3 Pi1 = Pi0 + vec3(1.0);
572
572
  Pi0 = mod(Pi0, 289.0);
@@ -625,7 +625,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
625
625
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
626
626
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
627
627
  return 2.2 * n_xyz;
628
- }`,[o,i,u]),f=new U(`float hashwithoutsine13(vec3 p3)
628
+ }`,[o,i,d]),f=new U(`float hashwithoutsine13(vec3 p3)
629
629
  {
630
630
  p3 = fract(p3 * .1031);
631
631
  p3 += dot(p3, p3.yzx + 33.33);
@@ -801,7 +801,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
801
801
  return hashwithoutsine13(vec3(p + mb) + seed);
802
802
  }
803
803
  }
804
- `,[f,m,h,y,g,v]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p,voronoi:b}}();var fi=class extends ae{constructor(e,t,o,i,s,l,c,d,a,u,p,f,m,h,y,g,v,b,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=l,this.colorA=c,this.colorB=d,this.colorC=a,this.colorD=u,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=v,this.seed=b,this.quality=w,this.isMask=m,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=Object.values(Ts)[this.noiseType.value],c=l=="voronoi"?`
804
+ `,[f,m,h,y,g,v]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p,voronoi:b}}();var fi=class extends ae{constructor(e,t,o,i,s,l,c,u,a,d,p,f,m,h,y,g,v,b,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=i,this.fB=s,this.distortion=l,this.colorA=c,this.colorB=u,this.colorC=a,this.colorD=d,this.noiseType=f,this.voronoiStyle=h,this.highCut=y,this.lowCut=g,this.smoothness=v,this.seed=b,this.quality=w,this.isMask=m,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let l=Object.values(Ts)[this.noiseType.value],c=l=="voronoi"?`
805
805
  float v = ${l}(st + move, voronoiStyle, smoothness, seed, quality);
806
806
 
807
807
  // Apply clipping to colors
@@ -823,7 +823,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
823
823
  color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
824
824
  color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
825
825
  color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
826
- `,d=new U(`vec3 ${l}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
826
+ `,u=new U(`vec3 ${l}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, int voronoiStyle, float highCut, float lowCut, float smoothness, float seed, int quality, bool isMask, float mask, float alpha, out float calpha)
827
827
  {
828
828
  // Prevent scale of zero
829
829
  scale = max(abs(scale), 0.001);
@@ -838,7 +838,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
838
838
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
839
839
 
840
840
  return clamp(color, 0.0, 1.0).rgb;
841
- }`,[nt.simplex,nt.simplexFractal,nt.simplexAshima,nt.fbm,nt.perlin,nt.voronoi]),a=e.include(d),u=[];return u.push(this.scale.build(e,"f")),u.push(this.size.build(e,"v3")),u.push(this.move.build(e,"f")),u.push(this.fA.build(e,"v2")),u.push(this.fB.build(e,"v2")),u.push(this.distortion.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.colorC.build(e,"v4")),u.push(this.colorD.build(e,"v4")),u.push(this.voronoiStyle.build(e,"i")),u.push(this.highCut.build(e,"f")),u.push(this.lowCut.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.seed.build(e,"f")),u.push(this.quality.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(a+"("+u.join(",")+")",this.getType(e),t)}};fi.numOctaves=5;var Eu=class extends ae{constructor(e,t,o,i,s,l,c,d,a,u,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=l,this.contourFrequency=c,this.outlineSmoothing=d,this.contourDirection=a,this.positionalLines=u,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(`
841
+ }`,[nt.simplex,nt.simplexFractal,nt.simplexAshima,nt.fbm,nt.perlin,nt.voronoi]),a=e.include(u),d=[];return d.push(this.scale.build(e,"f")),d.push(this.size.build(e,"v3")),d.push(this.move.build(e,"f")),d.push(this.fA.build(e,"v2")),d.push(this.fB.build(e,"v2")),d.push(this.distortion.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.colorC.build(e,"v4")),d.push(this.colorD.build(e,"v4")),d.push(this.voronoiStyle.build(e,"i")),d.push(this.highCut.build(e,"f")),d.push(this.lowCut.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.seed.build(e,"f")),d.push(this.quality.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(a+"("+d.join(",")+")",this.getType(e),t)}};fi.numOctaves=5;var Ld=class extends ae{constructor(e,t,o,i,s,l,c,u,a,d,p,f,m,h,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=s,this.outlineThreshold=l,this.contourFrequency=c,this.outlineSmoothing=u,this.contourDirection=a,this.positionalLines=d,this.compensation=p,this.resolution=f,this.normalMap=m,this.depthMap=h,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(`
842
842
  vID = randomColor.r;
843
843
  if (${s}) {
844
844
  vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
@@ -852,7 +852,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
852
852
  // if this offset is the biggest of all the potential offsets
853
853
  gl_Position = ${c}_clipPosition;
854
854
  }
855
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Eu.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.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},mi=Eu;mi.Nodes=function(){let e=new U(`
855
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Ld.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.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},mi=Ld;mi.Nodes=function(){let e=new U(`
856
856
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
857
857
  {
858
858
  vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
@@ -993,7 +993,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
993
993
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
994
994
 
995
995
  return result;
996
- }`,[e])}}();var Or=class extends ae{constructor(e,t,o,i,s,l,c,d,a,u,p,f,m,h,y,g,v,b){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=s,this.colorA=l,this.colorB=c,this.frequency=d,this.size=a,this.variation=u,this.smoothness=p,this.zigzag=f,this.rotation=m,this.vertical=h,this.horizontal=y,this.sides=g,this.isMask=b,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,s=new U(`float hashwithoutsine12(vec2 p)
996
+ }`,[e])}}();var Or=class extends ae{constructor(e,t,o,i,s,l,c,u,a,d,p,f,m,h,y,g,v,b){super("v3");this.nodeType="Pattern";this.style=e,this.projection=t,this.axis=o,this.blending=i,this.offset=s,this.colorA=l,this.colorB=c,this.frequency=u,this.size=a,this.variation=d,this.smoothness=p,this.zigzag=f,this.rotation=m,this.vertical=h,this.horizontal=y,this.sides=g,this.isMask=b,this.alpha=v,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.require("position"),e.require("uv"),e.requires.uv=[!0],e.require("normal"),e.requires.normal=!0,e.addFragmentVariable(this.calpha,"float");let o;switch(this.style.value){case 0:o="circle";break;case 1:o="ring";break;case 2:o="polygon";break;case 3:o="xcross";break;case 4:o="diamond";break;case 5:o="checkerboard";break;case 6:o="line";break;case 7:o="wave";break;default:o="circle";break}let i=`g${this.uuid.toString().replace(/-/g,"")}`,s=new U(`float hashwithoutsine12(vec2 p)
997
997
  {
998
998
  vec3 p3 = fract(vec3(p.xyx) * .1031);
999
999
  p3 += dot(p3, p3.yzx + 33.33);
@@ -1055,7 +1055,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1055
1055
  custom_uv = rotate_uv(custom_uv, rotation, true);
1056
1056
 
1057
1057
  float draw = ${p};
1058
- `}let d=new U(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
1058
+ `}let u=new U(`vec3 ${i}_pattern(vec3 normal, float blending, int style, vec2 offset, vec4 colorA, vec4 colorB, vec2 frequency, float size, float variation, float smoothness, float zigzag, float rotation, vec2 vertical, vec2 horizontal, int sides, bool isMask, float mask, float alpha, out float calpha) {
1059
1059
  const float TWO_PI = PI * 2.0;
1060
1060
  float smoothness_remapped = pow(smoothness, 5.0);
1061
1061
 
@@ -1079,7 +1079,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1079
1079
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1080
1080
 
1081
1081
  return clamp(color, 0.0, 1.0).rgb;
1082
- }`,[l,s,Or.DrawFunctions.circle,Or.DrawFunctions.ring,Or.DrawFunctions.polygon,Or.DrawFunctions.cross,Or.DrawFunctions.diamond,Or.DrawFunctions.checkerboard,Or.DrawFunctions.line,Or.DrawFunctions.wave]),a=e.include(d),u=[];return u.push("normal"),u.push(this.blending.build(e,"f")),u.push(this.style.build(e,"i")),u.push(this.offset.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.frequency.build(e,"v2")),u.push(this.size.build(e,"f")),u.push(this.variation.build(e,"f")),u.push(this.smoothness.build(e,"f")),u.push(this.zigzag.build(e,"f")),u.push(this.rotation.build(e,"f")),u.push(this.vertical.build(e,"v2")),u.push(this.horizontal.build(e,"v2")),u.push(this.sides.build(e,"i")),u.push(this.isMask.build(e,"b")),u.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(a+"("+u.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},hi=Or;hi.DrawFunctions=function(){let e=new U(`float hashwithoutsine12(vec2 p) {
1082
+ }`,[l,s,Or.DrawFunctions.circle,Or.DrawFunctions.ring,Or.DrawFunctions.polygon,Or.DrawFunctions.cross,Or.DrawFunctions.diamond,Or.DrawFunctions.checkerboard,Or.DrawFunctions.line,Or.DrawFunctions.wave]),a=e.include(u),d=[];return d.push("normal"),d.push(this.blending.build(e,"f")),d.push(this.style.build(e,"i")),d.push(this.offset.build(e,"v2")),d.push(this.colorA.build(e,"v4")),d.push(this.colorB.build(e,"v4")),d.push(this.frequency.build(e,"v2")),d.push(this.size.build(e,"f")),d.push(this.variation.build(e,"f")),d.push(this.smoothness.build(e,"f")),d.push(this.zigzag.build(e,"f")),d.push(this.rotation.build(e,"f")),d.push(this.vertical.build(e,"v2")),d.push(this.horizontal.build(e,"v2")),d.push(this.sides.build(e,"i")),d.push(this.isMask.build(e,"b")),d.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),d.push(this.alpha.build(e,"f")),d.push(this.calpha),e.format(a+"("+d.join(",")+")",this.getType(e),t)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),t)}},hi=Or;hi.DrawFunctions=function(){let e=new U(`float hashwithoutsine12(vec2 p) {
1083
1083
  vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1084
1084
  p3 += dot(p3, p3.yzx + 33.33);
1085
1085
  return fract((p3.x + p3.y) * p3.z);
@@ -1172,7 +1172,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1172
1172
  float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1173
1173
  vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1174
1174
  return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
1175
- }`,[t]),d=new U(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1175
+ }`,[t]),u=new U(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1176
1176
  uv *= frequency;
1177
1177
  vec2 i = floor(uv);
1178
1178
 
@@ -1195,7 +1195,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1195
1195
  s + smoothness,
1196
1196
  abs(f.y)
1197
1197
  );
1198
- }`,[t]),u=new U(`// Uses bisection
1198
+ }`,[t]),d=new U(`// Uses bisection
1199
1199
  float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
1200
1200
  // Convert all data to a primitive cosine wave
1201
1201
  p = c * (p - vec2(d, a));
@@ -1244,7 +1244,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1244
1244
  float s = mix(size, size * rand, variation);
1245
1245
 
1246
1246
  return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
1247
- }`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:l,diamond:c,checkerboard:d,line:a,wave:u}}();var Lu=class extends ae{constructor(e,t,o,i,s,l,c,d){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=l,this.isMask=d,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Lu.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.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},yi=Lu;yi.Nodes=function(){let e=new U(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1247
+ }`);return{tileAndCenter:t,circle:o,ring:i,polygon:s,cross:l,diamond:c,checkerboard:u,line:a,wave:d}}();var Bd=class extends ae{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=l,this.isMask=u,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){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(Bd.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.isMask.build(e,"b")),i.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},yi=Bd;yi.Nodes=function(){let e=new U(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1248
1248
  vec3 st = position / noiseScale;
1249
1249
  vec3 q = vec3(simplex3d(st),
1250
1250
  simplex3d(st + vec3(1.0)),
@@ -1267,7 +1267,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1267
1267
  accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1268
1268
 
1269
1269
  return res;
1270
- }`,[e])}}();var Bu=class extends ae{constructor(e,t,o,i,s,l,c,d,a,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=d,this.offset=a,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Bu.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.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},gi=Bu;gi.Nodes=function(){let e=new U(`float rand(float n) {
1270
+ }`,[e])}}();var Dd=class extends ae{constructor(e,t,o,i,s,l,c,u,a,d){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=i,this.isWorldSpace=s,this.noiseStrength=l,this.noiseScale=c,this.shadowColor=u,this.offset=a,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Dd.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.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},gi=Dd;gi.Nodes=function(){let e=new U(`float rand(float n) {
1271
1271
  return fract(sin(n) * 43758.5453123);
1272
1272
  }`),t=new U(`float hash1(float p) {
1273
1273
  p = fract(p * 0.011);
@@ -1503,7 +1503,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
1503
1503
 
1504
1504
  return color.xyz;
1505
1505
 
1506
- }`,[nt.simplex,e,o,s])}}();var Du=class extends ae{constructor(e,t,o,i,s,l,c,d){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=s,this.transmissionDepthMap=l,this.aspectRatio=c,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.define("BLUR_SLOD",Math.pow(2,Ye.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Du.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.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},xi=Du;xi.Nodes=function(){let e=new U(`
1506
+ }`,[nt.simplex,e,o,s])}}();var Gd=class extends ae{constructor(e,t,o,i,s,l,c,u){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,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,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.define("BLUR_SLOD",Math.pow(2,Ye.transmissionLod.value)),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Gd.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.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},xi=Gd;xi.Nodes=function(){let e=new U(`
1507
1507
  float gaussian(vec2 i) {
1508
1508
  const float sigma = float(NUM_SAMPLES) * .25;
1509
1509
  return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
@@ -1600,9 +1600,9 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1600
1600
  accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1601
1601
 
1602
1602
  return transmission;
1603
- }`,[l])}}();var Gu=(e=>(e.NOISE="noise",e.MAP="map",e))(Gu||{}),Ru=class extends ae{constructor(e,t,o,i,s,l,c,d,a,u,p){super("v3");this.displacementTypeIndex=new xe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Gu)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ni(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=u,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=l,this.highCut=c,this.lowCut=d,this.quality=a}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Gu)[this.displacementTypeIndex.value]){case"map":{o=e.include(Ru.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(Ts)[this.noiseFunctionIndex.value],c=new U(`vec3 orthogonal(vec3 v) {
1603
+ }`,[l])}}();var Rd=(e=>(e.NOISE="noise",e.MAP="map",e))(Rd||{}),Vd=class extends ae{constructor(e,t,o,i,s,l,c,u,a,d,p){super("v3");this.displacementTypeIndex=new xe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Rd)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ni(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=d,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=s,this.seed=l,this.highCut=c,this.lowCut=u,this.quality=a}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(Rd)[this.displacementTypeIndex.value]){case"map":{o=e.include(Vd.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(Ts)[this.noiseFunctionIndex.value],c=new U(`vec3 orthogonal(vec3 v) {
1604
1604
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1605
- }`),d=l=="voronoi"?`
1605
+ }`),u=l=="voronoi"?`
1606
1606
  float v = ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1607
1607
  v = remap(v, lowCut, highCut, 0.0, 1.0);
1608
1608
  v = smax(v, 0.0, smoothness * 0.25);
@@ -1612,8 +1612,8 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1612
1612
  `:`
1613
1613
  return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
1614
1614
  `,a=new U(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality) {
1615
- ${d}
1616
- }`,[nt.simplex,nt.simplexFractal,nt.simplexAshima,nt.fbm,nt.perlin,nt.voronoi]),u=new U(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
1615
+ ${u}
1616
+ }`,[nt.simplex,nt.simplexFractal,nt.simplexAshima,nt.fbm,nt.perlin,nt.voronoi]),d=new U(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, int voronoiStyle, float smoothness, float seed, float highCut, float lowCut, int quality, float intensity, out vec3 displaced_normal) {
1617
1617
  vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1618
1618
  vec3 tangent1 = orthogonal(normal);
1619
1619
  vec3 tangent2 = normalize(cross(normal, tangent1));
@@ -1629,7 +1629,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1629
1629
  vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1630
1630
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1631
1631
  return displaced_position;
1632
- }`,[a,c]);o=e.include(u),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},vi=Ru;vi.Nodes=function(){let e=new U(`vec3 orthogonal(vec3 v) {
1632
+ }`,[a,c]);o=e.include(d),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f")),i.push(this.voronoiStyle.build(e,"i")),i.push(this.smoothness.build(e,"f")),i.push(this.seed.build(e,"f")),i.push(this.highCut.build(e,"f")),i.push(this.lowCut.build(e,"f")),i.push(this.quality.build(e,"i"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},vi=Vd;vi.Nodes=function(){let e=new U(`vec3 orthogonal(vec3 v) {
1633
1633
  return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1634
1634
  }`),t=new U(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1635
1635
  vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
@@ -1651,7 +1651,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1651
1651
  vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1652
1652
  displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
1653
1653
  return displaced_position;
1654
- }`,[e,t])}}();var Ye={normalRenderTarget:new Ot,normalRenderTargetDepth:new Ot,transmissionRenderTarget:new Ot,transmissionSize:new ze(2048,2048),transmissionRenderTargetDepth:new Ot,pixelRatioNode:new Z(1),resolution:new ze,penumbraSize:new ir(5,.5),transmissionLod:new xe(2)};for(let n of Object.values(Ye))n.isRenderGlobal=!0;var Ps=class extends tt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Pe(5526619),this.emissive=new Pe(0),this.emissiveIntensity=new Z(1),this.shadingAlpha=new Z(1),this.shadingBlend=new xe(0)}get category(){return"lambert"}build(e){let t;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(BP.merge([Py.fog,Py.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(`
1654
+ }`,[e,t])}}();var Ye={normalRenderTarget:new Ot,normalRenderTargetDepth:new Ot,transmissionRenderTarget:new Ot,transmissionSize:new ze(2048,2048),transmissionRenderTargetDepth:new Ot,pixelRatioNode:new Z(1),resolution:new ze,penumbraSize:new ir(5,.5),transmissionLod:new xe(2)};for(let n of Object.values(Ye))n.isRenderGlobal=!0;var Ps=class extends tt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Pe(5526619),this.emissive=new Pe(0),this.emissiveIntensity=new Z(1),this.shadingAlpha=new Z(1),this.shadingBlend=new xe(0)}get category(){return"lambert"}build(e){let t;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(GP.merge([Oy.fog,Oy.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(`
1655
1655
  `));let i=["#include <beginnormal_vertex>",`
1656
1656
  #ifndef USE_LAYER_DISPLACE
1657
1657
  #include <defaultnormal_vertex>
@@ -1743,21 +1743,21 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1743
1743
  #pragma unroll_loop_end
1744
1744
  #endif
1745
1745
  `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
1746
- `)}else{e.mergeUniform({penumbraSize:Ye.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),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"),d=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(`
1747
- `));let u=["#include <normal_fragment_begin>",`
1746
+ `)}else{e.mergeUniform({penumbraSize:Ye.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),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(`
1747
+ `));let d=["#include <normal_fragment_begin>",`
1748
1748
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1749
1749
  vec3 viewdx = dFdx(vViewPosition);
1750
1750
  vec3 viewdy = dFdy(vViewPosition);
1751
1751
  vec3 faceNormal = normalize(cross(viewdx, viewdy));
1752
1752
  bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
1753
- `,"#include <clipping_planes_fragment>"];u.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),i&&u.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),u.push(`
1753
+ `,"#include <clipping_planes_fragment>"];d.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),a&&d.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),d.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&&d.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+s.result+";"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),d.push(`
1754
1754
  if (outgoingLight != diffuseColor) {
1755
1755
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1756
1756
  accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
1757
1757
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
1758
1758
  }
1759
- `),d&&u.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=u.join(`
1760
- `)}return t}};import{UniformsLib as Oy,UniformsUtils as DP}from"three";var Os=class extends tt{constructor(){super("phong");this.nodeType="Phong";this.color=new Pe(5526619),this.specular=new Pe(1118481),this.shininess=new Z(30),this.shadingAlpha=new Z(1),this.shadingBlend=new xe(0)}get category(){return"phong"}build(e){let t;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(DP.merge([Oy.fog,Oy.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(`
1759
+ `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
1760
+ `)}return t}};import{UniformsLib as Ay,UniformsUtils as RP}from"three";var Os=class extends tt{constructor(){super("phong");this.nodeType="Phong";this.color=new Pe(5526619),this.specular=new Pe(1118481),this.shininess=new Z(30),this.shadingAlpha=new Z(1),this.shadingBlend=new xe(0)}get category(){return"phong"}build(e){let t;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(RP.merge([Ay.fog,Ay.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(`
1761
1761
  `));let i=["#include <beginnormal_vertex>",`
1762
1762
  #ifndef USE_LAYER_DISPLACE
1763
1763
  #include <defaultnormal_vertex>
@@ -1776,8 +1776,8 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1776
1776
  #include <begin_vertex>
1777
1777
  #endif
1778
1778
  `];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;"),t=i.join(`
1779
- `)}else{e.mergeUniform({penumbraSize:Ye.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),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"),d=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(`
1780
- `));let u=["#include <normal_fragment_begin>",`
1779
+ `)}else{e.mergeUniform({penumbraSize:Ye.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),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(`
1780
+ `));let d=["#include <normal_fragment_begin>",`
1781
1781
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1782
1782
  vec3 viewdx = dFdx(vViewPosition);
1783
1783
  vec3 viewdy = dFdy(vViewPosition);
@@ -1785,14 +1785,14 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1785
1785
  if (dot(normal, faceNormal) < 0.0) {
1786
1786
  normal *= -1.0;
1787
1787
  }
1788
- `," BlinnPhongMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),u.push(`
1788
+ `," BlinnPhongMaterial material;"];d.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&&d.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),d.push("material.diffuseColor = diffuseColor;"),d.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),d.push(`
1789
1789
  if (outgoingLight != diffuseColor) {
1790
1790
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1791
1791
  accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
1792
1792
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
1793
1793
  }
1794
- `),d&&u.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=u.join(`
1795
- `)}return t}};import{UniformsLib as Vu,UniformsUtils as GP}from"three";var As=class extends tt{constructor(){super("standard");this.nodeType="Standard";this.color=new Pe(5526619),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)}get category(){return"physical"}build(e){let t;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(GP.merge([Vu.fog,Vu.lights])),Vu.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(`
1794
+ `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
1795
+ `)}return t}};import{UniformsLib as zd,UniformsUtils as VP}from"three";var As=class extends tt{constructor(){super("standard");this.nodeType="Standard";this.color=new Pe(5526619),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)}get category(){return"physical"}build(e){let t;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(VP.merge([zd.fog,zd.lights])),zd.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(`
1796
1796
  `));let i=["#include <beginnormal_vertex>",`
1797
1797
  #if !defined( USE_LAYER_DISPLACE )
1798
1798
  #include <defaultnormal_vertex>
@@ -1810,7 +1810,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1810
1810
  #include <begin_vertex>
1811
1811
  #endif /* !USE_LAYER_DISPLACE */
1812
1812
  `];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;"),t=i.join(`
1813
- `)}else{e.mergeUniform({penumbraSize:Ye.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Pe(5526619)),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"),d=this.shadingBlend.flow(e,"i"),a=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
1813
+ `)}else{e.mergeUniform({penumbraSize:Ye.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Pe(5526619)),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,d=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=d!==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(`
1814
1814
  `));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
1815
1815
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1816
1816
  vec3 viewdx = dFdx(vViewPosition);
@@ -1819,14 +1819,14 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1819
1819
  if (dot(normal, faceNormal) < 0.0) {
1820
1820
  normal *= -1.0;
1821
1821
  }
1822
- `," 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+";"),u&&f.push(u.code,"#ifdef ALPHATEST"," if ( "+u.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 );"),p?f.push(p.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+p.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;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
1822
+ `," 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+";"),d&&f.push(d.code,"#ifdef ALPHATEST"," if ( "+d.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 );"),p?f.push(p.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+p.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;");let m="1.0";this.mask&&(this.mask.analyze(e),m=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
1823
1823
  if (outgoingLight != diffuseColor) {
1824
1824
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1825
1825
  accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${m} * lightAccu;
1826
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${d.result} );
1826
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${u.result} );
1827
1827
  }
1828
- `),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
1829
- `)}return t}};import{UniformsLib as Ay,UniformsUtils as RP}from"three";var Cs=class extends tt{constructor(){super("toon");this.nodeType="Toon";this.color=new Pe(5526619),this.specular=new Pe(1118481),this.shininess=new Z(30),this.shadingAlpha=new Z(1),this.shadingBlend=new xe(0)}get category(){return"toon"}build(e){let t;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(RP.merge([Ay.fog,Ay.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(`
1828
+ `),a&&f.push(a.code,`outgoingLight = spe_blend(outgoingLight, ${a.result}, 1.0, SPE_BLENDING_NORMAL);`),d?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${d.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=f.join(`
1829
+ `)}return t}};import{UniformsLib as Cy,UniformsUtils as zP}from"three";var Cs=class extends tt{constructor(){super("toon");this.nodeType="Toon";this.color=new Pe(5526619),this.specular=new Pe(1118481),this.shininess=new Z(30),this.shadingAlpha=new Z(1),this.shadingBlend=new xe(0)}get category(){return"toon"}build(e){let t;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(zP.merge([Cy.fog,Cy.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(`
1830
1830
  `));let i=["#include <beginnormal_vertex>",`
1831
1831
  #ifndef USE_LAYER_DISPLACE
1832
1832
  #include <defaultnormal_vertex>
@@ -1844,7 +1844,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1844
1844
  #include <begin_vertex>
1845
1845
  #endif
1846
1846
  `];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;"),t=i.join(`
1847
- `)}else{e.mergeUniform({penumbraSize:Ye.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),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"),d=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>",`
1847
+ `)}else{e.mergeUniform({penumbraSize:Ye.penumbraSize}),this.color===void 0&&(this.color=new Pe(5526619)),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>",`
1848
1848
  varying vec3 vViewPosition;
1849
1849
  struct ToonMaterial {
1850
1850
  vec3 diffuseColor;
@@ -1865,7 +1865,7 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1865
1865
  #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
1866
1866
  #define Material_LightProbeLOD( material ) (0)
1867
1867
  `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
1868
- `));let u=["#include <normal_fragment_begin>",`
1868
+ `));let d=["#include <normal_fragment_begin>",`
1869
1869
  // NOTE: gl_FrontFacing alternative using face normal estimation.
1870
1870
  vec3 viewdx = dFdx(vViewPosition);
1871
1871
  vec3 viewdy = dFdy(vViewPosition);
@@ -1873,15 +1873,15 @@ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
1873
1873
  if (dot(normal, faceNormal) < 0.0) {
1874
1874
  normal *= -1.0;
1875
1875
  }
1876
- `," ToonMaterial material;"];u.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),a&&u.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),u.push("material.diffuseColor = diffuseColor;"),u.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),u.push(`
1876
+ `," ToonMaterial material;"];d.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&&d.push(a.code,"#ifdef ALPHATEST","if ( "+a.result+" <= ALPHATEST ) discard;","#endif"),d.push("material.diffuseColor = diffuseColor;"),d.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;");let p="1.0";this.mask&&(this.mask.analyze(e),p=`luminance(${this.mask.flow(e,"v3").result})`),d.push(`
1877
1877
  if (outgoingLight != diffuseColor) {
1878
1878
  float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1879
1879
  accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
1880
1880
  outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
1881
1881
  }
1882
- `),d&&u.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),a?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=u.join(`
1883
- `)}return t}};import{VideoTexture as VP,Texture as zP}from"three";var Tl=class{constructor(r=1e3*10){this.timeout=r;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(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-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))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var Fu=class extends Tl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},zu;function Cy(n){return typeof n=="string"?n:(zu||(zu=new Fu),zu.load(n))}var Pl=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Ol=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var bi=class extends Pl{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let s of i){let l=this[s];l&&(l.image=this.img,l.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(s=>{o.onloadend=l=>{i=l.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Cy(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new VP(this.img,void 0,e,e):o=new zP(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var jt=class extends bi{};import{Vector2 as Xr,Vector3 as Ar,Vector4 as Al}from"three";function ut(n,r){return r.color(n)}function Ny(n,r){switch(n.type){case"fresnel":return kP(n,r);case"gradient":return UP(n);case"depth":return HP(n);case"normal":return WP(n);case"noise":return qP(n,r);case"rainbow":return $P(n);case"toon":return XP(n,r);case"outline":return YP(n,r);case"transmission":return KP(n,r);case"color":return jP(n,r);case"pattern":return ZP(n,r)}}function FP(n){return{type:n.type}}function lr(n){let{alpha:r,mode:e,isMask:t}=n;return{...FP(n),alpha:r,mode:e,isMask:t}}function jP(n,r){return{...lr(n),color:ut(n.color,r)}}function kP(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:l}=n;return{...lr(n),color:ut(s,r),bias:e,scale:t,intensity:o,factor:i}}function UP(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...lr(n),gradientType:r,smooth:e,colors:t.map(c=>new Al(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new Xr(...s),morph:new Xr(...l),angle:i}}function HP(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:d,smooth:a}=n;return{...lr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Ar(...s),direction:l?new Ar(...l):new Ar(1,0,0),colors:c.map(u=>u!==void 0?new Al(u[0],u[1],u[2],u[3]):new Al(0,0,0,0)),steps:d.slice(0,c.length),smooth:a}}function WP(n){let{cnormal:r}=n;return{...lr(n),cnormal:new Ar(r[0],r[1],r[2])}}function qP(n,r){return{...lr(n),scale:n.scale,move:n.move,fA:new Xr(...n.fA),fB:new Xr(...n.fB),size:new Ar(...n.size),distortion:new Xr(...n.distortion),colorA:ut(n.colorA,r),colorB:ut(n.colorB,r),colorC:ut(n.colorC,r),colorD:ut(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function $P(n){return{...lr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Ar(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Ar(...n.offset)}}function XP(n,r){return{...lr(n),positioning:n.positioning,colors:n.colors.map(e=>new Al(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Ar(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:ut(n.shadowColor,r),offset:new Ar(...n.offset)}}function YP(n,r){return{...lr(n),outlineColor:ut(n.outlineColor,r),contourColor:ut(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Ar(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function KP(n,r){return{...lr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function ZP(n,r){return{...lr(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Xr(...n.offset),colorA:ut(n.colorA,r),colorB:ut(n.colorB,r),frequency:new Xr(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Xr(...n.vertical),horizontal:new Xr(...n.horizontal),sides:n.sides}}var yo=class extends Xe{};import{Vector4 as QP}from"three";var ju={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},ku={depth:["colors"]};function JP(n,r,e){if(r==="isMask")return!0;let t=ju[n.type],o=ku[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Uu(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let s=i.image,l=r.image(s),c=t;c.image instanceof jt||c.image.deref(),c.image=l}if("video"in i){let s=i.video,l=r.video(s),c=t;c.image instanceof jt||c.image.deref(),c.image=l}if("wrapping"in i){let s=t;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 Iy(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Hu(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof ho))switch(o=o||JP(e,i,s),l.constructor){case Pe:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof yo?l.value=new Xe(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case Pt:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof yo?l.value=new Xe(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case ze:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case ct:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Ot:{Uu(s,r,e);break}case ar:{l.value=s.map(c=>new QP(...c));break}default:{l.value=s;break}}}return o}var Nr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Hu(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Ut.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),s=new Go(i,t.texture.wrapping),l=new wl(i),c=new _l(t.texture.repeat,t.texture.offset),d=new Z(t.crop?1:0),a=new xe(t.projection??0),u=new xe(["x","y","z"].indexOf(t.axis)??0),p=new xe(t.side??0),f=new ze(t.size?new cr(t.size[0],t.size[1]):new cr(100,100)),m=new Z(t.blending??0),h=new Z(t.alpha??1),y=new xe(t.mode??0),g=new sr(t.isMask??!1),v=new li(s,l,d,a,u,p,f,m,c,h,y,g),b=new we(v.calpha,"f");return new Be(r,e,t,{texture:s,textureSize:l,crop:d,projection:a,axis:u,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},v,y,b,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Go(i,t.texture.wrapping),l=new Z(t.alpha??1),c=new xe(t.mode??0),d=new sr(t.isMask??!1),a=new pi(s,l,c,d),u=new we(a.calpha,"f");return new Be(r,e,t,{texture:s,alpha:l,mode:c,isMask:d},a,c,u,d)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new ct(new Cr(...t.offset)),s=new Z(t.scale??10),l=new Z(t.intensity??8),c=new Z(t.movement??1),d=new xe(t.noiseType??0),a=new xe(t.voronoiStyle??0),u=new Z(t.smoothness??.5),p=new Z(t.seed??0),f=new Z(t.highCut??1),m=new Z(t.lowCut??0),h=new xe(t.quality??1),y=new vi(l,c,i,a,u,p,f,m,h,s,d);return new Ns(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:d,voronoiStyle:a,smoothness:u,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return rO(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene?.markNeedsUpdateRendererDirty(),!0):Iy(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Uu(o.props,t.shared,this):!0;return!1}dispose(){if(eO(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof jt||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},Be=class extends Nr{constructor(e,t,o,i,s,l,c,d){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c;this.isMask=d}},Ns=class extends Nr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Ut=class extends Nr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new Z(o.alpha),c=new xe(o.mode),d;if(!o.visible)s=new Do,d={};else if(o.category==="lambert"){s=new Ps;let a=new Pe(i.color(o.emissive)??0);d={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new Cs;let a=new Z(o.shininess??30),u=new Pe(i.color(o.specular)??1118481);d={shininess:a,specular:u},s.shininess=a,s.specular=u}else if(o.category==="physical"){s=new As;let a=new Z(o.roughness??.3),u=new Z(o.metalness??0),p=new Z(o.reflectivity??.5);d={roughness:a,metalness:u,reflectivity:p},s.roughness=a,s.metalness=u,s.reflectivity=p}else{s=new Os;let a=new Z(o.shininess??30),u=new Pe(o.specular!==void 0?i.color(o.specular)??1118481:1118481);d={shininess:a,specular:u},s.shininess=a,s.specular=u}return s.alpha=new Z(1),s.shadingAlpha=l,s.shadingBlend=c,d.alpha=s.shadingAlpha,d.mode=s.shadingBlend,new Ut(e,t,o,s,d)}get category(){return this.node.category}};function eO(n){let r=n instanceof Nr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function kt(n){return{alpha:new Z(n.alpha??1),mode:new xe(n.mode??0),isMask:new sr(n.isMask??!1)}}function tO(n,r,e,t){switch(n.type){case"color":{let o=new Pe(t.color??5526619),i=kt(t),s=new Ro(o,i.alpha),l=new we(s.calpha,"f");return new Be(r,e,n,{color:o,...i},s,i.mode,l,i.isMask)}case"fresnel":{let o=new Pe(t.color??16777215),i=new Z(t.bias??.1),s=new Z(t.scale??1),l=new Z(t.intensity??2),c=new Z(t.factor??1),d=kt(t),a=new _s(o,i,s,l,c,d.alpha,d.mode,d.isMask),u=new we(a.calpha,"f");return new Be(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,...d},a,d.mode,u,d.isMask)}case"rainbow":{let o=new Z(t.filmThickness??30),i=new Z(t.movement??0),s=new ct(t.wavelengths??new Cr(0,0,0)),l=new Z(t.noiseStrength??0),c=new Z(t.noiseScale??1),d=new ct(t.offset??new Cr(0,0,0)),a=kt(t),u=new yi(o,i,s,l,c,d,a.alpha,a.isMask),p=new we(u.calpha,"f");return new Be(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:d,...a},u,a.mode,p,a.isMask)}case"transmission":{let o=new Z(t.thickness??10),i=new Z(t.ior??1.5),s=new Z(t.roughness??.5),l=Ye.transmissionSize,c=Ye.transmissionRenderTarget,d=Ye.transmissionRenderTargetDepth,a=window.innerWidth,u=window.innerHeight,p=a>=u?new ze(u/a,1):new ze(1,a/u),f=kt(t),m=new xi(o,i,s,l,c,d,p,f.alpha),h=new we(m.calpha,"f");return new Be(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,...f},m,f.mode,h,f.isMask)}case"toon":{let o=new xe(t.positioning??0),i;t.colors?i=new ar(t.colors.length,t.colors):(i=new ar(10,new Si(0,0,0,1)),i.value[1]=new Si(1,1,1,1));let s;t.steps?s=new ir(t.steps.length,t.steps):(s=new ir(10,1),s.value[0]=0);let l=new ct(t.source??new Cr(0,0,0)),c=new sr(t.isWorldSpace??!0),d=new Z(t.noiseStrength??0),a=new Z(t.noiseScale??1),u=new Pt(t.shadowColor),p=new ct(t.offset??new Cr(0,0,0)),f=kt(t),m=new gi(o,i,s,l,c,d,a,u,p,f.alpha),h=new we(m.calpha,"f");return new Be(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:d,noiseScale:a,shadowColor:u,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Pe(t.outlineColor??16777215),i=new Pe(t.contourColor??16777215),s=new Z(t.outlineWidth??.1),l=new Z(t.contourWidth??.1),c=new Z(t.outlineThreshold??.1),d=new Z(t.contourThreshold??.1),a=new Z(t.outlineSmoothing??.1),u=new Z(t.contourFrequency??.1),p=new ct(t.contourDirection??new Cr(0,1,0)),f=new sr(t.positionalLines??!1),m=new sr(t.compensation??!0),h=Ye.normalRenderTarget,y=Ye.normalRenderTargetDepth,g=Ye.pixelRatioNode,v=Ye.resolution,b=kt(t),w=new mi(o,i,s,l,c,d,a,u,p,f,m,v,h,y,g,b.alpha),S=new we(w.calpha,"f");return new Be(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:d,outlineSmoothing:a,contourFrequency:u,contourDirection:p,positionalLines:f,compensation:m,...b},w,b.mode,S,b.isMask)}case"depth":{let o=new xe(t.gradientType??0),i=new sr(t.smooth??!1),s=new Z(t.near??50),l=new Z(t.far??200),c=new Z(t.isVector??1),d=new Z(t.isWorldSpace??0),a=new ct(t.origin??new Cr),u=new ct(t.direction??new Cr),p;t.colors?p=new ar(t.colors.length,t.colors):(p=new ar(2,new Si(0,0,0,1)),p.value[1]=new Si(1,1,1,1));let f;t.steps?f=new ir(t.steps.length,t.steps):(f=new ir(2,1),f.value[0]=0);let m=kt(t),h=new ui(o,i,s,l,c,d,a,u,p,f,m.alpha,m.isMask),y=new we(h.calpha,"f");return new Be(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:d,origin:a,direction:u,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new Z(t.scale??1),i=new ct(t.size??new Cr(100,100,100)),s=new Z(t.move??1),l=new ze(t.fA??new cr(1.7,9.2)),c=new ze(t.fB??new cr(8.3,2.8)),d=new ze(t.distortion??new cr(1,1)),a=new Pt(t.colorA),u=new Pt(t.colorB),p=new Pt(t.colorC),f=new Pt(t.colorD),m=new xe(t.noiseType??0),h=new xe(t.voronoiStyle??0),y=new Z(t.highCut??1),g=new Z(t.lowCut??0),v=new Z(t.smoothness??.5),b=new Z(t.seed??.5),w=new xe(t.quality??1),S=kt(t),T=new fi(o,i,s,l,c,d,a,u,p,f,S.alpha,m,S.isMask,h,y,g,v,b,w),_=new we(T.calpha,"f");return new Be(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:d,colorA:a,colorB:u,colorC:p,colorD:f,noiseType:m,...S,voronoiStyle:h,highCut:y,lowCut:g,smoothness:v,seed:b,quality:w},T,S.mode,_,S.isMask)}case"normal":{let o=new ct(t.cnormal??new Cr(1,1,1)),i=kt(t),s=new si(o,i.alpha),l=new we(s.calpha,"f");return new Be(r,e,n,{cnormal:o,...i},s,i.mode,l,i.isMask)}case"gradient":{let o=new xe(t.gradientType??0),i=new sr(t.smooth??!1),s;t.colors?s=new ar(t.colors.length,t.colors):(s=new ar(10,new Si(0,0,0,1)),s.value[1]=new Si(1,1,1,1));let l;t.steps?l=new ir(t.steps.length,t.steps):(l=new ir(10,1),l.value[0]=0);let c=new ze(t.offset??new cr(0,0)),d=new ze(t.morph??new cr(0,0)),a=new Z(t.angle??0),u=kt(t),p=new di(o,i,s,l,c,d,a,u.alpha,u.isMask),f=new we(p.calpha,"f");return new Be(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:d,angle:a,...u},p,u.mode,f,u.isMask)}case"pattern":{let o=new xe(t.style??0),i=new xe(t.projection??0),s=new xe(["x","y","z"].indexOf(t.axis)??0),l=new Z(t.blending??0),c=new ze(t.offset??new cr(0,0)),d=new Pt(t.colorA),a=new Pt(t.colorB),u=new ze(t.frequency??new cr(10,10)),p=new Z(t.size??.5),f=new Z(t.variation??0),m=new Z(t.smoothness??.5),h=new Z(t.zigzag??0),y=new Z(t.rotation??0),g=new ze(t.vertical??new cr(0,1)),v=new ze(t.horizontal??new cr(0,1)),b=new xe(t.sides??6),w=kt(t),S=new hi(o,i,s,l,c,d,a,u,p,f,m,h,y,g,v,b,w.alpha,w.isMask),T=new we(S.calpha,"f");return new Be(r,e,n,{style:o,projection:i,axis:s,blending:l,offset:c,colorA:d,colorB:a,frequency:u,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:v,sides:b,...w},S,w.mode,T,w.isMask)}default:{let o=new Pe(1,0,0,1),i=kt(t),s=new Ro(o,i.alpha),l=new we(s.calpha,"f");return new Be(r,e,n,{color:o,...i},s,i.mode,l,i.isMask)}}}function rO(n,r,e,t){let o=Ny(e,t);return tO(e,n,r,o)}function Hu(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function My(n,r){let e=0;for(let t of n.layers){if(t.data.type!=="displace"&&t.data.isMask)return!0;if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"&&t.data.type!=="pattern"){let o=t.data.visible?t.data.alpha:0;if(o===1&&t.data.type==="depth"||t.data.type==="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o===1&&t.data.type==="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,l=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,d=Math.min(i,Math.min(s,Math.min(l,c)));d<1&&(o=d)}e+=(1-e)*o}}return e<1}var Ct=class extends oO{constructor(){super(void 0);this.flatShading=!1;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Wu=class extends Ct{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},wi=class extends Ct{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new Wu(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??wt.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Nr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=My(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof Ut),this.lightLayer===void 0&&(this.lightLayer=new Ut(0,"",{...yt.defaultData("light","phong"),visible:!1},new Do,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=My(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let l=Nr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,l),o.scene?.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene?.markNeedsUpdateRendererDirty();else if(e.type===6){let l=this.layers.findIndex(d=>d.uuid===e.id),c=this.layers[l];this.layers.splice(l,1),this.layers.splice(e.localIndex,0,c),o.scene?.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{let l=this.layers.find(c=>c.uuid===s);if(l){let c=t.layers.data(s);if(l.updateByOp({...e,path:e.path.slice(2)},c,o)){let a=Nr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(u=>u.uuid===s),1,a),this.onUpdate()}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof Be?t.color.mask=void 0:t instanceof Ut&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof Be&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Ut?i.node.mask=new rt(t.color,t.alpha,rt.MUL):i instanceof Be&&(i.isMask.value||(i.color.mask=new rt(t.color,t.alpha,rt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Be),t=this.layers.findIndex(o=>o instanceof Ut);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];if(s instanceof Be){if(s.isMask.value)continue;o=new ii(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new we("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Ut);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Be){if(i.isMask.value)continue;e=new ii(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Ns);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new rt(t,e[o].position,rt.ADD),t=new rt(t,new Z(.5).setReadonly(!0),rt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),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,t){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,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(ju[t.type]??[]).map(l=>t[l]),i=(ku[t.type]??[]).map(l=>t[l]?.length??0),s=[...o,...i];s.length?e+=`["${t.type}", "${s.join('","')}"],`:e+=`"${t.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new Sl;this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof Be){let t=e.params.texture;if(t instanceof Go&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Ct.prototype,{properties:{get:function(){return this.fragment.properties}}});var Vo=class extends wi{};var Dy=Ws(Ey());var Ly=new Map;function By(n){if(typeof n=="string")return n;let r=Ly.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Ly.set(n,r)),r.url}var zo=class{constructor({src:r,volume:e,delay:t,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 r=="string"?i={src:r}:i={src:By(r),format:"wav"},this.sound=new Dy.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}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(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as nO,Vector2 as Fo,Path as Gy,Shape as iO,ShapeUtils as sO,Color as aO}from"three";var Nl=class{constructor(){this.type="ShapePath";this.color=new aO;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Gy,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,v){let b=h.x,w=y.x,S=g.x,T=v.x,_=h.y,x=y.y,N=g.y,P=v.y,C=(T-S)*(_-N)-(P-N)*(b-S),O=(w-b)*(_-N)-(x-_)*(b-S),A=(P-N)*(w-b)-(T-S)*(x-_),R=C/A,k=O/A;if(A===0&&C!==0||R<=0||R>=1||k<0||k>1)return null;if(C===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let te=$===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(b+t.t*(w-b)).toPrecision(10),X=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:X,t:t.t}}return null}else{for(let X=0;X<2;X++)if(i(X===0?g:v,h,y),t.loc===e.ORIGIN){let q=X===0?g:v;return{x:q.x,y:q.y,t:t.t}}let $=+(b+R*(w-b)).toPrecision(10),te=+(_+R*(x-_)).toPrecision(10);return{x:$,y:te,t:R}}}function i(h,y,g){let v=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,T=v*S-w*b;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;v!==0?_=w/v:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let T=1;T<y.length;T++){let _=y[T-1],x=y[T],N=o(w,S,_,x);N!==null&&g.find(P=>P.t<=N.t+Number.EPSILON&&P.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),v.push(new Fo(N.x,N.y)))}}return v}function l(h,y,g){let v=new Fo;y.getCenter(v);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(v)&&s(h,w.points).forEach(T=>{b.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,v,b){(b==null||b==="")&&(b="nonzero");let w=new Fo;h.boundingBox.getCenter(w);let S=[new Fo(g,w.y),new Fo(v,w.y)],T=l(S,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],x=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):x.push(O)});let N=_[0].point.x,P=[],C=0;for(;C<x.length&&x[C].point.x<N;)P.length>0&&P[P.length-1]===x[C].identifier?P.pop():P.push(x[C].identifier),C++;if(P.push(h.identifier),b==="evenodd"){let O=P.length%2===0,A=P[P.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,R=null;for(let k=0;k<P.length;k++){let $=P[k];y[$]&&(O?(R=y[$].isCW,O=!1,A=$):R!==y[$].isCW&&(R=y[$].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let d=0,a=999999999,u=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,v=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>b&&(b=T.x),T.x<w&&(w=T.x)}u<=b&&(u=b+1),a>=w&&(a=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:sO.isClockWise(y),identifier:d++,boundingBox:new nO(new Fo(w,v),new Fo(b,g))})});let f=p.map(h=>c(h,p,a,u,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new iO;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new Gy;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Vy,qu=new Promise(n=>{Vy=n}),Ry=!1;async function zy(){if(Ry)return;let n=await import("./opentype.js");Vy(n),Ry=!0}var Is=class{async load(r,e,t=()=>{}){let{load:o}=await qu;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await qu;try{let o=e(r),i=new t,s=l=>o.charToGlyphIndex(l.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function lO(n){return await(await fetch(n)).arrayBuffer()}var cO=new Is;async function $u(n){let r,e,t=!1;if(n.url?(r=await lO(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await cO.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as uO,LineCurve as dO,QuadraticBezierCurve as pO}from"three";function fO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Il=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=$u(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=$u(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,s=[],l=0,c=t.length===i.length;for(let d=0;d<t.length;d++){let a=t[d].index,u=String.fromCharCode(t[d].unicode),p=i[l];if(fO(a,p)||c)s.push({char:u,index:a,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),l++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)l++,m=e.charAt(l),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===a&&(g=!0),l>e.length&&(g=!0);s.push({char:u,index:a,replacements:h,replacementChars:Array.from(f)}),l++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(v=>this.getTextWidth(v,e)),l=e.width,c=this.getCharWidth(`
1884
- `,e),d=e.horizontalAlign===1?c:0,a=this.computeSpaceWidthForLine(r,0,e),u=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(v=>[]),h=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let b=r[v],w={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(b,w)}catch(_){console.warn(_)}u=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,b,c);let T=[];try{T=this.reverseLigaturesTable(t,b,S)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(r,v,e);for(let _=0;_<S.length;_++){let x=S[_],N=x.index===0?`
1885
- `:x.unicode?String.fromCharCode(x.unicode):void 0,P=T[_],C=0,O=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(O=-x.leftSideBearing*o),y&&(C=t.getKerningValue(x,y)*o),u+=O+C;let A=0;if(N===`
1886
- `)A=d;else if(N===" ")A=a;else{let R=this.createPath(x,o,u,p,e);R&&(A=R.offsetX-(C+O),f.push(R.path))}if(P.replacements.length===1)h[v].push([u,p]),m[v].push(A);else{let R=P.replacements.map(X=>(t.glyphs.get(X).advanceWidth??0)*o),k=R.reduce((X,q)=>X+=q,0),$=R.map(X=>X/k),te=u;for(let X=0;X<$.length;X++){let q=A*$[X];h[v].push([te,p]),m[v].push(q),te+=q}}u+=A,y=x}p-=i}let g=[];for(let v=0,b=f.length;v<b;v++)g.push(...f[v].toShapes());return{shapes:g,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(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
1887
- `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,l=Math.abs(this.ascender-this.descender)*o,c=r-l,d=-this.ascender*o-c/2;return i===3?-(t-s-d):i===2?-(t*.5-s*.5-d):d}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let l=new Nl,c=(r.advanceWidth??1)*e;if(r)for(let d of s.commands){let a=l.currentPath?.currentPoint;if(!(a&&d.type!=="Z"&&a.x===d.x&&-a.y===d.y))switch(d.type){case"M":l.moveTo(d.x,-d.y);break;case"L":l.lineTo(d.x,-d.y);break;case"Q":l.quadraticCurveTo(d.x1,-d.y1,d.x,-d.y);break;case"C":l.bezierCurveTo(d.x1,-d.y1,d.x2,-d.y2,d.x,-d.y);break}}return l.subPaths.forEach(d=>{let a=mO(d.curves);a!==void 0&&d.currentPoint.distanceTo(a)>0&&d.lineTo(a.x,a.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:l}}getCharWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let l=t.width,c=this.getTextWidth(i,t);return(l-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function mO(n){if(n.length){let r=n[0];if(r instanceof dO)return r.v1;if(r instanceof uO||r instanceof pO)return r.v0}}var Xu=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},Ms=class extends Xu{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Eo(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var Fy={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var Yu=class extends Ol{constructor(e){super();this.shared=e}create(e){return new bi(e,this.shared)}},jo=class{constructor(r,e={}){this.geometryCache=new Ms(!0);this.geometryCache2=new Ms(!1);this.imageHolderCache=new Yu(this);this.thisContext={scene:Fy,shared:this};this.deletedMaterial=new Vo(wt.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new jt(Ln.emptyImage,this);this.deletedVideo=new jt(rn.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Vo(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t);this.penumbraSize=r.penumbraSize}addMaterial(r,e){e.uuid=r,this.materials[r]?(this.materials[r].reset(e.data,this.thisContext),e.dispose()):this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new wi(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new jt(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new jt(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new yo(e.r,e.g,e.b,e.a):this.colors[r]=new yo(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Xe(0,0,0,0))}else return"a"in r?new Xe(r.r,r.g,r.b,r.a):new Xe(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof zo)return e;{let t=new zo({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof zo&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Il(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof zo&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},jy=new jo(Ha.emptyData());var ur=class extends lt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Td(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let l=o.shared.material(s);this.material[Number(i)]=l}else if($t(e.path,["material"])&&this.material instanceof Ct)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(it.drop(e,1),t.material,o);else if($t(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(it.drop(e,2),s,o)}}}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene?.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene?.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene?.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&xa(this.material).forEach(e=>{e instanceof Ct&&(e instanceof Vo||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as hO}from"three";var dt=class extends ur{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof hO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof jo){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Hi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Hi.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),$t(e.path,["geometry"])&&this.updateByPatchedOpGeometry(it.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let a={...this.data.geometry,...i};this.localGeometry=Eo(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let d=this.localGeometry.userData;d.sxPrev!==void 0&&gs(this.localGeometry.attributes,s/d.sxPrev,l/d.syPrev,c/d.szPrev),d.sxPrev=s,d.syPrev=l,d.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Eo(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Xi(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof ke&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}};function gO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new Zu(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new Zu})}r.forEach((s,l)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(l)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new ky(i,3))}function xO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new Zu;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new ky(t,3))}function _i(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Ct)||n.material.getLayersOfType("outline").length===0)return;n instanceof dt&&n.is2DAndNoDepth?xO(n):gO(n)}function Ti(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Ku.seededRandom(o),Ku.seededRandom(o+1e4),Ku.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new yO(t,3))}var wO;Kn.then(n=>{wO=n});var Ir=new vO,Es=new SO;function Hy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var ko=class extends dt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new bO;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=ke.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,_i(this),Ti(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){ke.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&ke.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=ke.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=ke.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,lt.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Uy,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Ir.setFromBufferAttribute(t),Ir.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ir.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ir.getSize(Es),this.hasNonUniformScale&&Es.divide(this.scale);let i={width:Es.x,height:Es.y,depth:Es.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Ir.min.set(e[0],e[2],e[4]),Ir.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Ir.min.applyMatrix4(this.shearScaleInv),Ir.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Uy);let o=t.boundingSphere.center;Ir.getCenter(o),t.boundingSphere.radius=o.distanceTo(Ir.max)}freeSubdivPointer(){this.subdivPointer&&(ke.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};import{Triangle as _O,Vector3 as Ho}from"three";var Wy=-1,TO=1,qy={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},$y={polygon_center:0,edge:1,vertex:2},Ls=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-Wy)*(e-t)/(TO-Wy)+t};function Xy(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var PO=new Ho,Ml=new Ho,OO=new Ho,AO=new Ho;function Pi(n,r){let e=OO.fromArray(n),t=AO.fromArray(r);Ml.copy(t).sub(e);let o=Ml.length();return Ml.normalize().multiplyScalar(o*.5),PO.copy(e).add(Ml).toArray()}var Ht=new _O,El=new Ho,Ll=new Ho,Uo=new Ho;function Yy(n){let r=[];for(let e=0;e<=n.index.count;e++)if(El.fromArray(n.index.array,e*3),Ht.setFromAttributeAndIndices(n.attributes.position,El.x,El.y,El.z),Ht.getNormal(Ll),Ht.getMidpoint(Uo),!(isNaN(Uo.x)||isNaN(Uo.y)||isNaN(Uo.z))){let{a:t,b:o,c:i}=Ht,s=t.toArray(),l=o.toArray(),c=i.toArray(),d=t.distanceTo(o),a=o.distanceTo(i),u=i.distanceTo(t),p=Pi(s,l),f=Pi(l,c),m=Pi(c,s),h=[d,a,u],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,v=[],b=Ht.getMidpoint(Uo).toArray();y===d&&!g&&(v=[f,m,m],b=p),y===a&&!g&&(v=[p,m,m],b=f),y===u&&!g&&(v=[p,f,f],b=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:b,norm:Ht.getNormal(Ll).toArray()})}return r}function Ky(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Ht.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Ht.getNormal(Ll),Ht.getMidpoint(Uo);let o=Ht.a.toArray(),i=Ht.b.toArray(),s=Ht.c.toArray();r.push({vertices:[o,i,s],faceCenters:[Pi(o,i),Pi(i,s),Pi(s,o)],midpoint:Uo.toArray(),norm:Ll.toArray()})}return r}var CO=4,NO=.5,Qu=n=>.5*(1-Math.cos(n*Math.PI)),Ju=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),s=Math.floor(t),l=r-o,c=e-i,d=t-s,a,u,p=0,f=.5,m,h,y;for(let g=0;g<CO;g++){let v=o+(i<<4)+(s<<8);a=Qu(l),u=Qu(c),m=this.perlin[v&4095],m+=a*(this.perlin[v+1&4095]-m),h=this.perlin[v+16&4095],h+=a*(this.perlin[v+16+1&4095]-h),m+=u*(h-m),v+=256,h=this.perlin[v&4095],h+=a*(this.perlin[v+1&4095]-h),y=this.perlin[v+16&4095],y+=a*(this.perlin[v+16+1&4095]-y),h+=u*(y-h),m+=Qu(d)*(h-m),p+=m*f,f*=NO,o<<=1,l*=2,i<<=1,c*=2,s<<=1,d*=2,l>=1&&(o++,l--),c>=1&&(i++,c--),d>=1&&(s++,d--)}return p}noiseSeed(r){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(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Zy=Ju;import{Vector3 as IO,Matrix4 as MO,Ray as EO}from"three";var Qy=new IO,Jy=new MO,eg=new EO;function tg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var Oi=class extends dt{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.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(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Jy.copy(o).invert(),eg.copy(e.ray).applyMatrix4(Jy),eg.intersectBox(this.singleBBox,Qy))){let i=Qy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var xt=1e-4,Mr,ig,sg,ag,og=new Rt,ng=new Rt;Kn.then(n=>{Mr=n,ig=[Mr.get_face_center,Mr.get_edge_midpoint,Mr.get_vertex_position],sg=[Mr.get_face_normal,Mr.get_edge_normal,Mr.get_vertex_normal],ag=[Mr.face_count,Mr.edge_count,Mr.vertex_count]});var BO=new qo,DO=new qo,go=new Rt,Wo=new Rt,Bs=new Rt,td=new Rt,GO=new Rt,RO=new Rt;var Yr=new Zy,Ci=class extends Bn(LO){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof Wr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Wr&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}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)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=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.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let l=new Wr(this.object);l.expand(),this.add(l)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new Wr(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*rg.DEG2RAD,i=t.end*rg.DEG2RAD,s=o-i,l=new ed(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Rt(0,0,1);break;case"y":c=new Rt(0,1,0);break;default:case"x":c=new Rt(1,0,0);break}let d=e.randomnessObject??vr.defaultData([1,1,1]).randomnessObject,a=d.noiseType==="perlin";Yr.noiseSeed(d.seed);let u=qa((0,Ai.default)(d.seed)),p=Ls(d.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(d.freqScale/10)+d.movement,y=a?Yr.noise(h):u(h,h);m.scale.x=t.scale[0]+p(f,me(y,d.scale[0]))||xt,m.scale.y=t.scale[1]+p(f,me(y,d.scale[1]))||xt,m.scale.z=t.scale[2]+p(f,me(y,d.scale[2]))||xt,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,me(y,d.position[0])),m.position.y+=t.position[1]+p(f,me(y,d.position[1])),m.position.z+=t.position[2]+p(f,me(y,d.position[2]));let v=p(f,me(y,d.rotation[0])),b=p(f,me(y,d.rotation[1])),w=p(f,me(y,d.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+b,m.rotation.z+=l.z+w):m.rotation.set(l.x+v,l.y+b,l.z+w)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new ed(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??vr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Yr.noiseSeed(i.seed);let l=qa((0,Ai.default)(i.seed)),c=Ls(i.strength,this.parameters.randomness);for(let[d,a]of this.children.entries()){let u=d*(i.freqScale/10)+i.movement,p=s?Yr.noise(u):l(u,u),f=c(d,me(p,i.rotation[0])),m=c(d,me(p,i.rotation[1])),h=c(d,me(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*d+c(d,me(p,i.scale[0]))||xt,a.scale.y=1+(t.scale[1]-1)*d+c(d,me(p,i.scale[1]))||xt,a.scale.z=1+(t.scale[2]-1)*d+c(d,me(p,i.scale[2]))||xt,a.rotation.x=o.x*d+f,a.rotation.y=o.y*d+m,a.rotation.z=o.z*d+h,a.position.x=t.position[0]*d+c(d,me(p,i.position[0])),a.position.y=t.position[1]*d+c(d,me(p,i.position[1])),a.position.z=t.position[2]*d+c(d,me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??vr.defaultData([1,1,1]).randomnessObject,s=Ls(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";Yr.noiseSeed(i.seed);let c=Wm((0,Ai.default)(i.seed));if(o.useCenter===!0){let d={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 Rt(o.size[0]*(o.count[0]-d.x)*.5,o.size[1]*(o.count[1]-d.y)*.5,o.size[2]*(o.count[2]-d.z)*.5);for(let u=0;u<o.count[0];u++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=l?Yr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,me(h,i.scale[0]))||xt,y.scale.y=1+s(t,me(h,i.scale[1]))||xt,y.scale.z=1+s(t,me(h,i.scale[2]))||xt;let g=s(t,me(h,i.rotation[0])),v=s(t,me(h,i.rotation[1])),b=s(t,me(h,i.rotation[2]));y.rotation.set(g,v,b),y.position.x=o.size[0]*u-a.x+s(t,me(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,me(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,me(h,i.position[2]))}}else for(let d=0;d<o.count[0];d++)for(let a=0;a<o.count[1];a++)for(let u=0;u<o.count[2];u++){let p=[(d+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement],f=l?Yr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,me(f,i.scale[0]))||xt,m.scale.y=1+s(t,me(f,i.scale[1]))||xt,m.scale.z=1+s(t,me(f,i.scale[2]))||xt;let h=s(t,me(f,i.rotation[0])),y=s(t,me(f,i.rotation[1])),g=s(t,me(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*d+s(t,me(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,me(f,i.position[1])),m.position.z=-o.size[2]*u+s(t,me(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new ed(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??vr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Yr.noiseSeed(i.seed);let l=qa((0,Ai.default)(i.seed)),c=Ls(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Oi)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let d=this.getSubdivData(),a=[],u=g=>{let v=g.length,b=g.map(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),S=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[b/v,w/v,S/v]},p=g=>Math.round(g*1e6)/1e6;d.forEach(g=>{let v=d.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));v.length>1?a.push({pos:g.pos,norm:u(v.map(b=>b.norm))}):a.push(g)});let f=Xy(a);if(d.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new $a(this.objectForSample).build(),h=qy[t.axis],y=this.children;m.setRandomGenerator((0,Ai.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?Yr.noise(b):l(b,b),S=c(g,me(w,i.rotation[0])),T=c(g,me(w,i.rotation[1])),_=c(g,me(w,i.rotation[2]));t.spreadType==="random"?m.sample(Bs,td):(f.length&&(Bs.fromArray(f[g].pos),td.fromArray(f[g].norm)),this.objectForSample instanceof ko&&Bs.applyMatrix4(BO.copy(this.objectForSample.matrixWorld).invert())),Bs.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Bs),go.fromArray(h);let x=t.align==="normal"?td:this.object.getWorldDirection(RO),N=Wo.fromArray(t.position);Wo.x+=Wo.x+c(g,me(w,i.position[0])),Wo.y+=Wo.y+c(g,me(w,i.position[1])),Wo.z+=Wo.z+c(g,me(w,i.position[2]));let P=Math.acos(x.dot(go)),C=GO.crossVectors(go,x).normalize(),O=DO.makeRotationAxis(C,P),A=x.clone().cross(this.object.up).normalize(),R=A.clone().cross(x).normalize(),k=new qo().makeBasis(A,x,R),$=new Rt(go.y,go.z,go.x).normalize(),te=$.clone().cross(go).normalize(),X=new qo().makeBasis($,go,te).invert(),q=new qo().multiplyMatrices(k,X);v.rotation.setFromRotationMatrix(q),N.applyMatrix4(O),v.position.add(N),v.rotation.x=v.rotation.x+o.x+S,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,me(w,i.scale[0]))||xt,v.scale.y=v.scale.y+t.scale[1]+c(g,me(w,i.scale[1]))||xt,v.scale.z=v.scale.z+t.scale[2]+c(g,me(w,i.scale[2]))||xt,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof ko){let t=this.objectForSample,o=$y[e],i=ag[o],s=ig[o],l=sg[o],c=[],d=i(t.subdivPointerNew);for(let a=0;a<=d-1;a++){let u=s(t.subdivPointerNew,a),p=l(t.subdivPointerNew,a);og.fromArray(u).applyMatrix4(t.matrixWorld),ng.fromArray(p),c.push({pos:og.toArray(),norm:ng.toArray()})}return c}else return(this.objectForSample.geometry.index?Yy(this.objectForSample.geometry):Ky(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()}updateState(e,t){if(this.parameters=Ur(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof lt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new qo,this.hiddenMatrix=new qo,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as PA,Scene as OA,Vector3 as AA,Fog as CA,Box3 as NA,MeshBasicMaterial as IA}from"three";import{Camera as YO,OrthographicCamera as dg,PerspectiveCamera as KO,Vector3 as pr,Object3D as pg,Quaternion as ZO}from"three";import{Camera as UO,LineSegments as HO,BufferGeometry as WO,LineBasicMaterial as qO,Color as od,Vector3 as $O,Float32BufferAttribute as cg}from"three";import{BoxGeometry as VO}from"three";var Er=n=>{var r;return r=class extends n{},r.geometryHelper=new VO(30,30,30),r};import{Ray as zO,Sphere as FO,Matrix4 as jO,Vector3 as Kr}from"three";var Bl=new zO,rd=new FO,lg=new jO,Lr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),rd.copy(i.boundingSphere),rd.applyMatrix4(s),e.ray.intersectsSphere(rd)===!1||(lg.copy(s).invert(),Bl.copy(e.ray).applyMatrix4(lg),i.boundingBox!==null&&Bl.intersectsBox(i.boundingBox)===!1))return;let l,c,d,a,u=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),v=Math.min(u.count,f.start+f.count);for(m=g,h=v;m<h;m+=3)if(c=u.getX(m),d=u.getX(m+1),a=u.getX(m+2),l=y(n,e,Bl,p,c,d,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,b=new Kr,w=new Kr,S=new Kr,T=new Kr,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=N*N,C=Math.max(0,f.start),O=Math.min(v.count,f.start+f.count);for(let A=C,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(v,A),w.fromBufferAttribute(v,A+1),Bl.distanceSqToSegment(b,w,T,S)>P)continue;T.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(T);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,b,w,S,T,_){let x=new Kr,N=new Kr,P=new Kr,C=new Kr,O=new Kr;if(x.fromBufferAttribute(w,S),N.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),b.intersectTriangle(x,N,P,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let R=v.ray.origin.distanceTo(O);return R<v.near||R>v.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var Dl=new $O,Wt=new UO,nd=class extends HO{constructor(e){let t=new WO,o=new qO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new od(15711266),d=new od(15711266),a=new od(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",d),u("p","n2",d),u("p","n3",d),u("p","n4",d),u("u1","u2",a),u("u2","u3",a),u("u3","u1",a);function u(f,m,h){p(f,h),p(m,h)}function p(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)}t.setAttribute("position",new cg(i,3)),t.setAttribute("color",new cg(s,3));super(t,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,t=this.pointMap,o=!0;Wt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,l=o?.8:1e-4;dr("n1",t,e,Wt,-i,-s,l),dr("n2",t,e,Wt,i,-s,l),dr("n3",t,e,Wt,-i,s,l),dr("n4",t,e,Wt,i,s,l);let c=l;dr("f1",t,e,Wt,-i,-s,c),dr("f2",t,e,Wt,i,-s,c),dr("f3",t,e,Wt,-i,s,c),dr("f4",t,e,Wt,i,s,c);let d=c,a=.5;dr("u1",t,e,Wt,i*.7*a,s*1.1,d),dr("u2",t,e,Wt,-i*.7*a,s*1.1,d),dr("u3",t,e,Wt,0,s*(1.1+.9*a),d),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function dr(n,r,e,t,o,i,s){Dl.set(o,i,s).unproject(t);let l=r[n];if(l!==void 0){let c=e.getAttribute("position");for(let d=0,a=l.length;d<a;d++)c.setXYZ(l[d],Dl.x,Dl.y,Dl.z)}}var Gl=class extends Er(nd){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,t){Lr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as ug,BoxGeometry as XO}from"three";var Rl;(r=>r.is=e=>"objectHelper"in e)(Rl||(Rl={}));var xo=(n,r)=>class extends Za(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ug&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof XO?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ug&&(i.visible=!1)}}};var id=790,Ni=new pr,sd=new pr,ad=new ZO,ld=new pr,Ds=new pr,cd=new pr,Br=class extends xo(YO,Gl){constructor(e="",t={...In.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=To.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;if(t.orthographic.autoZoom){let s=t.orthographic.autoZoomFrustumSize??id,l=o/i,c=o>i?l:1,d=o>i?1:l;this.orthoCamera=new dg(-s*.5*c,s*.5*c,s*.5*(1/d),-s*.5*(1/d),-5e4,1e4)}else this.orthoCamera=new dg(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new KO(45,o/i,50,1e4),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.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}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,t,o){typeof e=="number"&&(e=new pr(e,t,o)),super.lookAt(e),this.getWorldPosition(Ni),this.targetOffset=Ni.distanceTo(e)}getTarget(e=new pr){return this.getWorldDirection(sd),this.getWorldPosition(Ni),sd.multiplyScalar(this.targetOffset),e.copy(Ni).add(sd),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ni),Ni.distanceTo(e)}updateUp(){this.getWorldQuaternion(ad),ld.set(0,0,1).applyQuaternion(ad),Ds.copy(pg.DEFAULT_UP),this.isUpVectorFlipped&&Ds.negate(),Ds.applyQuaternion(ad),cd.copy(pg.DEFAULT_UP).projectOnPlane(ld),this.angleOffsetFromUp=cd.angleTo(Ds),this.angleOffsetFromUp*=cd.cross(Ds).dot(ld)>=0?1:-1}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new pr),i=e.getWorldDirection(new pr).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new pr),i=this.getWorldDirection(new pr).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){if(this.aspect=e/t,this.data.type==="OrthographicCamera"&&this.data.orthographic.autoZoom){let o=this.data.orthographic.autoZoomFrustumSize??id,i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-o*.5*i,this.right=o*.5*i,this.top=o*.5*(1/s),this.bottom=-o*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;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,t,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,l):this.orthoCamera.setViewOffset(e,t,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,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,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 t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom,autoZoom:!0,autoZoomFrustumSize:id},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return An(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),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()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{BufferGeometry as fg,Float32BufferAttribute as QO,Matrix4 as mg}from"three";var Ii=new mg,JO=new mg;var qt=class extends ur{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new fg;this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof qt&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof lt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(Ii.multiplyMatrices(s.hiddenMatrix,s.matrix),s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=or.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;or.transformMeshSet(s.booleanMeshSetAddress,Ii),s.booleanMatrixInvOld.copy(Ii).invert(),s.booleanWasTransformed=!1}else s instanceof qt&&s.needsTransformForDownstream===!0?(or.transformMeshSet(s.booleanMeshSetAddress,Ii),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(or.transformMeshSet(s.booleanMeshSetAddress,JO.multiplyMatrices(Ii,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(Ii).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new QO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return or.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new fg,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=or.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,_i(this),Ti(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as eA}from"three";var hg;(r=>{function n(e){return Ce.is(e)&&e instanceof eA}r.is=n})(hg||(hg={}));var Mi=(n,r)=>class extends xo(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var Ei=n=>n instanceof lt,Gs=n=>n!==null&&n instanceof qt,yg=n=>n instanceof Br;var ud=n=>Rl.is(n);import{Group as rA}from"three";import{AxesHelper as tA}from"three";var vo=class extends Er(tA){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){Lr(this.object,vo.geometryHelper,e,t)}update(){}};var Rs=class extends xo(rA,vo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as aA,CameraHelper as gg}from"three";import{DirectionalLightHelper as oA}from"three";var Li=class extends Er(oA){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Lr(this.object,Li.geometryHelper,e,t)}};import{PointLightHelper as nA}from"three";var Bi=class extends Er(nA){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Lr(this.object,Bi.geometryHelper,e,t)}};import{SpotLightHelper as iA,Vector3 as sA}from"three";var Vl=class extends Er(iA){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Lr(this.object,Vl.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Vl._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),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)}}},Vs=Vl;Vs._vector=new sA;function lA(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var zl=class extends Mi(aA,Li){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new gg(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof gg&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&lA(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t&&this.update()}};import{PointLight as cA,Vector3 as Fl,Box3 as uA,Box3Helper as xg,Color as dA}from"three";var jl=class extends Mi(cA,Bi){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new Fl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Fl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new uA(s,l),d=new xg(c,new dA(16755200));d.visible=!1,this.gizmos.shadowmap=d,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof xg){let t=this.shadow.camera,o=new Fl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Fl(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};import{SpotLight as pA,CameraHelper as vg,MathUtils as fA,Vector3 as _g,Quaternion as mA}from"three";var bg=new _g,Sg=new _g,wg=new mA,kl=class extends Mi(pA,Vs){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=fA.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new vg(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof vg&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),Sg.setFromMatrixPosition(this.matrixWorld),wg.setFromRotationMatrix(this.matrixWorld),bg.copy(this.up).applyQuaternion(wg).negate().multiplyScalar(this.distance),this.target.position.copy(Sg).add(bg),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Ul=class extends dt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?bs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Di=class extends dt{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=ml;break;case"Ellipse":i=Hn;break;case"Polygon":i=fl;break;case"Star":i=hl;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?bs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};import{Group as hA}from"three";var Zr=class extends xo(hA,vo){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=t.scene.data.objects.get(e.component);if(o){let i,s;for(let l of co.rootOverrideProps)e[l]===void 0?(i===void 0&&(i={...e}),i[l]=o.data[l]):(s===void 0&&(s={}),s[l]=e[l]);return this.overrideData=s,i??e}return e}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i&&(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component))for(let l of co.rootOverrideProps)l in e.props&&e.props[l]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[l]=this.component.data[l]);super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){this.component=e.scene.find(t.component)??null;let o=!1;if(this.component!==this.oldComponent){if(this.oldComponent){let i=0;for(let s of this.children)if(Ce.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Hl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&Pg(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function Hl(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Ce.is(e)&&Hl(e)}}function Tg(n,r,e,t){return n.component===r&&Xi(n.identity,t)?n.overrideData===e?2:1:0}function Pg(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let d=t.component.instances.indexOf(t);d>=0&&t.component.instances.splice(d,1)}o.instances.push(t),t.component=o}o instanceof Zr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let d of o.children)if(Ce.is(d)){let a=[...r,...typeof d.identity=="string"?[d.identity]:d.identity],u=Mn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Ce.is(m)?m:null,p!==null){let h=Tg(p,d,u,a);f=h>=1?p.stateSelection:void 0,h!==2&&(p=null)}if(p===null&&(p=n.scene.findInstance(a)??null,p!==null)){let h=Tg(p,d,u,a);if(f=h>=1?p.stateSelection:void 0,h!==2)p=null;else{let y=p.parent.children.indexOf(p);p.parent.children.splice(y,1),t.children.splice(c,0,p),p.parent===t?(y<=c&&console.error("not possible"),void 0):(p.parent=t,p.matrixWorldNeedsUpdate=!0,p.resetBBoxNeedsUpdate(),p.updateVisible(),n.pendingDeletes.delete(p),void 0)}}}if(p===null){let m=u?Gr.apply(d.data,u):d.data;Yt.is(m.type)&&(m={...m,type:"Empty"}),p=Qt.createEntity(a,m,n),p.overrideData=u,t.add(p),t.children.splice(t.children.length-1,1),t.children.splice(c,0,p),p.updateState(p.data,n),f&&p.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(p)}c+=1,Pg(n,r,e,p,d,i,s+1,l)}if(!l){let d=c;for(;;){let a=t.children[c];if(Ce.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(d,c-d)}return!0}function yA(n,r,e){let t;return r.geometry.type==="TextGeometry"?new Oi(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new ko(n,r,e):r.geometry.type==="PathGeometry"?t=new Di(n,r,e):r.geometry.type==="VectorGeometry"?t=new Ul(n,r,e):r.geometry.type==="BooleanGeometry"?t=new qt(n,r,e):t=new dt(n,r,e),t)}function Wl(n,r,e){return r.type==="Mesh"?yA(n,r,e):r.type==="Empty"?new Rs(n,r):r.type==="PointLight"?new jl(n,r,e):r.type==="SpotLight"?new kl(n,r,e):r.type==="DirectionalLight"?new zl(n,r,e):r.type==="Component"||r.type==="Instance"?new Zr(n,r,e):Yt.is(r.type)?new Br(n,r):(console.error(r),new Rs(n,r))}Qt.createEntity=Wl;function gA(n,r,e){let t=Wl(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,d=n.overrideData,a=n.uuid,u=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=l,n.instances=c,n.uuid=a,n.overrideData=d,n.updateState(n.data,e),u&&n.changeSelectedState(u,e),n.resetBBoxNeedsUpdate()}Qt.changeEntityProptotype=gA;Qt.Cloner=Ci;function Og(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as vA,Ray as bA,Raycaster as SA}from"three";function Ag(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,Ti(n),_i(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function Cg(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),e}function Ng(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ur)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Ag(e,e.material[t])&&(r=!0);else Ag(e,e.material)&&(r=!0)}),r}function Ig(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ur)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Cg(e,e.material[t])&&(r=!0);else Cg(e,e.material)&&(r=!0)}),r}var wA=new SA,_A=new vA,TA=new bA;function dd(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=_A.copy(i.matrixWorld).invert(),l=TA.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let d=wA;d.set(l.origin,l.direction),d.near=r.near,d.far=r.far;let a=d.intersectObject(n,!1);a.length>0&&e.push({...a[0],object:t?i:n})}}var ql=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let l=i.length-2;l>=0;l--)if(!e.has(i[l])){let c=r.find(i[l]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[l]}`),e.add(i[l])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var MA=new IA;MA.wireframe=!0;var Mg=new AA,pd=class extends OA{constructor(e,t){super();this.data=e;this.backupFog=new CA(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.geometryCacheChanged=!1;this.bgColor=new Xe(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new ql;this.needsRecomputeInstances=!1;this.ambientLight=new PA(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,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Ig(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Ng(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let l=i.children.indexOf(s);o.splice(0,0,l)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>rp(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),Ei(i)&&Gs(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i)}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),o.parent.remove(o),Gs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ei(o)&&(o.freeBooleanPointer(),i instanceof qt&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Di&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate();let l=e.localIndex;s.children.splice(l,0,s.children.pop()),Ei(o)&&(o.invalidateUpstreamBooleanData(),Gs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof qt&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props){let{states:l,rest:c}=t.props;t={...t,props:c},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{Og(s,t,o,{scene:this,shared:i}),s instanceof dt&&s.updateGeometryGroupsIfNeeded()}catch(l){console.error(l)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(ut(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Br&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Gs(o)&&o.recomputeBoolean(),o instanceof Br&&o.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ce.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ce.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,l,c){e&&e!==i.uuid&&i.find(e)&&s.forInstancesRec(a=>{a.isInstanceRoot||(a.data=en(a.data,u=>{let p=u.events.data(c.id),f=a.goUp(l);if(f){let m=[...xa(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;mt.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Zr&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{i.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=en(s.data,l=>{l.events.delete(i.id)}).data)}):i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),i.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,o,i)}),i.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,o,i)})):"actions"in i.data&&i.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,o,i)})})}),!0})}expandInstances(e,t){let o=new Set;this.traverseEntity(i=>{if(i instanceof Zr&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),Hl(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof Zr&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Ce.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Br(pd.PERSONAL_CAMERA_ID,{...In.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ce.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Ei(s)||ud(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),dd(s,e,t)),o(s))}};return o(this),t}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ce.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Ei(s)||ud(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),dd(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Ce.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ce.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)ts.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ce.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=ut(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=ut(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=ut(e.groundColor,t)),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,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,s,l){let c={scene:this,shared:l},d=Wl(e,t,c);return d&&(this.entityByUuid[e]=d,i.add(d),i.children.splice(s,0,i.children.pop()),o.length>0&&(d.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,d,l)),d.updateState(t,c),d instanceof dt&&d.updateGeometryGroupsIfNeeded(),d.updateVisible(),d.cloner&&this.toExpandCloner.add(d),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),d}getCenter(e){let t=[];for(let i=0,s=e.length;i<s;++i){let{id:l,recursive:c}=e[i],d=this.find(l),a=c?d.recursiveBBox:d.singleBBox;t.push(...a.vertices)}let o=new NA;return o.setFromPoints(t),o.getCenter(Mg),Mg}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof lt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Ct&&e(t.material[o]);else t.material instanceof Ct&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),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})})}},Gi=pd;Gi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",Gi.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";import{DRACOLoader as EA}from"three/examples/jsm/loaders/DRACOLoader.js";var bo;function LA(){return bo||(bo=new EA,bo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),bo.decoderPending}async function BA(n){if(bo){let r={attributeIDs:bo.defaultAttributeIDs,attributeTypes:bo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await bo.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function Eg(n,r){let[e,t]=tc(ca.deserialize(new Uint8Array(n)));jm(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 LA();for(let i of o){let s=await BA(Ke(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:d,itemSize:a})=>{l[c]={array:d,itemSize:a,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=l,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}import{Mesh as _7}from"three";import{mergeBufferGeometries as O7}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Lg(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}import{Color as Bg,ShaderLib as DA}from"three";function Dg(n){let r=new Set;return n.traverse(e=>{if(e instanceof ur)if(Ve(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(GA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Bg,specularColor:new Bg});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},DA.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 RA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function GA(n){return n.getLayersOfType("transmission").length>0}function RA(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function Gg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Rg(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let s=t;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))}}r.push(t.name)}),n}import{mergeBufferGeometries as VA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Vg(n){let r=[];return n.traverse(e=>{e instanceof Ci&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Lg(c),c}),s=VA(e.parameters.hideBase?i:[t instanceof lt?t.geometry:[],...i]);t instanceof lt&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:jy})}),n}function zg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Fg(n){Object.values(n.shared.materials).forEach(r=>{fd(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?fd(e.material):"materials"in e&&e.materials.forEach(t=>{fd(t)})})}function fd(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Hg=Ws(kg(),1),Ug="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",md=class extends FA{load(r,e,t,o=console.error){let i=new zA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Ug+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Ug),i.load(r,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)}},t,o)}async parse(r){let e=await Eg(r,Fg);e.version&&(0,Hg.default)(e.version,"0.9.348")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Hy(e)&&ly(),tg(e)&&zy()].filter(Boolean));let t=new jo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Gi(e.scene,t);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&&yg(s)&&Object.assign(s,{makeDefault:!0})}return o=Vg(o),o=Dg(o),o=Gg(o),o=Rg(o),o=zg(o),o}};export{md as default};
1882
+ `),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),a?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${a.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
1883
+ `)}return t}};import{VideoTexture as FP,Texture as jP}from"three";var Pl=class{constructor(r=1e3*10){this.timeout=r;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(...r){}remove(r){let e=this.cache.get(r);e&&(this.dispose(r,e.data),this.cache.delete(r),e.prev.next=e.next,e.next.prev=e.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let r=Date.now(),e=this.head.next;for(;e.time<r-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))}has(r){return this.cache.get(r)?.data}load(r){let e=Date.now(),t=this.cache.get(r);return t===void 0?(t={data:this.create(r),src:r,time:e,next:null,prev:null},this.cache.set(r,t)):(t.time=e,t.prev.next=t.next,t.next.prev=t.prev),t.prev=this.tail.prev,t.next=this.tail,this.tail.prev.next=t,this.tail.prev=t,this.scheduleCleanup(),t.data}};var jd=class extends Pl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Fd;function Ny(n){return typeof n=="string"?n:(Fd||(Fd=new jd),Fd.load(n))}var Ol=class{constructor(r,e){this.data=r;this.cache=e;this.refCount=0}deref(){if(this.refCount===0&&!1)throw new Error("ref count -1?");this.refCount-=1,this.refCount===0&&(this.cache.remove(this),this.dispose())}dispose(){if(this.refCount!==0&&!1)throw new Error("ref count is not 0")}},Al=class{constructor(){this.cache=new Map}remove(r){if(this.cache.delete(r.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(r){let e=this.cache.get(r);return e===void 0&&(e=this.create(r),this.cache.set(r,e)),e.refCount+=1,e}};var bi=class extends Ol{constructor(e,t){super(e,t.imageHolderCache);this.data=e;this.shared=t;this.loaded=!1;this.isVideo=!1;this.isVideo=e.type==="video",this.updateSrc(e.data)}async updateSrc(e){if(typeof document>"u")return;this.disposeTextures(),this.loaded=!1;let t=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let s of i){let l=this[s];l&&(l.image=this.img,l.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof e!="string"){var o=new FileReader;o.readAsDataURL(new Blob([e],{type:"video/mp4"}));let i;await new Promise(s=>{o.onloadend=l=>{i=l.target?.result,s(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Ny(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new FP(this.img,void 0,e,e):o=new jP(this.img,void 0,e,e),this.loaded&&(o.needsUpdate=!0),this[e]=o,o}}disposeTextures(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}};1e3,1001,1002;var kt=class extends bi{};import{Vector2 as Xr,Vector3 as Ar,Vector4 as Cl}from"three";function dt(n,r){return r.color(n)}function Iy(n,r){switch(n.type){case"fresnel":return HP(n,r);case"gradient":return WP(n);case"depth":return qP(n);case"normal":return $P(n);case"noise":return XP(n,r);case"rainbow":return YP(n);case"toon":return KP(n,r);case"outline":return ZP(n,r);case"transmission":return QP(n,r);case"color":return UP(n,r);case"pattern":return JP(n,r)}}function kP(n){return{type:n.type}}function lr(n){let{alpha:r,mode:e,isMask:t}=n;return{...kP(n),alpha:r,mode:e,isMask:t}}function UP(n,r){return{...lr(n),color:dt(n.color,r)}}function HP(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s,isMask:l}=n;return{...lr(n),color:dt(s,r),bias:e,scale:t,intensity:o,factor:i}}function WP(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...lr(n),gradientType:r,smooth:e,colors:t.map(c=>new Cl(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new Xr(...s),morph:new Xr(...l),angle:i}}function qP(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...lr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Ar(...s),direction:l?new Ar(...l):new Ar(1,0,0),colors:c.map(d=>d!==void 0?new Cl(d[0],d[1],d[2],d[3]):new Cl(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function $P(n){let{cnormal:r}=n;return{...lr(n),cnormal:new Ar(r[0],r[1],r[2])}}function XP(n,r){return{...lr(n),scale:n.scale,move:n.move,fA:new Xr(...n.fA),fB:new Xr(...n.fB),size:new Ar(...n.size),distortion:new Xr(...n.distortion),colorA:dt(n.colorA,r),colorB:dt(n.colorB,r),colorC:dt(n.colorC,r),colorD:dt(n.colorD,r),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function YP(n){return{...lr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Ar(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Ar(...n.offset)}}function KP(n,r){return{...lr(n),positioning:n.positioning,colors:n.colors.map(e=>new Cl(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Ar(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:dt(n.shadowColor,r),offset:new Ar(...n.offset)}}function ZP(n,r){return{...lr(n),outlineColor:dt(n.outlineColor,r),contourColor:dt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Ar(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function QP(n,r){return{...lr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function JP(n,r){return{...lr(n),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new Xr(...n.offset),colorA:dt(n.colorA,r),colorB:dt(n.colorB,r),frequency:new Xr(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new Xr(...n.vertical),horizontal:new Xr(...n.horizontal),sides:n.sides}}var yo=class extends Xe{};import{Vector4 as eO}from"three";var kd={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Ud={depth:["colors"]};function tO(n,r,e){if(r==="isMask")return!0;let t=kd[n.type],o=Ud[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let s=i[r]?.value?.length;if(s!==void 0&&s!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function Hd(n,r,e){let t=e.uniforms[`f${e.id}_texture`];if(!t)return!1;let o=!1,i=n;if("image"in i){let s=i.image,l=r.image(s),c=t;c.image instanceof kt||c.image.deref(),c.image=l}if("video"in i){let s=i.video,l=r.video(s),c=t;c.image instanceof kt||c.image.deref(),c.image=l}if("wrapping"in i){let s=t;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 My(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Wd(i,e,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let l=e.uniforms[`f${e.id}_${i}`];if(!!l&&!(l instanceof ho))switch(o=o||tO(e,i,s),l.constructor){case Pe:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof yo?l.value=new Xe(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case Pt:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof yo?l.value=new Xe(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case ze:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case ct:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Ot:{Hd(s,r,e);break}case ar:{l.value=s.map(c=>new eO(...c));break}default:{l.value=s;break}}}return o}var Nr=class{constructor(r,e,t,o){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let i in o)this.uniforms[`f${this.id}_${i}`]=o[i];for(let i in t)Wd(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Ht.createLigherLayer(r,e,t,o);if(t.type==="texture"||t.type==="video"){let i=t.type==="texture"?o.image(t.texture.image):o.video(t.texture.video),s=new Go(i,t.texture.wrapping),l=new _l(i),c=new Tl(t.texture.repeat,t.texture.offset),u=new Z(t.crop?1:0),a=new xe(t.projection??0),d=new xe(["x","y","z"].indexOf(t.axis)??0),p=new xe(t.side??0),f=new ze(t.size?new cr(t.size[0],t.size[1]):new cr(100,100)),m=new Z(t.blending??0),h=new Z(t.alpha??1),y=new xe(t.mode??0),g=new sr(t.isMask??!1),v=new li(s,l,u,a,d,p,f,m,c,h,y,g),b=new we(v.calpha,"f");return new Be(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},v,y,b,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Go(i,t.texture.wrapping),l=new Z(t.alpha??1),c=new xe(t.mode??0),u=new sr(t.isMask??!1),a=new pi(s,l,c,u),d=new we(a.calpha,"f");return new Be(r,e,t,{texture:s,alpha:l,mode:c,isMask:u},a,c,d,u)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new ct(new Cr(...t.offset)),s=new Z(t.scale??10),l=new Z(t.intensity??8),c=new Z(t.movement??1),u=new xe(t.noiseType??0),a=new xe(t.voronoiStyle??0),d=new Z(t.smoothness??.5),p=new Z(t.seed??0),f=new Z(t.highCut??1),m=new Z(t.lowCut??0),h=new xe(t.quality??1),y=new vi(l,c,i,a,d,p,f,m,h,s,u);return new Ns(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u,voronoiStyle:a,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y)}else throw new Error;else return nO(r,e,t,o)}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(t.scene?.markNeedsUpdateRendererDirty(),!0):My(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Hd(o.props,t.shared,this):!0;return!1}dispose(){if(rO(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof kt||e.image.deref()}}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getNode(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},Be=class extends Nr{constructor(e,t,o,i,s,l,c,u){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c;this.isMask=u}},Ns=class extends Nr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Ht=class extends Nr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new Z(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Do,u={};else if(o.category==="lambert"){s=new Ps;let a=new Pe(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new Cs;let a=new Z(o.shininess??30),d=new Pe(i.color(o.specular)??1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}else if(o.category==="physical"){s=new As;let a=new Z(o.roughness??.3),d=new Z(o.metalness??0),p=new Z(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new Os;let a=new Z(o.shininess??30),d=new Pe(o.specular!==void 0?i.color(o.specular)??1118481:1118481);u={shininess:a,specular:d},s.shininess=a,s.specular=d}return s.alpha=new Z(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Ht(e,t,o,s,u)}get category(){return this.node.category}};function rO(n){let r=n instanceof Nr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function Ut(n){return{alpha:new Z(n.alpha??1),mode:new xe(n.mode??0),isMask:new sr(n.isMask??!1)}}function oO(n,r,e,t){switch(n.type){case"color":{let o=new Pe(t.color??5526619),i=Ut(t),s=new Ro(o,i.alpha),l=new we(s.calpha,"f");return new Be(r,e,n,{color:o,...i},s,i.mode,l,i.isMask)}case"fresnel":{let o=new Pe(t.color??16777215),i=new Z(t.bias??.1),s=new Z(t.scale??1),l=new Z(t.intensity??2),c=new Z(t.factor??1),u=Ut(t),a=new _s(o,i,s,l,c,u.alpha,u.mode,u.isMask),d=new we(a.calpha,"f");return new Be(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,...u},a,u.mode,d,u.isMask)}case"rainbow":{let o=new Z(t.filmThickness??30),i=new Z(t.movement??0),s=new ct(t.wavelengths??new Cr(0,0,0)),l=new Z(t.noiseStrength??0),c=new Z(t.noiseScale??1),u=new ct(t.offset??new Cr(0,0,0)),a=Ut(t),d=new yi(o,i,s,l,c,u,a.alpha,a.isMask),p=new we(d.calpha,"f");return new Be(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,...a},d,a.mode,p,a.isMask)}case"transmission":{let o=new Z(t.thickness??10),i=new Z(t.ior??1.5),s=new Z(t.roughness??.5),l=Ye.transmissionSize,c=Ye.transmissionRenderTarget,u=Ye.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new ze(d/a,1):new ze(1,a/d),f=Ut(t),m=new xi(o,i,s,l,c,u,p,f.alpha),h=new we(m.calpha,"f");return new Be(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,...f},m,f.mode,h,f.isMask)}case"toon":{let o=new xe(t.positioning??0),i;t.colors?i=new ar(t.colors.length,t.colors):(i=new ar(10,new Si(0,0,0,1)),i.value[1]=new Si(1,1,1,1));let s;t.steps?s=new ir(t.steps.length,t.steps):(s=new ir(10,1),s.value[0]=0);let l=new ct(t.source??new Cr(0,0,0)),c=new sr(t.isWorldSpace??!0),u=new Z(t.noiseStrength??0),a=new Z(t.noiseScale??1),d=new Pt(t.shadowColor),p=new ct(t.offset??new Cr(0,0,0)),f=Ut(t),m=new gi(o,i,s,l,c,u,a,d,p,f.alpha),h=new we(m.calpha,"f");return new Be(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,...f},m,f.mode,h,f.isMask)}case"outline":{let o=new Pe(t.outlineColor??16777215),i=new Pe(t.contourColor??16777215),s=new Z(t.outlineWidth??.1),l=new Z(t.contourWidth??.1),c=new Z(t.outlineThreshold??.1),u=new Z(t.contourThreshold??.1),a=new Z(t.outlineSmoothing??.1),d=new Z(t.contourFrequency??.1),p=new ct(t.contourDirection??new Cr(0,1,0)),f=new sr(t.positionalLines??!1),m=new sr(t.compensation??!0),h=Ye.normalRenderTarget,y=Ye.normalRenderTargetDepth,g=Ye.pixelRatioNode,v=Ye.resolution,b=Ut(t),w=new mi(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,b.alpha),S=new we(w.calpha,"f");return new Be(r,e,n,{outlineColor:o,contourColor:i,outlineWidth:s,contourWidth:l,outlineThreshold:c,contourThreshold:u,outlineSmoothing:a,contourFrequency:d,contourDirection:p,positionalLines:f,compensation:m,...b},w,b.mode,S,b.isMask)}case"depth":{let o=new xe(t.gradientType??0),i=new sr(t.smooth??!1),s=new Z(t.near??50),l=new Z(t.far??200),c=new Z(t.isVector??1),u=new Z(t.isWorldSpace??0),a=new ct(t.origin??new Cr),d=new ct(t.direction??new Cr),p;t.colors?p=new ar(t.colors.length,t.colors):(p=new ar(2,new Si(0,0,0,1)),p.value[1]=new Si(1,1,1,1));let f;t.steps?f=new ir(t.steps.length,t.steps):(f=new ir(2,1),f.value[0]=0);let m=Ut(t),h=new di(o,i,s,l,c,u,a,d,p,f,m.alpha,m.isMask),y=new we(h.calpha,"f");return new Be(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,...m},h,m.mode,y,m.isMask)}case"noise":{let o=new Z(t.scale??1),i=new ct(t.size??new Cr(100,100,100)),s=new Z(t.move??1),l=new ze(t.fA??new cr(1.7,9.2)),c=new ze(t.fB??new cr(8.3,2.8)),u=new ze(t.distortion??new cr(1,1)),a=new Pt(t.colorA),d=new Pt(t.colorB),p=new Pt(t.colorC),f=new Pt(t.colorD),m=new xe(t.noiseType??0),h=new xe(t.voronoiStyle??0),y=new Z(t.highCut??1),g=new Z(t.lowCut??0),v=new Z(t.smoothness??.5),b=new Z(t.seed??.5),w=new xe(t.quality??1),S=Ut(t),T=new fi(o,i,s,l,c,u,a,d,p,f,S.alpha,m,S.isMask,h,y,g,v,b,w),_=new we(T.calpha,"f");return new Be(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,noiseType:m,...S,voronoiStyle:h,highCut:y,lowCut:g,smoothness:v,seed:b,quality:w},T,S.mode,_,S.isMask)}case"normal":{let o=new ct(t.cnormal??new Cr(1,1,1)),i=Ut(t),s=new si(o,i.alpha),l=new we(s.calpha,"f");return new Be(r,e,n,{cnormal:o,...i},s,i.mode,l,i.isMask)}case"gradient":{let o=new xe(t.gradientType??0),i=new sr(t.smooth??!1),s;t.colors?s=new ar(t.colors.length,t.colors):(s=new ar(10,new Si(0,0,0,1)),s.value[1]=new Si(1,1,1,1));let l;t.steps?l=new ir(t.steps.length,t.steps):(l=new ir(10,1),l.value[0]=0);let c=new ze(t.offset??new cr(0,0)),u=new ze(t.morph??new cr(0,0)),a=new Z(t.angle??0),d=Ut(t),p=new ui(o,i,s,l,c,u,a,d.alpha,d.isMask),f=new we(p.calpha,"f");return new Be(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,...d},p,d.mode,f,d.isMask)}case"pattern":{let o=new xe(t.style??0),i=new xe(t.projection??0),s=new xe(["x","y","z"].indexOf(t.axis)??0),l=new Z(t.blending??0),c=new ze(t.offset??new cr(0,0)),u=new Pt(t.colorA),a=new Pt(t.colorB),d=new ze(t.frequency??new cr(10,10)),p=new Z(t.size??.5),f=new Z(t.variation??0),m=new Z(t.smoothness??.5),h=new Z(t.zigzag??0),y=new Z(t.rotation??0),g=new ze(t.vertical??new cr(0,1)),v=new ze(t.horizontal??new cr(0,1)),b=new xe(t.sides??6),w=Ut(t),S=new hi(o,i,s,l,c,u,a,d,p,f,m,h,y,g,v,b,w.alpha,w.isMask),T=new we(S.calpha,"f");return new Be(r,e,n,{style:o,projection:i,axis:s,blending:l,offset:c,colorA:u,colorB:a,frequency:d,size:p,variation:f,smoothness:m,zigzag:h,rotation:y,vertical:g,horizontal:v,sides:b,...w},S,w.mode,T,w.isMask)}default:{let o=new Pe(1,0,0,1),i=Ut(t),s=new Ro(o,i.alpha),l=new we(s.calpha,"f");return new Be(r,e,n,{color:o,...i},s,i.mode,l,i.isMask)}}}function nO(n,r,e,t){let o=Iy(e,t);return oO(e,n,r,o)}function Wd(n,r,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&n==="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}function Ey(n,r){let e=0;for(let t of n.layers){if(t.data.type!=="displace"&&t.data.isMask)return!0;if(t.data.type!=="displace"&&"alpha"in t.data&&t.data.type!=="light"&&t.data.type!=="fresnel"&&t.data.type!=="texture"&&t.data.type!=="matcap"&&t.data.type!=="rainbow"&&t.data.type!=="outline"&&t.data.type!=="pattern"){let o=t.data.visible?t.data.alpha:0;if(o===1&&t.data.type==="depth"||t.data.type==="gradient"){for(let i of t.data.colors)if(i[3]<1){o=i[3];break}}else if(o===1&&t.data.type==="noise"){let i=r.color(t.data.colorA).a,s=r.color(t.data.colorB).a,l=r.color(t.data.colorC).a,c=r.color(t.data.colorD).a,u=Math.min(i,Math.min(s,Math.min(l,c)));u<1&&(o=u)}e+=(1-e)*o}}return e<1}var Ct=class extends iO{constructor(){super(void 0);this.flatShading=!1;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},qd=class extends Ct{constructor(e,t,o,i){super();this.flatShading=e;this.side=t;this.wireframe=o;this.root=i}updateAfterBuild(){let e=this.root;this.lights=e.lights,this.vertexShader=e.vertexShader,this.fragmentShader=e.fragmentShader,this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.transparent=e.transparent,this.cacheKey=e.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(e,t){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}getFlavor(e,t,o){return this.root.getFlavor(e,t,o)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(e){return this.root.getLayersOfType(e)}getLayerByUuid(e){return this.root.getLayerByUuid(e)}updateByOp(e,t,o){this.root.updateByOp(e,t,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},wi=class extends Ct{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,t)}get nodeMaterial(){return this}getFlavor(e,t,o){let i=o?6:(e?3:0)+t;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let s=this.flavors[i];return s===void 0&&(s=new qd(e,t,o,this),this.flavors[i]=s,s.flatShading=e,s.side=t,s.updateAfterBuild()),s}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??_t.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Nr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=Ey(e,t.shared)}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(e=>e instanceof Ht),this.lightLayer===void 0&&(this.lightLayer=new Ht(0,"",{...yt.defaultData("light","phong"),visible:!1},new Do,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=Ey(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,s=e.path[1];if(s===void 0){if(this.layers.reverse(),e.type===4){let l=Nr.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,l),o.scene?.markNeedsUpdateRendererDirty()}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose(),o.scene?.markNeedsUpdateRendererDirty();else if(e.type===6){let l=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[l];this.layers.splice(l,1),this.layers.splice(e.localIndex,0,c),o.scene?.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate()}else{let l=this.layers.find(c=>c.uuid===s);if(l){let c=t.layers.data(s);if(l.updateByOp({...e,path:e.path.slice(2)},c,o)){let a=Nr.create(this.layerIdGen++,s,c,i);this.layers.splice(this.layers.findIndex(d=>d.uuid===s),1,a),this.onUpdate()}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof Be?t.color.mask=void 0:t instanceof Ht&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof Be&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Ht?i.node.mask=new rt(t.color,t.alpha,rt.MUL):i instanceof Be&&(i.isMask.value||(i.color.mask=new rt(t.color,t.alpha,rt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Be),t=this.layers.findIndex(o=>o instanceof Ht);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];if(s instanceof Be){if(s.isMask.value)continue;o=new ii(o,s.color,s.alpha,s.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new we("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Ht);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Be){if(i.isMask.value)continue;e=new ii(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof Ns);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new rt(t,e[o].position,rt.ADD),t=new rt(t,new Z(.5).setReadonly(!0),rt.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){this.build(),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,t){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,t);i.uniforms[`f${i.id}_intensity`].value=s}}computeCacheKey(){let e="[";for(let{data:t}of this.data.layers)if(t.type==="light")e+=`"${t.visible?t.category.toUpperCase():"Basic"}"`;else{let o=(kd[t.type]??[]).map(l=>t[l]),i=(Ud[t.type]??[]).map(l=>t[l]?.length??0),s=[...o,...i];s.length?e+=`["${t.type}", "${s.join('","')}"],`:e+=`"${t.type}",`}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(){let e=new wl;this.lights=this.lightLayer.data.visible,e.build(this.fragment,this.fragment),this.vertexShader=e.getCode("vertex"),this.fragmentShader=e.getCode("fragment"),this.defines=e.defines,this.uniforms=e.uniforms,this.extensions=e.extensions,this.updaters=e.updaters;for(let t of this.flavors)t&&t.updateAfterBuild();return this}nodeMaterialDispose(){this.layers.forEach(e=>e.dispose()),super.dispose();for(let e of this.flavors)e&&e.dispose()}assetsLoaded(){for(let e of this.layers)if(e instanceof Be){let t=e.params.texture;if(t instanceof Go&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Ct.prototype,{properties:{get:function(){return this.fragment.properties}}});var Vo=class extends wi{};var Gy=Ws(Ly());var By=new Map;function Dy(n){if(typeof n=="string")return n;let r=By.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},By.set(n,r)),r.url}var zo=class{constructor({src:r,volume:e,delay:t,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 r=="string"?i={src:r}:i={src:Dy(r),format:"wav"},this.sound=new Gy.Howl(i),this.sound.on("end",this.onEnd),this.src=r,e!==void 0&&(this.volume=e),t!==void 0&&(this.delay=t),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(r){this._volume=r,this.sound.volume(r)}get loop(){return this._loop}set loop(r){this._loop=r,this.loopsRemaining=r}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(r,e=1e3){r?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},r)):this.sound.fade(this._volume,0,e)}on(r,e,t){this.sound.on(r,e,t)}off(r,e,t){this.sound.off(r,e,t)}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(r=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};import{Box2 as sO,Vector2 as Fo,Path as Ry,Shape as aO,ShapeUtils as lO,Color as cO}from"three";var Il=class{constructor(){this.type="ShapePath";this.color=new cO;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Ry,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath?.lineTo(r,e),this}quadraticCurveTo(r,e,t,o){return this.currentPath?.quadraticCurveTo(r,e,t,o),this}bezierCurveTo(r,e,t,o,i,s){return this.currentPath?.bezierCurveTo(r,e,t,o,i,s),this}splineThru(r){return this.currentPath?.splineThru(r),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},t={loc:e.ORIGIN,t:0};function o(h,y,g,v){let b=h.x,w=y.x,S=g.x,T=v.x,_=h.y,x=y.y,N=g.y,P=v.y,C=(T-S)*(_-N)-(P-N)*(b-S),O=(w-b)*(_-N)-(x-_)*(b-S),A=(P-N)*(w-b)-(T-S)*(x-_),R=C/A,k=O/A;if(A===0&&C!==0||R<=0||R>=1||k<0||k>1)return null;if(C===0&&A===0){for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let te=$===0?g:v;return{x:te.x,y:te.y,t:t.t}}else if(t.loc===e.BETWEEN){let te=+(b+t.t*(w-b)).toPrecision(10),X=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:X,t:t.t}}return null}else{for(let X=0;X<2;X++)if(i(X===0?g:v,h,y),t.loc===e.ORIGIN){let q=X===0?g:v;return{x:q.x,y:q.y,t:t.t}}let $=+(b+R*(w-b)).toPrecision(10),te=+(_+R*(x-_)).toPrecision(10);return{x:$,y:te,t:R}}}function i(h,y,g){let v=g.x-y.x,b=g.y-y.y,w=h.x-y.x,S=h.y-y.y,T=v*S-w*b;if(h.x===y.x&&h.y===y.y){t.loc=e.ORIGIN,t.t=0;return}if(h.x===g.x&&h.y===g.y){t.loc=e.DESTINATION,t.t=1;return}if(T<-Number.EPSILON){t.loc=e.LEFT;return}if(T>Number.EPSILON){t.loc=e.RIGHT;return}if(v*w<0||b*S<0){t.loc=e.BEHIND;return}if(Math.sqrt(v*v+b*b)<Math.sqrt(w*w+S*S)){t.loc=e.BEYOND;return}let _;v!==0?_=w/v:_=S/b,t.loc=e.BETWEEN,t.t=_}function s(h,y){let g=[],v=[];for(let b=1;b<h.length;b++){let w=h[b-1],S=h[b];for(let T=1;T<y.length;T++){let _=y[T-1],x=y[T],N=o(w,S,_,x);N!==null&&g.find(P=>P.t<=N.t+Number.EPSILON&&P.t>=N.t-Number.EPSILON)===void 0&&(g.push(N),v.push(new Fo(N.x,N.y)))}}return v}function l(h,y,g){let v=new Fo;y.getCenter(v);let b=[];return g.forEach(w=>{w.boundingBox.containsPoint(v)&&s(h,w.points).forEach(T=>{b.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),b.sort((w,S)=>w.point.x-S.point.x),b}function c(h,y,g,v,b){(b==null||b==="")&&(b="nonzero");let w=new Fo;h.boundingBox.getCenter(w);let S=[new Fo(g,w.y),new Fo(v,w.y)],T=l(S,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],x=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):x.push(O)});let N=_[0].point.x,P=[],C=0;for(;C<x.length&&x[C].point.x<N;)P.length>0&&P[P.length-1]===x[C].identifier?P.pop():P.push(x[C].identifier),C++;if(P.push(h.identifier),b==="evenodd"){let O=P.length%2===0,A=P[P.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(b==="nonzero"){let O=!0,A=null,R=null;for(let k=0;k<P.length;k++){let $=P[k];y[$]&&(O?(R=y[$].isCW,O=!1,A=$):R!==y[$].isCW&&(R=y[$].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+b+'" is currently not implemented.')}let u=0,a=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,v=999999999,b=-999999999,w=999999999;for(let S=0;S<y.length;S++){let T=y[S];T.y>g&&(g=T.y),T.y<v&&(v=T.y),T.x>b&&(b=T.x),T.x<w&&(w=T.x)}d<=b&&(d=b+1),a>=w&&(a=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:lO.isClockWise(y),identifier:u++,boundingBox:new sO(new Fo(w,v),new Fo(b,g))})});let f=p.map(h=>c(h,p,a,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new aO;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new Ry;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var zy,$d=new Promise(n=>{zy=n}),Vy=!1;async function Fy(){if(Vy)return;let n=await import("./opentype.js");zy(n),Vy=!0}var Is=class{async load(r,e,t=()=>{}){let{load:o}=await $d;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await $d;try{let o=e(r),i=new t,s=l=>o.charToGlyphIndex(l.char);return i.registerModifier("glyphIndex",null,s),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function dO(n){return await(await fetch(n)).arrayBuffer()}var uO=new Is;async function Xd(n){let r,e,t=!1;if(n.url?(r=await dO(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await uO.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as pO,LineCurve as fO,QuadraticBezierCurve as mO}from"three";function hO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Ml=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Xd(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}update(r){this._isLoaded=!1,this._isUserFont=r.isUserFont??!1,this._loadingPromise=Xd(r).then(e=>{e&&(this._arrayBuffer=e.arr,this._url=e.url,this.font=e.font,this._intercepted=e.intercepted,this._isLoaded=!0,this._bidi=e.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(r,e,t){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,s=[],l=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let a=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[l];if(hO(a,p)||c)s.push({char:d,index:a,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),l++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)l++,m=e.charAt(l),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===a&&(g=!0),l>e.length&&(g=!0);s.push({char:d,index:a,replacements:h,replacementChars:Array.from(f)}),l++}}return s}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,s=r.map(v=>this.getTextWidth(v,e)),l=e.width,c=this.getCharWidth(`
1884
+ `,e),u=e.horizontalAlign===1?c:0,a=this.computeSpaceWidthForLine(r,0,e),d=this.getLineInitialOffsetX(s[0],l,e.horizontalAlign,r[0],c),p=this.getLineInitialOffsetY(i,r.length,e.height,o,e.verticalAlign),f=[],m=r.map(v=>[]),h=r.map(v=>[]),y;for(let v=0;v<r.length;v++){let b=r[v],w={features:{liga:!0}},S=[];try{S=t.stringToGlyphs(b,w)}catch(_){console.warn(_)}d=this.getLineInitialOffsetX(s[v],l,e.horizontalAlign,b,c);let T=[];try{T=this.reverseLigaturesTable(t,b,S)}catch(_){console.warn(_)}a=this.computeSpaceWidthForLine(r,v,e);for(let _=0;_<S.length;_++){let x=S[_],N=x.index===0?`
1885
+ `:x.unicode?String.fromCharCode(x.unicode):void 0,P=T[_],C=0,O=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(O=-x.leftSideBearing*o),y&&(C=t.getKerningValue(x,y)*o),d+=O+C;let A=0;if(N===`
1886
+ `)A=u;else if(N===" ")A=a;else{let R=this.createPath(x,o,d,p,e);R&&(A=R.offsetX-(C+O),f.push(R.path))}if(P.replacements.length===1)h[v].push([d,p]),m[v].push(A);else{let R=P.replacements.map(X=>(t.glyphs.get(X).advanceWidth??0)*o),k=R.reduce((X,q)=>X+=q,0),$=R.map(X=>X/k),te=d;for(let X=0;X<$.length;X++){let q=A*$[X];h[v].push([te,p]),m[v].push(q),te+=q}}d+=A,y=x}p-=i}let g=[];for(let v=0,b=f.length;v<b;v++)g.push(...f[v].toShapes());return{shapes:g,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(r,e,t,o,i){return(t===3||t===2)&&o.indexOf(`
1887
+ `)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let s=e*r,l=Math.abs(this.ascender-this.descender)*o,c=r-l,u=-this.ascender*o-c/2;return i===3?-(t-s-u):i===2?-(t*.5-s*.5-u):u}createPath(r,e,t,o,i){let s=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!s){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let l=new Il,c=(r.advanceWidth??1)*e;if(r)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=yO(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(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(r,e){return this.font?.getAdvanceWidth(r,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(r,e,t){let o=this.getCharWidth(" ",t),i=r[e];if(i){let s=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&s){let l=t.width,c=this.getTextWidth(i,t);return(l-(c-s*o))/s}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function yO(n){if(n.length){let r=n[0];if(r instanceof fO)return r.v1;if(r instanceof pO||r instanceof mO)return r.v0}}var Yd=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(r){return this.objects.get(r)}get size(){return this.objects.size}get(r,e){let t=this.objects.get(r);return t===void 0?(t=this.createObject(r,e),this.objects.set(r,t)):t.isShared=!0,t}mutateIfUnique(r,e){let t=this.objects.get(r);if(t&&t.isShared!==!0)return this.objects.delete(r),this.objects.set(e,t),t}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(r,e){let t=this.objects.get(r);e===t?this.unreachable.delete(r):!1&&console.warn("Reachable but deleted",r)}endGc(){this.unreachable.forEach(r=>{this.disposeObject(this.objects.get(r)),this.objects.delete(r)}),this.unreachable.clear()}dispose(){this.objects.forEach(r=>{this.disposeObject(r)}),this.objects.clear()}},Ms=class extends Yd{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Eo(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var jy={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var Kd=class extends Al{constructor(e){super();this.shared=e}create(e){return new bi(e,this.shared)}},jo=class{constructor(r,e={}){this.geometryCache=new Ms(!0);this.geometryCache2=new Ms(!1);this.imageHolderCache=new Kd(this);this.thisContext={scene:jy,shared:this};this.deletedMaterial=new Vo(_t.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new kt(Ln.emptyImage,this);this.deletedVideo=new kt(On.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.penumbraSize=[];this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[t,o]of Object.entries(e.images))this.addImage(t,o);if(e.videos)for(let[t,o]of Object.entries(e.videos))this.addVideo(t,o);if(e.audios)for(let[t,o]of Object.entries(e.audios))this.addAudio(t,o.data);this.reset(r)}setRequestRender(r){this._requestRender=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new Vo(t,this.thisContext));for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.data);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t);this.penumbraSize=r.penumbraSize}addMaterial(r,e){e.uuid=r,this.materials[r]?(this.materials[r].reset(e.data,this.thisContext),e.dispose()):this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].nodeMaterialDispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new wi(r,this.thisContext)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[r].updateSrc(e.data),!0):(this.images[r]=new kt(e,this),!1)}deleteImage(r){let e=this.images[r];e&&(e.dispose(),delete this.images[r])}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):this.imageHolderCache.load(r)}addVideo(r,e){return this.videos[r]?(this.videos[r].updateSrc(e.data),!0):(this.videos[r]=new kt(e,this),!1)}deleteVideo(r){let e=this.videos[r];e&&(e.dispose(),delete this.videos[r])}getVideo(r){return this.videos[r]??this.deletedVideo}video(r){return typeof r=="string"?this.getVideo(r):this.imageHolderCache.load(r)}addColor(r,e){return this.colors[r]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new yo(e.r,e.g,e.b,e.a):this.colors[r]=new yo(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Xe(0,0,0,0))}else return"a"in r?new Xe(r.r,r.g,r.b,r.a):new Xe(r.r,r.g,r.b,1);return e}addAudio(r,e){this.audios[r]=e}getAudio(r){let e=this.audios[r];if(e instanceof zo)return e;{let t=new zo({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof zo&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Ml(e),this.fonts[r].loadingPromise.then(()=>this.requestRender())}getFont(r){return this.fonts[r]}deleteFont(r){this.fonts[r]&&delete this.fonts[r]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof zo&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},ky=new jo(Ha.emptyData());var dr=class extends lt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),Zf(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,s]of Object.entries(e.props)){let l=o.shared.material(s);this.material[Number(i)]=l}else if(Xt(e.path,["material"])&&this.material instanceof Ct)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(st.drop(e,1),t.material,o);else if(Xt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let s=t.materials[i];typeof s!="string"&&this.material[i].updateByOp(st.drop(e,2),s,o)}}}updateState(e,t){super.updateState(e,t),e.castShadow!==void 0&&(this.castShadow=e.castShadow),e.receiveShadow!==void 0&&(this.receiveShadow=e.receiveShadow);let o=this.dataPatched;if(e.geometry?.type!=="NonParametricGeometry"&&"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),t.scene?.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>t.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),t.scene?.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[t.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],t.scene?.markNeedsUpdateRendererDirty())),e.flatShading!==void 0||e.wireframe!==void 0||e.side!==void 0)if(Array.isArray(this.material))for(let i=0;i<this.material.length;i++)this.material[i]=this.material[i].getFlavor(o.flatShading,o.side,o.wireframe);else this.material=this.material.getFlavor(o.flatShading,o.side,o.wireframe)}disposeMaterial(){this.material&&qs(this.material).forEach(e=>{e instanceof Ct&&(e instanceof Vo||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as gO}from"three";var ut=class extends dr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof gO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof jo){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Xi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Xi.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Xt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(st.drop(e,1),t.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,t){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let a={...this.data.geometry,...i};this.localGeometry=Eo(a,t,this.data.flatShading)}let s,l,c;i.scaleBaked?[s,l,c]=i.scaleBaked:{width:s,height:l,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&gs(this.localGeometry.attributes,s/u.sxPrev,l/u.syPrev,c/u.szPrev),u.sxPrev=s,u.syPrev=l,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Eo(i,t,this.data.flatShading)}}refreshAttachedCloners(e){for(let t of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(t.object)}refreshAttachedPaths(e){for(let t of this.attachedPaths)e.scene.addPendingCommand(()=>t.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,t,o){let i=!1;e.type===0&&e.path.length===0&&Fi(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof ke&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,t)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(t,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,t){this.createGeometryDelayed(t)}updateState(e,t){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,t),super.updateState(e,t)}updateGeometryGroupsIfNeeded(){Array.isArray(this.material)&&this.geometry.groups.length===0&&this.geometry.addGroup(0,Math.max(this.geometry.getIndex()?.count??0,this.geometry.getAttribute("position").count),0)}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;this.is2DType?e.set(0,0,o.depth*.5):this.isNonParametric?(e.setScalar(0),this.geometry.boundingSphere&&e.copy(this.geometry.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}};function vO(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let r=new Map,e=n.geometry.attributes,t=e.position.array,o=e.normal.array,i=new Float32Array(t.length);for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=new Qd(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new Qd})}r.forEach((s,l)=>{for(let c of s.normals)s.result.add(c);s.result.divideScalar(s.normals.length)});for(let s=0;s<t.length;s+=3){let l=`${t[s]}_${t[s+1]}_${t[s+2]}`,c=r.get(l)?.result;c&&(i[s]=c.x,i[s+1]=c.y,i[s+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new Uy(i,3))}function bO(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=new Qd;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new Uy(t,3))}function _i(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof Ct)||n.material.getLayersOfType("outline").length===0)return;n instanceof ut&&n.is2DAndNoDepth?bO(n):vO(n)}function Ti(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,t=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Zd.seededRandom(o),Zd.seededRandom(o+1e4),Zd.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new xO(t,3))}var TO;Kn.then(n=>{TO=n});var Ir=new SO,Es=new _O;function Wy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var ko=class extends ut{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new wO;this.smoothShading=!0;this.skipReactionUpdate=!1}chooseGeoemtryCache(e){return this.dataPatched.flatShading?e.geometryCache:e.geometryCache2}get subdivPointerNew(){return this.localGeometry!==void 0?this.subdivPointer:this.geometry.ensureSubdivPointer()}get originalGeometryNew(){return this.localGeometry!==void 0?this.originalGeometry:this.geometry.originalGeometry}get phongAngle(){return this.data.geometry.phongAngle??45}updateEntityBoxSize(e,t){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),t.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let t=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:s}=ke.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),i!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=i??void 0),this.localGeometry=this.subdividedGeometry??this.originalGeometry,_i(this),Ti(this),this.calcBoundingBox(),t&&(this.localGeometry.uuid=t)}updateState(e,t){if(super.updateState(e,t),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(t)}}updateMesh(e=!1){ke.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&ke.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=ke.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=ke.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,lt.prototype.raycast.call(this,e,t),this.localGeometry=o}activateSVDCompensation(){!this.hasNonUniformScale||(this.matrix.copy(this.matrixWorldRigid),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){!this.hasNonUniformScale||(this.updateMatrix(),this.hasNonUniformScale=void 0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Hy,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Ir.setFromBufferAttribute(t),Ir.getCenter(o),e.boundingSphere.radius=o.distanceTo(Ir.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Ir.getSize(Es),this.hasNonUniformScale&&Es.divide(this.scale);let i={width:Es.x,height:Es.y,depth:Es.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Ir.min.set(e[0],e[2],e[4]),Ir.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Ir.min.applyMatrix4(this.shearScaleInv),Ir.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Hy);let o=t.boundingSphere.center;Ir.getCenter(o),t.boundingSphere.radius=o.distanceTo(Ir.max)}freeSubdivPointer(){this.subdivPointer&&(ke.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,t,o){super.updateByPatchedOpGeometry(e,t,o),this.localGeometry&&this.createGeometryByControls(t)}};import{Triangle as PO,Vector3 as Ho}from"three";var qy=-1,OO=1,$y={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},Xy={polygon_center:0,edge:1,vertex:2},Ls=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,me=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-qy)*(e-t)/(OO-qy)+t};function Yy(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(s=>Math.round(s*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var AO=new Ho,El=new Ho,CO=new Ho,NO=new Ho;function Pi(n,r){let e=CO.fromArray(n),t=NO.fromArray(r);El.copy(t).sub(e);let o=El.length();return El.normalize().multiplyScalar(o*.5),AO.copy(e).add(El).toArray()}var Wt=new PO,Ll=new Ho,Bl=new Ho,Uo=new Ho;function Ky(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Ll.fromArray(n.index.array,e*3),Wt.setFromAttributeAndIndices(n.attributes.position,Ll.x,Ll.y,Ll.z),Wt.getNormal(Bl),Wt.getMidpoint(Uo),!(isNaN(Uo.x)||isNaN(Uo.y)||isNaN(Uo.z))){let{a:t,b:o,c:i}=Wt,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=Pi(s,l),f=Pi(l,c),m=Pi(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,v=[],b=Wt.getMidpoint(Uo).toArray();y===u&&!g&&(v=[f,m,m],b=p),y===a&&!g&&(v=[p,m,m],b=f),y===d&&!g&&(v=[p,f,f],b=m),g&&(v=[p,f,m]),r.push({vertices:[s,l,c],faceCenters:v,midpoint:b,norm:Wt.getNormal(Bl).toArray()})}return r}function Zy(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Wt.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Wt.getNormal(Bl),Wt.getMidpoint(Uo);let o=Wt.a.toArray(),i=Wt.b.toArray(),s=Wt.c.toArray();r.push({vertices:[o,i,s],faceCenters:[Pi(o,i),Pi(i,s),Pi(s,o)],midpoint:Uo.toArray(),norm:Bl.toArray()})}return r}var IO=4,MO=.5,Jd=n=>.5*(1-Math.cos(n*Math.PI)),eu=class{constructor(){this.perlin=new Array(4095+1)}noise(r,e=0,t=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}r<0&&(r=-r),e<0&&(e=-e),t<0&&(t=-t);let o=Math.floor(r),i=Math.floor(e),s=Math.floor(t),l=r-o,c=e-i,u=t-s,a,d,p=0,f=.5,m,h,y;for(let g=0;g<IO;g++){let v=o+(i<<4)+(s<<8);a=Jd(l),d=Jd(c),m=this.perlin[v&4095],m+=a*(this.perlin[v+1&4095]-m),h=this.perlin[v+16&4095],h+=a*(this.perlin[v+16+1&4095]-h),m+=d*(h-m),v+=256,h=this.perlin[v&4095],h+=a*(this.perlin[v+1&4095]-h),y=this.perlin[v+16&4095],y+=a*(this.perlin[v+16+1&4095]-y),h+=d*(y-h),m+=Jd(u)*(h-m),p+=m*f,f*=MO,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 p}noiseSeed(r){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(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},Qy=eu;import{Vector3 as EO,Matrix4 as LO,Ray as BO}from"three";var Jy=new EO,eg=new LO,tg=new BO;function rg(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var Oi=class extends ut{constructor(e,t,o){super(e,t,o);this.data=t}get textGeometry(){return this.geometry}get charWidths(){return this.textGeometry.charWidths}get charCoords(){return this.textGeometry.charCoords}get wrappedText(){return this.textGeometry.wrappedText}get font(){return this.textGeometry.font}get initialOffsetY(){let e=this.dataPatched;return this.font?.getLineInitialOffsetY(this.lineHeight,this.wrappedText.length,e.geometry.height,this.fontScale,e.geometry.verticalAlign)??0}get fontScale(){let e=this.dataPatched;return this.font?e.geometry.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(){let e=this.dataPatched;return e.geometry.fontSize*e.geometry.lineHeight}raycast(e,t){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(eg.copy(o).invert(),tg.copy(e.ray).applyMatrix4(eg),tg.intersectBox(this.singleBBox,Jy))){let i=Jy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var xt=1e-4,Mr,sg,ag,lg,ng=new Vt,ig=new Vt;Kn.then(n=>{Mr=n,sg=[Mr.get_face_center,Mr.get_edge_midpoint,Mr.get_vertex_position],ag=[Mr.get_face_normal,Mr.get_edge_normal,Mr.get_vertex_normal],lg=[Mr.face_count,Mr.edge_count,Mr.vertex_count]});var GO=new qo,RO=new qo,go=new Vt,Wo=new Vt,Bs=new Vt,ru=new Vt,VO=new Vt,zO=new Vt;var Yr=new Qy,Ci=class extends Bn(DO){constructor(e,t){super();this.parameters=t;this.objectForSample=void 0;this._pendingMediaLoad=!1;this.object=e}resetOnMove(){this.removeFromParent(),this.parent=null}expandClones(e){if(this.parent===null)this.updateState(this.parameters,e);else for(let t of this.children)t instanceof Wr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof Wr&&t.object===e&&(t.matrixWorldNeedsUpdate=!0)})}onObjUpdateMatrix(){this.parameters.type!=="toObject"&&(this.matrixWorldNeedsUpdate=!0)}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)}for(let e of this.children)e.updateMatrix(),e.hasNonUniformScale&&(e.updateMatrixWorld(),e.updateMatrixWorldSVD())}_updateCount(e){let t;if(e!==void 0?t=e:t=this.parameters.type==="grid"?Math.round(this.parameters.grid.count[0])*Math.round(this.parameters.grid.count[1])*Math.round(this.parameters.grid.count[2]):this.parameters.count,this.parameters.type==="toObject"&&!this.parameters.toObject.object&&(t=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.children;if(o.length===t)return;if(o.length<t)for(let i=0,s=t-o.length;i<s;++i){let l=new Wr(this.object);l.expand(),this.add(l)}else for(let i=0,s=o.length-t;i<s;++i)this.remove(o[i])}else{if(this.children.length===t)return;if(this.children.length<t)for(let o=0,i=t-this.children.length;o<i;++o){let s=new Wr(this.object);s.expand(),this.add(s)}else for(let o=0,i=this.children.length-t;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let t=e.radial,o=t.start*og.DEG2RAD,i=t.end*og.DEG2RAD,s=o-i,l=new tu(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Vt(0,0,1);break;case"y":c=new Vt(0,1,0);break;default:case"x":c=new Vt(1,0,0);break}let u=e.randomnessObject??br.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";Yr.noiseSeed(u.seed);let d=$a((0,Ai.default)(u.seed)),p=Ls(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?Yr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,me(y,u.scale[0]))||xt,m.scale.y=t.scale[1]+p(f,me(y,u.scale[1]))||xt,m.scale.z=t.scale[2]+p(f,me(y,u.scale[2]))||xt,m.position.setScalar(0);let g=s/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,g,0);break;case"y":m.rotation.set(0,0,g);break;case"z":m.rotation.set(g,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(f,me(y,u.position[0])),m.position.y+=t.position[1]+p(f,me(y,u.position[1])),m.position.z+=t.position[2]+p(f,me(y,u.position[2]));let v=p(f,me(y,u.rotation[0])),b=p(f,me(y,u.rotation[1])),w=p(f,me(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=l.x+v,m.rotation.y+=l.y+b,m.rotation.z+=l.z+w):m.rotation.set(l.x+v,l.y+b,l.z+w)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new tu(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??br.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Yr.noiseSeed(i.seed);let l=$a((0,Ai.default)(i.seed)),c=Ls(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?Yr.noise(d):l(d,d),f=c(u,me(p,i.rotation[0])),m=c(u,me(p,i.rotation[1])),h=c(u,me(p,i.rotation[2]));a.scale.x=1+(t.scale[0]-1)*u+c(u,me(p,i.scale[0]))||xt,a.scale.y=1+(t.scale[1]-1)*u+c(u,me(p,i.scale[1]))||xt,a.scale.z=1+(t.scale[2]-1)*u+c(u,me(p,i.scale[2]))||xt,a.rotation.x=o.x*u+f,a.rotation.y=o.y*u+m,a.rotation.z=o.z*u+h,a.position.x=t.position[0]*u+c(u,me(p,i.position[0])),a.position.y=t.position[1]*u+c(u,me(p,i.position[1])),a.position.z=t.position[2]*u+c(u,me(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??br.defaultData([1,1,1]).randomnessObject,s=Ls(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";Yr.noiseSeed(i.seed);let c=qm((0,Ai.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 Vt(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 d=0;d<o.count[0];d++)for(let p=0;p<o.count[1];p++)for(let f=0;f<o.count[2];f++){let m=[(d+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],h=l?Yr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,me(h,i.scale[0]))||xt,y.scale.y=1+s(t,me(h,i.scale[1]))||xt,y.scale.z=1+s(t,me(h,i.scale[2]))||xt;let g=s(t,me(h,i.rotation[0])),v=s(t,me(h,i.rotation[1])),b=s(t,me(h,i.rotation[2]));y.rotation.set(g,v,b),y.position.x=o.size[0]*d-a.x+s(t,me(h,i.position[0])),y.position.y=o.size[1]*p-a.y+s(t,me(h,i.position[1])),y.position.z=o.size[2]*f-a.z+s(t,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 d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(a+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=l?Yr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,me(f,i.scale[0]))||xt,m.scale.y=1+s(t,me(f,i.scale[1]))||xt,m.scale.z=1+s(t,me(f,i.scale[2]))||xt;let h=s(t,me(f,i.rotation[0])),y=s(t,me(f,i.rotation[1])),g=s(t,me(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+s(t,me(f,i.position[0])),m.position.y=-o.size[1]*a+s(t,me(f,i.position[1])),m.position.z=-o.size[2]*d+s(t,me(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new tu(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??br.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Yr.noiseSeed(i.seed);let l=$a((0,Ai.default)(i.seed)),c=Ls(i.strength,this.parameters.randomness);if(!t.object){for(let[,g]of this.children.entries())g.position.set(0,0,0),g.scale.setScalar(1),g.rotation.set(0,0,0);this.objectForSample=void 0;return}if(!this.objectForSample)return;if(this.objectForSample instanceof Oi)if(!this.objectForSample.font?.isLoaded||this.objectForSample.geometry.attributes.position===void 0){this._pendingMediaLoad=!0;return}else this._pendingMediaLoad=!1;if(this.objectForSample.geometry===void 0&&this.objectForSample.isAncestorOf(this.object.uuid)){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) seem to be a child/descendant of the object it's being cloned to. Please re-parent it so that they are siblings instead.`);return}let u=this.getSubdivData(),a=[],d=g=>{let v=g.length,b=g.map(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),S=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[b/v,w/v,S/v]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let v=u.filter(b=>p(g.pos[0])===p(b.pos[0])&&p(g.pos[1])===p(b.pos[1])&&p(g.pos[2])===p(b.pos[2]));v.length>1?a.push({pos:g.pos,norm:d(v.map(b=>b.norm))}):a.push(g)});let f=Yy(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new Xa(this.objectForSample).build(),h=$y[t.axis],y=this.children;m.setRandomGenerator((0,Ai.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?Yr.noise(b):l(b,b),S=c(g,me(w,i.rotation[0])),T=c(g,me(w,i.rotation[1])),_=c(g,me(w,i.rotation[2]));t.spreadType==="random"?m.sample(Bs,ru):(f.length&&(Bs.fromArray(f[g].pos),ru.fromArray(f[g].norm)),this.objectForSample instanceof ko&&Bs.applyMatrix4(GO.copy(this.objectForSample.matrixWorld).invert())),Bs.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Bs),go.fromArray(h);let x=t.align==="normal"?ru:this.object.getWorldDirection(zO),N=Wo.fromArray(t.position);Wo.x+=Wo.x+c(g,me(w,i.position[0])),Wo.y+=Wo.y+c(g,me(w,i.position[1])),Wo.z+=Wo.z+c(g,me(w,i.position[2]));let P=Math.acos(x.dot(go)),C=VO.crossVectors(go,x).normalize(),O=RO.makeRotationAxis(C,P),A=x.clone().cross(this.object.up).normalize(),R=A.clone().cross(x).normalize(),k=new qo().makeBasis(A,x,R),$=new Vt(go.y,go.z,go.x).normalize(),te=$.clone().cross(go).normalize(),X=new qo().makeBasis($,go,te).invert(),q=new qo().multiplyMatrices(k,X);v.rotation.setFromRotationMatrix(q),N.applyMatrix4(O),v.position.add(N),v.rotation.x=v.rotation.x+o.x+S,v.rotation.y=v.rotation.y+o.y+T,v.rotation.z=v.rotation.z+o.z+_,v.scale.setScalar(1),v.scale.x=v.scale.x+t.scale[0]+c(g,me(w,i.scale[0]))||xt,v.scale.y=v.scale.y+t.scale[1]+c(g,me(w,i.scale[1]))||xt,v.scale.z=v.scale.z+t.scale[2]+c(g,me(w,i.scale[2]))||xt,v.scale.multiply(this.object.scale),v.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof ko){let t=this.objectForSample,o=Xy[e],i=lg[o],s=sg[o],l=ag[o],c=[],u=i(t.subdivPointerNew);for(let a=0;a<=u-1;a++){let d=s(t.subdivPointerNew,a),p=l(t.subdivPointerNew,a);ng.fromArray(d).applyMatrix4(t.matrixWorld),ig.fromArray(p),c.push({pos:ng.toArray(),norm:ig.toArray()})}return c}else return(this.objectForSample.geometry.index?Ky(this.objectForSample.geometry):Zy(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()}updateState(e,t){if(this.parameters=jr(e),this.parameters.type!=="toObject")(this.parent===null||this.parent!==this.object)&&(this.removeFromParent(),this.object.parent?.add(this),this.matrix=this.object.matrix,this.hiddenMatrix=this.object.hiddenMatrix,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1);else if(this.parent===null||this.parent.uuid!==this.parameters.toObject.object){this.removeFromParent();let o=t.find(this.parameters.toObject.object);o instanceof lt?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new qo,this.hiddenMatrix=new qo,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as AA,Scene as CA,Vector3 as NA,Fog as IA,Box3 as MA,MeshBasicMaterial as EA}from"three";import{Camera as ZO,OrthographicCamera as pg,PerspectiveCamera as QO,Vector3 as pr,Object3D as fg,Quaternion as JO}from"three";import{Camera as WO,LineSegments as qO,BufferGeometry as $O,LineBasicMaterial as XO,Color as nu,Vector3 as YO,Float32BufferAttribute as dg}from"three";import{BoxGeometry as FO}from"three";var Er=n=>{var r;return r=class extends n{},r.geometryHelper=new FO(30,30,30),r};import{Ray as jO,Sphere as kO,Matrix4 as UO,Vector3 as Kr}from"three";var Dl=new jO,ou=new kO,cg=new UO,Lr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),ou.copy(i.boundingSphere),ou.applyMatrix4(s),e.ray.intersectsSphere(ou)===!1||(cg.copy(s).invert(),Dl.copy(e.ray).applyMatrix4(cg),i.boundingBox!==null&&Dl.intersectsBox(i.boundingBox)===!1))return;let l,c,u,a,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),v=Math.min(d.count,f.start+f.count);for(m=g,h=v;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),a=d.getX(m+2),l=y(n,e,Dl,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,b=new Kr,w=new Kr,S=new Kr,T=new Kr,_=2,N=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=N*N,C=Math.max(0,f.start),O=Math.min(v.count,f.start+f.count);for(let A=C,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(v,A),w.fromBufferAttribute(v,A+1),Dl.distanceSqToSegment(b,w,T,S)>P)continue;T.applyMatrix4(n.matrixWorld);let $=e.ray.origin.distanceTo(T);$<e.near||$>e.far||t.push({distance:$,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,b,w,S,T,_){let x=new Kr,N=new Kr,P=new Kr,C=new Kr,O=new Kr;if(x.fromBufferAttribute(w,S),N.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),b.intersectTriangle(x,N,P,!1,C)===null)return null;O.copy(C),O.applyMatrix4(g.matrixWorld);let R=v.ray.origin.distanceTo(O);return R<v.near||R>v.far?null:{faceIndex:1,distance:R,point:O.clone(),object:g}}};var Gl=new YO,qt=new WO,iu=class extends qO{constructor(e){let t=new $O,o=new XO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new nu(15711266),u=new nu(15711266),a=new nu(2857471);d("n1","n2",c),d("n2","n4",c),d("n4","n3",c),d("n3","n1",c),d("f1","f2",c),d("f2","f4",c),d("f4","f3",c),d("f3","f1",c),d("n1","f1",c),d("n2","f2",c),d("n3","f3",c),d("n4","f4",c),d("p","n1",u),d("p","n2",u),d("p","n3",u),d("p","n4",u),d("u1","u2",a),d("u2","u3",a),d("u3","u1",a);function d(f,m,h){p(f,h),p(m,h)}function p(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)}t.setAttribute("position",new dg(i,3)),t.setAttribute("color",new dg(s,3));super(t,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,t=this.pointMap,o=!0;qt.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;ur("n1",t,e,qt,-i,-s,l),ur("n2",t,e,qt,i,-s,l),ur("n3",t,e,qt,-i,s,l),ur("n4",t,e,qt,i,s,l);let c=l;ur("f1",t,e,qt,-i,-s,c),ur("f2",t,e,qt,i,-s,c),ur("f3",t,e,qt,-i,s,c),ur("f4",t,e,qt,i,s,c);let u=c,a=.5;ur("u1",t,e,qt,i*.7*a,s*1.1,u),ur("u2",t,e,qt,-i*.7*a,s*1.1,u),ur("u3",t,e,qt,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function ur(n,r,e,t,o,i,s){Gl.set(o,i,s).unproject(t);let l=r[n];if(l!==void 0){let c=e.getAttribute("position");for(let u=0,a=l.length;u<a;u++)c.setXYZ(l[u],Gl.x,Gl.y,Gl.z)}}var Rl=class extends Er(iu){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,t){Lr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as ug,BoxGeometry as KO}from"three";var Vl;(r=>r.is=e=>"objectHelper"in e)(Vl||(Vl={}));var xo=(n,r)=>class extends Qa(n){constructor(){super(...arguments);this.objectHelper=new r(this);this.gizmos={}}get geometryHelper(){return r.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ug&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof KO?(o.setScalar(0),i.set(this.geometryHelper.parameters.width,this.geometryHelper.parameters.height,this.geometryHelper.parameters.height).multiplyScalar(.5)):super.updateEntityBoxSize(o,i)}hideGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof ug&&(i.visible=!1)}}};var su=790,Ni=new pr,au=new pr,lu=new JO,cu=new pr,Ds=new pr,du=new pr,Br=class extends xo(ZO,Rl){constructor(e="",t={...In.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Ao.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;if(t.orthographic.autoZoom){let s=t.orthographic.autoZoomFrustumSize??su,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new pg(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new pg(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new QO(45,o/i,50,1e4),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.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.objectHelper.update()}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}set fov(e){this.perspCamera.fov=e}get fov(){return this.perspCamera.fov}setNear(e,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}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,t,o){typeof e=="number"&&(e=new pr(e,t,o)),super.lookAt(e),this.getWorldPosition(Ni),this.targetOffset=Ni.distanceTo(e)}getTarget(e=new pr){return this.getWorldDirection(au),this.getWorldPosition(Ni),au.multiplyScalar(this.targetOffset),e.copy(Ni).add(au),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ni),Ni.distanceTo(e)}updateUp(){this.getWorldQuaternion(lu),cu.set(0,0,1).applyQuaternion(lu),Ds.copy(fg.DEFAULT_UP),this.isUpVectorFlipped&&Ds.negate(),Ds.applyQuaternion(lu),du.copy(fg.DEFAULT_UP).projectOnPlane(cu),this.angleOffsetFromUp=du.angleTo(Ds),this.angleOffsetFromUp*=du.cross(Ds).dot(cu)>=0?1:-1}updateTransformState(e){let t=super.updateTransformState(e);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),t}getViewFrontToObject(e){let t=e.getWorldPosition(new pr),i=e.getWorldDirection(new pr).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new pr),i=this.getWorldDirection(new pr).multiplyScalar(this.targetOffset);return{position:t.clone().sub(i),target:t}}setViewplaneSize(e,t){if(this.aspect=e/t,this.data.type==="OrthographicCamera"&&this.data.orthographic.autoZoom){let o=this.data.orthographic.autoZoomFrustumSize??su,i=e>t?this.aspect:1,s=e>t?1:this.aspect;this.left=-o*.5*i,this.right=o*.5*i,this.top=o*.5*(1/s),this.bottom=-o*.5*(1/s)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;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,t,o,i,s,l){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,s,l):this.orthoCamera.setViewOffset(e,t,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,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.parent=e.parent,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 t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom,autoZoom:!0,autoZoomFrustumSize:su},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return yn(t,e)}updateCameraSubtype(e,t){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";t.zoom!==void 0&&this.setZoom(o,t.zoom),t.near!==void 0&&this.setNear(o,t.near),t.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=t.fov)}updateState(e,t){this.updateCameraState(e,t)}updateCameraState(e,t){this.updateState_Entity(e,t),e.far!==void 0&&(this.far=e.far),e.orthographic!==void 0&&this.updateCameraSubtype("orthographic",e.orthographic),e.perspective!==void 0&&this.updateCameraSubtype("perspective",e.perspective),e.type!==void 0&&(this.cameraType=e.type),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()}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.type===0&&this.updateCameraSubtype(e.path[0],e.props)}toState(e){return{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}};import{BufferGeometry as mg,Float32BufferAttribute as eA,Matrix4 as hg}from"three";var Ii=new hg,tA=new hg;var $t=class extends dr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new mg;this.geometry.userData.parameters={width:0,height:0,depth:0}}get booleanOp(){return this.data.geometry.operation}get phongAngle(){return this.data.geometry.phongAngle??45}get isLOD(){return this.recomputeBoolean(),!1}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),e.path.length===1&&e.path[0]==="geometry"&&e.type===0&&e.props.operation!==void 0&&(this.freeBooleanPointer(),this.resetBBoxNeedsUpdate())}freeBooleanPointer(){super.freeBooleanPointer(),this.geometry.dispose()}recomputeBoolean(e,t=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let s=this.children[i];s instanceof $t&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof lt&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(Ii.multiplyMatrices(s.hiddenMatrix,s.matrix),s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=or.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;or.transformMeshSet(s.booleanMeshSetAddress,Ii),s.booleanMatrixInvOld.copy(Ii).invert(),s.booleanWasTransformed=!1}else s instanceof $t&&s.needsTransformForDownstream===!0?(or.transformMeshSet(s.booleanMeshSetAddress,Ii),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(or.transformMeshSet(s.booleanMeshSetAddress,tA.multiplyMatrices(Ii,s.booleanMatrixInvOld)),s.booleanMatrixInvOld.copy(Ii).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new eA([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return or.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new mg,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=or.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,_i(this),Ti(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as rA}from"three";var yg;(r=>{function n(e){return Ce.is(e)&&e instanceof rA}r.is=n})(yg||(yg={}));var Mi=(n,r)=>class extends xo(n,r){updateState_Light(t,o){this.updateState_Entity(t,o),t.color!==void 0&&(this.color=o.shared.color(t.color)),t.intensity!==void 0&&(this.intensity=t.intensity),t.depth!==void 0&&(this.shadow.camera.far=t.depth,this.shadow.needsUpdate=!0),t.shadows!==void 0&&(this.castShadow=t.shadows)}};var Ei=n=>n instanceof lt,Gs=n=>n!==null&&n instanceof $t,gg=n=>n instanceof Br;var uu=n=>Vl.is(n);import{Group as nA}from"three";import{AxesHelper as oA}from"three";var vo=class extends Er(oA){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){Lr(this.object,vo.geometryHelper,e,t)}update(){}};var Rs=class extends xo(nA,vo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as cA,CameraHelper as xg}from"three";import{DirectionalLightHelper as iA}from"three";var Li=class extends Er(iA){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Lr(this.object,Li.geometryHelper,e,t)}};import{PointLightHelper as sA}from"three";var Bi=class extends Er(sA){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Lr(this.object,Bi.geometryHelper,e,t)}};import{SpotLightHelper as aA,Vector3 as lA}from"three";var zl=class extends Er(aA){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Lr(this.object,zl.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=zl._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),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)}}},Vs=zl;Vs._vector=new lA;function dA(n,r){n.shadow.camera.right=r/2,n.shadow.camera.left=-r/2,n.shadow.camera.top=r/2,n.shadow.camera.bottom=-r/2,n.shadow.needsUpdate=!0}var Fl=class extends Mi(cA,Li){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.top=1250,i.bottom=-1250,i.right=1250,i.left=-1250,i.near=-1e4,i.far=2500;let s=new xg(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof xg&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e);let t=r.depth!==void 0&&r.depth!==this.shadow.camera.far||r.size!==void 0&&r.size/2!==this.shadow.camera.right;r.size!==void 0&&dA(this,r.size),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t&&this.update()}};import{PointLight as uA,Vector3 as jl,Box3 as pA,Box3Helper as vg,Color as fA}from"three";var kl=class extends Mi(uA,Bi){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=90,i.aspect=1,i.near=100,i.far=2500;let s=new jl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new jl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new pA(s,l),u=new vg(c,new fA(16755200));u.visible=!1,this.gizmos.shadowmap=u,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let r in this.gizmos){let e=this.gizmos[r];if(e instanceof vg){let t=this.shadow.camera,o=new jl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new jl(t.far+this.position.x,t.far+this.position.y,t.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};import{SpotLight as mA,CameraHelper as bg,MathUtils as hA,Vector3 as Tg,Quaternion as yA}from"three";var Sg=new Tg,wg=new Tg,_g=new yA,Ul=class extends Mi(mA,Vs){constructor(r,e,t){super(),this.super_Entity(r,e),this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1,this.layers.enable(3);let i=this.shadow.camera;i.fov=hA.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new bg(this.shadow.camera);s.visible=!1,this.gizmos.shadowmap=s,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof bg&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),wg.setFromMatrixPosition(this.matrixWorld),_g.setFromRotationMatrix(this.matrixWorld),Sg.copy(this.up).applyQuaternion(_g).negate().multiplyScalar(this.distance),this.target.position.copy(wg).add(Sg),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(r,e){this.updateState_Light(r,e),r.distance!==void 0&&(this.distance=r.distance),r.decay!==void 0&&(this.decay=r.decay),r.angle!==void 0&&(this.angle=r.angle),r.penumbra!==void 0&&(this.penumbra=r.penumbra),r.shadowRadius!==void 0&&(this.shadow.radius=r.shadowRadius),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Hl=class extends ut{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?bs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Di=class extends ut{constructor(e,t,o){super(e,t,o);this._shapeId=null;this._context=o}updateState(e,t){super.updateState(e,t),this.updateShape()}updateShape(){let e=this.data.geometry.extrusion.shape,t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let s=this._context.scene.find(i);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=hl;break;case"Ellipse":i=Hn;break;case"Polygon":i=ml;break;case"Star":i=yl;break;default:throw new Error(`Unknown shape type: ${e.type}`)}t=i.create({parameters:e}).userData.shape}let o=this.geometry;t&&o.inputs&&(o.inputs.shapeData=t,o.build(),this.attachedSurfaceCloners.forEach(i=>i.update()))}detachShape(){this._shapeId!==null&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e){return super.updateTransformState(e)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?bs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};import{Group as gA}from"three";var Zr=class extends xo(gA,vo){constructor(e,t,o){super();t.type==="Instance"&&typeof e=="string"&&(t=this.transformAssignData(t,o)),this.super_Entity(e,t),this.objectHelper.update()}get isComponentRoot(){return this.data.type==="Component"&&typeof this.identity=="string"}get isInstanceRoot(){return this.data.type==="Instance"&&typeof this.identity=="string"}transformAssignData(e,t){let o=t.scene.data.objects.get(e.component);if(o){let i,s;for(let l of co.rootOverrideProps)e[l]===void 0?(i===void 0&&(i={...e}),i[l]=o.data[l]):(s===void 0&&(s={}),s[l]=e[l]);return this.overrideData=s,i??e}return e}updateByOp(e,t,o,i){let s;if(this.isInstanceRoot&&!i&&(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component))for(let l of co.rootOverrideProps)l in e.props&&e.props[l]===void 0&&(s===void 0&&(s={...e,props:{...e.props}}),s.props[l]=this.component.data[l]);super.updateByOp(s??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){this.component=e.scene.find(t.component)??null;let o=!1;if(this.component!==this.oldComponent){if(this.oldComponent){let i=0;for(let s of this.children)if(Ce.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Wl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&Og(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function Wl(n){if(n.component){let r=n.component.instances.indexOf(n);r>=0&&n.component.instances.splice(r,1);for(let e of n.children)Ce.is(e)&&Wl(e)}}function Pg(n,r,e,t){return n.component===r&&Fi(n.identity,t)?n.overrideData===e?2:1:0}function Og(n,r,e,t,o,i,s,l){if(s>50)return!1;if(t.component!==o){if(t.component){let u=t.component.instances.indexOf(t);u>=0&&t.component.instances.splice(u,1)}o.instances.push(t),t.component=o}o instanceof Zr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Ce.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=Mn.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Ce.is(m)?m:null,p!==null){let h=Pg(p,u,d,a);f=h>=1?p.stateSelection:void 0,h!==2&&(p=null)}if(p===null&&(p=n.scene.findInstance(a)??null,p!==null)){let h=Pg(p,u,d,a);if(f=h>=1?p.stateSelection:void 0,h!==2)p=null;else{let y=p.parent.children.indexOf(p);p.parent.children.splice(y,1),t.children.splice(c,0,p),p.parent===t?(y<=c&&console.error("not possible"),void 0):(p.parent=t,p.matrixWorldNeedsUpdate=!0,p.resetBBoxNeedsUpdate(),p.updateVisible(),n.pendingDeletes.delete(p),void 0)}}}if(p===null){let m=d?kr.apply(u.data,d):u.data;Yt.is(m.type)&&(m={...m,type:"Empty"}),p=Qt.createEntity(a,m,n),p.overrideData=d,t.add(p),t.children.splice(t.children.length-1,1),t.children.splice(c,0,p),p.updateState(p.data,n),f&&p.changeSelectedState(f,n),n.scene.registerInstanceAndSetUuid(p)}c+=1,Og(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Ce.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function xA(n,r,e){let t;return r.geometry.type==="TextGeometry"?new Oi(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new ko(n,r,e):r.geometry.type==="PathGeometry"?t=new Di(n,r,e):r.geometry.type==="VectorGeometry"?t=new Hl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new $t(n,r,e):t=new ut(n,r,e),t)}function ql(n,r,e){return r.type==="Mesh"?xA(n,r,e):r.type==="Empty"?new Rs(n,r):r.type==="PointLight"?new kl(n,r,e):r.type==="SpotLight"?new Ul(n,r,e):r.type==="DirectionalLight"?new Fl(n,r,e):r.type==="Component"||r.type==="Instance"?new Zr(n,r,e):Yt.is(r.type)?new Br(n,r):(console.error(r),new Rs(n,r))}Qt.createEntity=ql;function vA(n,r,e){let t=ql(n.identity,r,e),o=n.children,i=n.attachedPaths,s=n.parent,l=n.component,c=n.instances,u=n.overrideData,a=n.uuid,d=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(t));for(let p of Object.keys(t))n[p]=t[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=s,n.component=l,n.instances=c,n.uuid=a,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Qt.changeEntityProptotype=vA;Qt.Cloner=Ci;function Ag(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as SA,Ray as wA,Raycaster as _A}from"three";function Cg(n,r){let e=!1,t=r.getLayersOfType("transmission"),o=r.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),t.length>0&&n.layers.enable(3),e=!0,Ti(n),_i(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function Ng(n,r){if(!r.layers)return!1;let e=!1,t=r.getLayersOfType("transmission").filter(i=>i.data.visible),o=r.getLayersOfType("outline").filter(i=>i.data.visible);return t.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),t.length===0&&o.length===0&&n.layers.set(0),e}function Ig(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof dr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Cg(e,e.material[t])&&(r=!0);else Cg(e,e.material)&&(r=!0)}),r}function Mg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof dr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)Ng(e,e.material[t])&&(r=!0);else Ng(e,e.material)&&(r=!0)}),r}var TA=new _A,PA=new SA,OA=new wA;function pu(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=PA.copy(i.matrixWorld).invert(),l=OA.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let u=TA;u.set(l.origin,l.direction),u.near=r.near,u.far=r.far;let a=u.intersectObject(n,!1);a.length>0&&e.push({...a[0],object:t?i:n})}}var $l=class{constructor(){this._constraints=new Map}setConstraint(r,e){e===null?this._constraints.delete(r):this._constraints.set(r,e)}removeDependencies(r){this._constraints.delete(r)}applyConstraints(r){let e=new Set;this._constraints.forEach((t,o)=>{let i=[o,t],s=t;for(;this._constraints.has(s);)s=this._constraints.get(s),e.has(s)||i.push(s);for(let l=i.length-2;l>=0;l--)if(!e.has(i[l])){let c=r.find(i[l]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[l]}`),e.add(i[l])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var LA=new EA;LA.wireframe=!0;var Eg=new NA,fu=class extends CA{constructor(e,t){super();this.data=e;this.backupFog=new IA(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.geometryCacheChanged=!1;this.bgColor=new Xe(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new $l;this.needsRecomputeInstances=!1;this.ambientLight=new AA(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,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Mg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Ig(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let t=e.identity.join("-"),o=this.entityIdentityToEntity[t];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[t]=e,this.entityByUuid[e.uuid]=e}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let s=i;i=i.parent;let l=i.children.indexOf(s);o.splice(0,0,l)}return{entity:t,sortKey:o}}getAllSorted(e){let t=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&t.push(i)}return t.sort((o,i)=>xu(o.sortKey,i.sortKey)),t.map(o=>o.entity)}nonExistOrDescendantOf(e,t){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===t)return!0;o=o.parent}return!1}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}debugEnsureEntity(e){let t=this.find(e);if(t){if(Array.isArray(t.identity)&&this.findInstance(t.identity)===void 0){console.error("not found instance");debugger}}else{console.error("not found");debugger}}addPendingExpandCloner(e){this.toExpandCloner.add(e)}addPendingUpdateCloner(e){this.toUpdateCloner.add(e)}markToExpandCloner(e){this.toExpandCloner.add(e),e.traverseEntityAncestors(t=>{this.toExpandCloner.add(t)})}doPendingExpandCloner(){this.toExpandCloner.forEach(e=>{e.expandCloner(this)}),this.toExpandCloner.clear()}doPendingUpdateCloner(){this.toUpdateCloner.forEach(e=>{e.cloner?.update()}),this.toUpdateCloner.clear()}doPendingUpdates(){this.doPendingExpandCloner(),this.doPendingUpdateCloner(),this.applyPendingCommands()}addPendingCommand(e){this.pendingCommands.push(e)}applyPendingCommands(){this.pendingCommands.forEach(e=>e()),this.pendingCommands.length=0}updateTreeByOp(e,t){if(e.path.length===0&&e.type===7){let o=e.parent===null?this:this.find(e.parent);if(o===void 0)throw new Error("unexpected");let i=this.createObject(e.id,e.data,e.children,o,e.localIndex,t);i.updateVisible(),i.resetBBoxNeedsUpdate(),Ei(i)&&Gs(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i)}else if(e.path.length===0&&e.type===8){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markToExpandCloner(o),o.resetBBoxNeedsUpdate(),this.unregisterObject(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),this.markNeedsRecomputeInstancesForChildren(o),o.parent.remove(o),Gs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Ei(o)&&(o.freeBooleanPointer(),i instanceof $t&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Di&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid)}else if(e.path.length===0&&e.type===9){let o=this.find(e.id);if(o===void 0)throw new Error("unexpected");this.markNeedsRecomputeInstancesForChildren(o);let i=o.parent;this.markNeedsRecomputeInstancesForAncessors(i),o.cloner?.resetOnMove(),this.markToExpandCloner(o);let s=e.parent===null?this:this.find(e.parent);if(s===void 0)throw new Error("unexpected");s.add(o),this.markNeedsRecomputeInstancesForAncessors(s),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate();let l=e.localIndex;s.children.splice(l,0,s.children.pop()),Ei(o)&&(o.invalidateUpstreamBooleanData(),Gs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof $t&&i.invalidateDownstreamBooleanData().recomputeBoolean())}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),t.path.includes("overrides")&&"states"in t.props){let{states:l,rest:c}=t.props;t={...t,props:c},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let s=this.find(e);if(s)try{Ag(s,t,o,{scene:this,shared:i}),s instanceof ut&&s.updateGeometryGroupsIfNeeded()}catch(l){console.error(l)}}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(dt(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Br&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Gs(o)&&o.recomputeBoolean(),o instanceof Br&&o.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(t=>{(t.data.type==="Component"||t.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Ce.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ce.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,s,l,c){e&&e!==i.uuid&&i.find(e)&&s.forInstancesRec(a=>{a.isInstanceRoot||(a.data=Tn(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...qs(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;mt.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Zr&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{i.data.type==="GameControl"?t.forInstancesRec(s=>{s.isInstanceRoot||(s.data=Tn(s.data,l=>{l.events.delete(i.id)}).data)}):i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,t,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,t,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,t,o,i):i.data.condition.type==="Comparison"&&(i.data.condition.lOperand.type==="Property"&&this.relativeizeInner(i.data.condition.lOperand.value[0],["condition","lOperand","value"],0,e,t,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,t,o,i)),i.data.inActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["inActions",s.id],"object",e,t,o,i)}),i.data.outActions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["outActions",s.id],"object",e,t,o,i)})):"actions"in i.data&&i.data.actions.forEach(s=>{s.data.type==="Transition"&&this.relativeizeInner(s.data.object,["actions",s.id],"object",e,t,o,i)})})}),!0})}expandInstances(e,t){let o=new Set;this.traverseEntity(i=>{if(i instanceof Zr&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),Wl(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof Zr&&t.isInstanceRoot&&(t.component=void 0)}),this.expandInstances(e,!1))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(t=>{let o=typeof t.identity=="string"?t.identity:t.identity.join("-");this.entityIdentityToEntity[o]===t&&(delete this.entityByUuid[t.uuid],delete this.entityIdentityToEntity[o]),t.dispose()})}clearScene(){for(let e of this.children)Ce.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Br(fu.PERSONAL_CAMERA_ID,{...In.defaultData,name:"Personal Camera"});return e.objectHelper.visible=!1,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ce.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((Ei(s)||uu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),pu(s,e,t)),o(s))}};return o(this),t}raycastWithClones(e){let t=[],o=i=>{for(let s of i.children){let l=s.cloner;Ce.is(s)&&(s.visible||l?.object.data.visible)&&((Ei(s)||uu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),pu(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Ce.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ce.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)ts.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ce.is(t)&&t.visible&&t.traverseVisibleEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=dt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=dt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=dt(e.groundColor,t)),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,t,o){let i=0;for(let s of e)this.createObject(s.id,s.data,s.children,t,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createObject(e,t,o,i,s,l){let c={scene:this,shared:l},u=ql(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(s,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,l)),u.updateState(t,c),u instanceof ut&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),u}getCenter(e){let t=[];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;t.push(...a.vertices)}let o=new MA;return o.setFromPoints(t),o.getCenter(Eg),Eg}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof lt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Ct&&e(t.material[o]);else t.material instanceof Ct&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,i;e>=t?(o=t/e,i=1):(o=1,i=e/t),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})})}},Gi=fu;Gi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",Gi.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";import{DRACOLoader as BA}from"three/examples/jsm/loaders/DRACOLoader.js";var bo;function DA(){return bo||(bo=new BA,bo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),bo.decoderPending}async function GA(n){if(bo){let r={attributeIDs:bo.defaultAttributeIDs,attributeTypes:bo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await bo.decodeGeometry(new Int8Array(n).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function Lg(n,r){let[e,t]=ac(Ba.deserialize(new Uint8Array(n)));km(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 DA();for(let i of o){let s=await GA(Ze(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 r&&r(e),t.result().data}import{Mesh as B7}from"three";import{mergeBufferGeometries as R7}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Bg(n){let r;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)r=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=r}import{Color as Dg,ShaderLib as RA}from"three";function Gg(n){let r=new Set;return n.traverse(e=>{if(e instanceof dr)if(Re(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);if(VA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Dg,specularColor:new Dg});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},RA.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 zA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function VA(n){return n.getLayersOfType("transmission").length>0}function zA(n){let r=0;return n.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function Rg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Vg(n){let r=[],e=(t,o=0)=>{let i=o>0?t+o:t;return r.includes(i)?e(t,o+1):i};return n.traverse(t=>{if(r.includes(t.name)){let o=t.name,i=e(t.name);if(t.name=i,t.isMesh){let s=t;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))}}r.push(t.name)}),n}import{mergeBufferGeometries as FA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function zg(n){let r=[];return n.traverse(e=>{e instanceof Ci&&r.push(e)}),r.forEach(e=>{let t=e.object,i=e.children.map(l=>{l.updateMatrix();let c=l.geometry.clone().applyMatrix4(l.matrix);return l.matrix.determinant()<0&&Bg(c),c}),s=FA(e.parameters.hideBase?i:[t instanceof lt?t.geometry:[],...i]);t instanceof lt&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:ky})}),n}function Fg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function jg(n){Object.values(n.shared.materials).forEach(r=>{mu(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?mu(e.material):"materials"in e&&e.materials.forEach(t=>{mu(t)})})}function mu(n){if(typeof n=="string")return;let r=[];n.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{n.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var Wg=Ws(Ug(),1),Hg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",hu=class extends kA{load(r,e,t,o=console.error){let i=new jA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Hg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Hg),i.load(r,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)}},t,o)}async parse(r){let e=await Lg(r,jg);e.version&&(0,Wg.default)(e.version,"0.9.350")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Wy(e)&&cy(),rg(e)&&Fy()].filter(Boolean));let t=new jo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Gi(e.scene,t);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&&gg(s)&&Object.assign(s,{makeDefault:!0})}return o=zg(o),o=Gg(o),o=Rg(o),o=Vg(o),o=Fg(o),o}};export{hu as default};