@splinetool/loader 0.9.345 → 0.9.347

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,16 +1,16 @@
1
- var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDescriptor;var qg=Object.getOwnPropertyNames;var $g=Object.getPrototypeOf,Yg=Object.prototype.hasOwnProperty;var Gs=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),Xg=(n,r)=>{for(var e in r)kl(n,e,{get:r[e],enumerable:!0})},Kg=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of qg(r))!Yg.call(n,o)&&o!==e&&kl(n,o,{get:()=>r[o],enumerable:!(t=Wg(r,o))||t.enumerable});return n};var Rs=(n,r,e)=>(e=n!=null?Hg($g(n)):{},Kg(r||!n||!n.__esModule?kl(e,"default",{value:n,enumerable:!0}):e,n));var Dm=Gs((xc,Bm)=>{(function(n,r){typeof xc=="object"?Bm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(xc,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 Fm=Gs((Ua,jm)=>{(function(n,r){typeof Ua=="object"&&typeof jm<"u"?r(Ua):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Ua,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 C,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 I=0;I<50;I++){for(C=!1,c=l;0<=c;c--){if(Math.abs(w[c])<=o){C=!0;break}if(Math.abs(P[c-1])<=o)break}if(!C){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 Ty=Gs(_l=>{(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 C=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"?C():(p._playLock=!0,p.once("resume",C),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 I=window&&window.ejecta||!x.readyState&&r._navigator.isCocoonJS;if(x.readyState>=3||I)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 _l<"u"&&(_l.Howler=r,_l.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 Bg=Gs(($X,Lg)=>{Lg.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 CA,Loader as NA}from"three";var Ce=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,Ce.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,Ce.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,Ce.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function vi(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"&&vi(t)}return Object.freeze(n)}function du(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 Ho=class extends Error{};function Vs(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function cr(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 Wo(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 uu(){return typeof process<"u"}function pu(n,r){for(let e of n)r(e.id,e.data)!==!0&&pu(e.children,r)}function fu(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)fu(e,r)}var Ue=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ue.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(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&&fu(o,t)}}traverse(e){pu(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,Ue.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 Ho("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)=>du(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 cr(0,o,o);{let s=i[0].fi;return cr(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 cr(c,c+o,o)}else return cr(s.fi,l.fi,o)}}};var qo;(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})(qo||(qo={}));var he=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,he.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vi(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 uu()||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 cr(0,t,t);{let i=o[0].fi;return cr(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 cr(l,l+t,t)}else return cr(i.fi,s.fi,t)}}};function $o(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&&!$o(t))return null;o+=1}t=t?Vs(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=Vs(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=Vs(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}}},Mr;(t=>{function n(o,i){return bi(o,i)??o}t.apply=n;function r(o,i){return Wl(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=ut.zoomOnce(c,l[s]),c===void 0)return i;if(!$o(c))return;s+=1}if(c===void 0)return i;if(!!$o(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=Hl([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(Mr||(Mr={}));function Hl(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Hl(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 Zg(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=bi(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 bi(n,r){if(!$o(r))return r;if(n instanceof Ue){let e=Hl(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return Zg(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=bi(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 Wl(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=bi(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 Wl(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!$o(r))return r;if(!$o(n))return Mr.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=Wl(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function mu(n,r){let e={cur:[],result:[],len:0};return n=Si(n,r,e)??n,[n,e.result]}function js(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function Fs(n){n&&(n.len-=1)}function Qg(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function hu(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=Si(i.data,r,js(e,s));Fs(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=hu(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 Jg(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=Si(i.data,r,js(e,s));return Fs(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 Si(n,r,e){if(n instanceof Ue){let t=hu(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return Jg(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=Si(i,r,js(e,s));return Fs(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"&&!Wo(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=Si(s,r,js(e,i));Fs(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");Qg(e)}return t}else return}}var zs;(r=>{function n(e,t){let o=ut.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})(zs||(zs={}));var rt;(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 Ue||c instanceof he||c instanceof Ce?p=c.runOp(u):p=qo.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 Ue){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 Ce){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 Ue){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})(rt||(rt={}));var ql;(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=>rt.subsumed(p,f))),...a]}c.compress=o;function i(u,a){return u.every(d=>a.every(p=>rt.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=ut.zoom(d,[...m.path,m.id]),y=rt.apply(d,{...m,type:2});if(y!==null){d=y.data;let[g,v]=mu(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=rt.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof Ho)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=l})(ql||(ql={}));var yu=Symbol(),ex=Symbol(),ks=Symbol(),go=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Us);){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[ks];t&&t(),delete this._children[r]}}}},Yl=class extends go{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,qo.runOp(this._current,r),r.path)}},Xl=class extends go{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,Ce.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},gu={get(n,r){if(r===ks)return()=>{n._parent=null};if(r===yu)return n._current;if(r===ex)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=Hs(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]}}},tx={...gu,set(n,r,e){let t={type:0,props:{[r]:Ye(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}},rx={...gu,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}},Yo=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ks]=()=>{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=Hs(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)}},Xo=class extends go{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[ks]=()=>{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=Hs(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 $l(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&&ut.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var Us=class extends go{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){$l(this.ts,e,r),$l(this.actual,t,r),$l(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Hs(n,r,e){return e instanceof Ue?new Yo(n,r,e):e instanceof he?new Xo(n,r,e):e instanceof Ce?new Proxy(new Xl(n,r,e),rx):e!==null&&typeof e=="object"?Wo(e)?e:new Proxy(new Yl(n,r,e),tx):e}function Kl(n){let r=new Us(n);return[Hs(r,"",n),r]}function Ko(n,r){let[e,t]=Kl(n);return r(e),t.result()}function Ye(n){return n instanceof Yo||n instanceof Xo?n._current:n!==null&&typeof n=="object"?n[yu]:n}var ut;(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 Ue||i instanceof Yo)&&typeof s=="string")return i.data(s);if((i instanceof he||i instanceof Xo)&&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})(ut||(ut={}));function xu(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 Wt(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 Ws=class{},wi=class extends Ws{constructor(e){super();this.id=e}},_i=class extends Ws{constructor(e){super();this.data=e}};var Ql;try{Ql=new TextDecoder}catch{}var ne,Yr,N=0;var Ou=[],Jl=Ou,ec=0,vt={},we,$r,Vt=0,dr=0,Nt,Lr,pt=[],Oe,vu={useRecords:!1,mapsAsObjects:!0},Ti=class{},rc=new Ti;rc.name="MessagePack 0xC1";var Zo=!1,ur=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 Eu(()=>($s(),this?this.unpack(r,e):ur.prototype.unpack.call(vu,r,e)));Yr=e>-1?e:r.length,N=0,ec=0,dr=0,$r=null,Jl=Ou,Nt=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 ur){if(vt=this,this.structures)return we=this.structures,qs();(!we||we.length>0)&&(we=[])}else vt=vu,(!we||we.length>0)&&(we=[]);return qs()}unpackMultiple(r,e){let t,o=0;try{Zo=!0;let i=r.length,s=this?this.unpack(r,i):Ks.unpack(r,i);if(e){for(e(s);N<i;)if(o=N,e(qs())===!1)return}else{for(t=[s];N<i;)o=N,t.push(qs());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{Zo=!1,$s()}}_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 qs(){try{if(!vt.trusted&&!Zo){let r=we.sharedLength||0;r<we.length&&(we.length=r)}let n=Ge();if(N==Yr)we.restoreStructures&&bu(),we=null,ne=null,Lr&&(Lr=null);else if(N>Yr){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!Zo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw we.restoreStructures&&bu(),$s(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function bu(){for(let n in we.restoreStructures)we[n]=we.restoreStructures[n];we.restoreStructures=null}function Ge(){let n=ne[N++];if(n<160)if(n<128){if(n<64)return n;{let r=we[n&63]||vt.getStructures&&Au()[n&63];return r?(r.read||(r.read=oc(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Cu()]=Ge();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ge(),Ge());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ge();return r}else if(n<192){let r=n-160;if(dr>=N)return $r.slice(N-Vt,(N+=r)-Vt);if(dr==0&&Yr<140){let e=r<16?nc(r):Iu(r);if(e!=null)return e}return tc(r)}else{let r;switch(n){case 192:return null;case 193:return Nt?(r=Ge(),r>0?Nt[1].slice(Nt.position1,Nt.position1+=r):Nt[0].slice(Nt.position0,Nt.position0-=r)):rc;case 194:return!1;case 195:return!0;case 196:return Zl(ne[N++]);case 197:return r=Oe.getUint16(N),N+=2,Zl(r);case 198:return r=Oe.getUint32(N),N+=4,Zl(r);case 199:return xo(ne[N++]);case 200:return r=Oe.getUint16(N),N+=2,xo(r);case 201:return r=Oe.getUint32(N),N+=4,xo(r);case 202:if(r=Oe.getFloat32(N),vt.useFloat32>2){let e=Xs[(ne[N]&127)<<1|ne[N+1]>>7];return N+=4,(e*r+(r>0?.5:-.5)>>0)/e}return N+=4,r;case 203:return r=Oe.getFloat64(N),N+=8,r;case 204:return ne[N++];case 205:return r=Oe.getUint16(N),N+=2,r;case 206:return r=Oe.getUint32(N),N+=4,r;case 207:return vt.int64AsNumber?(r=Oe.getUint32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigUint64(N),N+=8,r;case 208:return Oe.getInt8(N++);case 209:return r=Oe.getInt16(N),N+=2,r;case 210:return r=Oe.getInt32(N),N+=4,r;case 211:return vt.int64AsNumber?(r=Oe.getInt32(N)*4294967296,r+=Oe.getUint32(N+4)):r=Oe.getBigInt64(N),N+=8,r;case 212:if(r=ne[N++],r==114)return Pu(ne[N++]&63);{let e=pt[r];if(e)return e.read?(N++,e.read(Ge())):e.noBuffer?(N++,e()):e(ne.subarray(N,++N));throw new Error("Unknown extension "+r)}case 213:return r=ne[N],r==114?(N++,Pu(ne[N++]&63,ne[N++])):xo(2);case 214:return xo(4);case 215:return xo(8);case 216:return xo(16);case 217:return r=ne[N++],dr>=N?$r.slice(N-Vt,(N+=r)-Vt):nx(r);case 218:return r=Oe.getUint16(N),N+=2,dr>=N?$r.slice(N-Vt,(N+=r)-Vt):ix(r);case 219:return r=Oe.getUint32(N),N+=4,dr>=N?$r.slice(N-Vt,(N+=r)-Vt):sx(r);case 220:return r=Oe.getUint16(N),N+=2,wu(r);case 221:return r=Oe.getUint32(N),N+=4,wu(r);case 222:return r=Oe.getUint16(N),N+=2,_u(r);case 223:return r=Oe.getUint32(N),N+=4,_u(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 ox=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function oc(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>ox.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ge);return n.highByte===0&&(n.read=Su(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let s=n[o];t[s]=Ge()}return t}return e.count=0,n.highByte===0?Su(r,e):e}var Su=(n,r)=>function(){let e=ne[N++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=we[t]||Au()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=oc(o,n)),o.read()};function Au(){let n=Eu(()=>(ne=null,vt.getStructures()));return we=vt._mergeStructures(n,we)}var tc=Ys,nx=Ys,ix=Ys,sx=Ys;function Ys(n){let r;if(n<16&&(r=nc(n)))return r;if(n>64&&Ql)return Ql.decode(ne.subarray(N,N+=n));let e=N+n,t=[];for(r="";N<e;){let o=ne[N++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=ne[N++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=ne[N++]&63,s=ne[N++]&63;t.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ne[N++]&63,s=ne[N++]&63,l=ne[N++]&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+=Xe.apply(String,t),t.length=0)}return t.length>0&&(r+=Xe.apply(String,t)),r}function wu(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Ge();return r}function _u(n){if(vt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Cu()]=Ge();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(Ge(),Ge());return r}}var Xe=String.fromCharCode;function Iu(n){let r=N,e=new Array(n);for(let t=0;t<n;t++){let o=ne[N++];if((o&128)>0){N=r;return}e[t]=o}return Xe.apply(String,e)}function nc(n){if(n<4)if(n<2){if(n===0)return"";{let r=ne[N++];if((r&128)>1){N-=1;return}return Xe(r)}}else{let r=ne[N++],e=ne[N++];if((r&128)>0||(e&128)>0){N-=2;return}if(n<3)return Xe(r,e);let t=ne[N++];if((t&128)>0){N-=3;return}return Xe(r,e,t)}else{let r=ne[N++],e=ne[N++],t=ne[N++],o=ne[N++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return Xe(r,e,t,o);{let i=ne[N++];if((i&128)>0){N-=5;return}return Xe(r,e,t,o,i)}}else if(n<8){let i=ne[N++],s=ne[N++];if((i&128)>0||(s&128)>0){N-=6;return}if(n<7)return Xe(r,e,t,o,i,s);let l=ne[N++];if((l&128)>0){N-=7;return}return Xe(r,e,t,o,i,s,l)}else{let i=ne[N++],s=ne[N++],l=ne[N++],c=ne[N++];if((i&128)>0||(s&128)>0||(l&128)>0||(c&128)>0){N-=8;return}if(n<10){if(n===8)return Xe(r,e,t,o,i,s,l,c);{let u=ne[N++];if((u&128)>0){N-=9;return}return Xe(r,e,t,o,i,s,l,c,u)}}else if(n<12){let u=ne[N++],a=ne[N++];if((u&128)>0||(a&128)>0){N-=10;return}if(n<11)return Xe(r,e,t,o,i,s,l,c,u,a);let d=ne[N++];if((d&128)>0){N-=11;return}return Xe(r,e,t,o,i,s,l,c,u,a,d)}else{let u=ne[N++],a=ne[N++],d=ne[N++],p=ne[N++];if((u&128)>0||(a&128)>0||(d&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return Xe(r,e,t,o,i,s,l,c,u,a,d,p);{let f=ne[N++];if((f&128)>0){N-=13;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f)}}else{let f=ne[N++],m=ne[N++];if((f&128)>0||(m&128)>0){N-=14;return}if(n<15)return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m);let h=ne[N++];if((h&128)>0){N-=15;return}return Xe(r,e,t,o,i,s,l,c,u,a,d,p,f,m,h)}}}}}function Zl(n){return vt.copyBuffers?Uint8Array.prototype.slice.call(ne,N,N+=n):ne.subarray(N,N+=n)}function xo(n){let r=ne[N++];if(pt[r])return pt[r](ne.subarray(N,N+=n));throw new Error("Unknown extension type "+r)}var Tu=new Array(4096);function Cu(){let n=ne[N++];if(n>=160&&n<192){if(n=n-160,dr>=N)return $r.slice(N-Vt,(N+=n)-Vt);if(!(dr==0&&Yr<180))return tc(n)}else return N--,Ge();let r=(n<<5^(n>1?Oe.getUint16(N):n>0?ne[N]:0))&4095,e=Tu[r],t=N,o=N+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 N=t,e.string;o-=3,t=N}for(e=[],Tu[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?nc(n):Iu(n);return l!=null?e.string=l:e.string=tc(n)}var Pu=(n,r)=>{var e=Ge();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=we[n];return o&&o.isShared&&((we.restoreStructures||(we.restoreStructures=[]))[n]=o),we[n]=e,e.read=oc(e,t),e.read()},Nu=typeof self=="object"?self:global;pt[0]=()=>{};pt[0].noBuffer=!0;pt[101]=()=>{let n=Ge();return(Nu[n[0]]||Error)(n[1])};pt[105]=n=>{let r=Oe.getUint32(N-4);Lr||(Lr=new Map);let e=ne[N],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Lr.set(r,o);let i=Ge();return o.used?Object.assign(t,i):(o.target=i,i)};pt[112]=n=>{let r=Oe.getUint32(N-4),e=Lr.get(r);return e.used=!0,e.target};pt[115]=()=>new Set(Ge());var ic=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");pt[116]=n=>{let r=n[0],e=ic[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Nu[e](Uint8Array.prototype.slice.call(n,1).buffer)};pt[120]=()=>{let n=Ge();return new RegExp(n[0],n[1])};pt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=r-4,Nt=[Ge(),Ge()],Nt.position0=0,Nt.position1=0;let t=N;N=e;try{return Ge()}finally{N=t}};pt[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 Eu(n){let r=Yr,e=N,t=ec,o=Vt,i=dr,s=$r,l=Jl,c=Lr,u=Nt,a=new Uint8Array(ne.slice(0,Yr)),d=we,p=we.slice(0,we.length),f=vt,m=Zo,h=n();return Yr=r,N=e,ec=t,Vt=o,dr=i,$r=s,Jl=l,Lr=c,Nt=u,ne=a,Zo=m,we=d,we.splice(0,we.length,...p),vt=f,Oe=new DataView(ne.buffer,ne.byteOffset,ne.byteLength),h}function $s(){ne=null,Lr=null,we=null}function Mu(n){n.unpack?pt[n.type]=n.unpack:pt[n.type]=n}var Xs=new Array(147);for(let n=0;n<256;n++)Xs[n]=+("1e"+Math.floor(45.15-n*.30103));var Ks=new ur({useRecords:!1}),ax=Ks.unpack,lx=Ks.unpackMultiple,cx=Ks.unpack,Zs={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},dx=new Float32Array(1),BI=new Uint8Array(dx.buffer,0,4);var Qs;try{Qs=new TextEncoder}catch{}var Js,ac,ea=typeof Buffer<"u",sc=ea?Buffer.allocUnsafeSlow:Uint8Array,Gu=ea?Buffer:Uint8Array,Lu=ea?4294967296:2144337920,j,je,M=0,pr,fr=null,ux=/[\u0080-\uFFFF]/,Pi=Symbol("record-id"),vo=class extends ur{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,u=Gu.prototype.utf8Write?function(x,C,P){return j.utf8Write(x,C,P)}:Qs&&Qs.encodeInto?function(x,C){return Qs.encodeInto(x,j.subarray(C)).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,C){if(j||(j=new sc(8192),je=new DataView(j.buffer,0,8192),M=0),pr=j.length-10,pr-M<2048?(j=new sc(j.length),je=new DataView(j.buffer,0,j.length),pr=j.length-10,M=0):M=M+7&2147483640,t=M,l=a.structuredClone?new Map:null,a.bundleStrings?(fr=["",""],j[M++]=214,j[M++]=98,fr.position=M-t,M+=4):fr=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 I=0;I<P;I++){let O=o[I];if(!O)continue;let A,R=o.transitions;for(let U=0,q=O.length;U<q;U++){let te=O[U];A=R[te],A||(A=R[te]=Object.create(null)),R=A}R[Pi]=I+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),s=o||[];try{if(S(x),fr){je.setUint32(fr.position+t,M-fr.position-t);let P=fr;fr=null,S(P[0]),S(P[1])}if(a.offset=M,l&&l.idsToInsert){M+=l.idsToInsert.length*6,M>pr&&_(M),a.offset=M;let P=fx(j.subarray(t,M),l.idsToInsert);return l=null,P}return C&Vu?(j.start=t,j.end=M,j):j.subarray(t,M)}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,I=v.length;P<I;P++)v[P][Pi]=0;v=[]}if(i&&a.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let I=j.subarray(t,M);return a.saveStructures(o,c)===!1?(a._mergeStructures(a.getStructures()),a.pack(x)):(c=P,I)}}C&bx&&(M=t)}};let S=x=>{M>pr&&(j=_(M));var C=typeof x,P;if(C==="string"){let I=x.length;if(fr&&I>=8&&I<4096){let R=ux.test(x);fr[R?0:1]+=x,j[M++]=193,S(R?-I:I);return}let O;I<32?O=1:I<256?O=2:I<65536?O=3:O=5;let A=I*3;if(M+A>pr&&(j=_(M+A)),I<64||!u){let R,U,q,te=M+O;for(R=0;R<I;R++)U=x.charCodeAt(R),U<128?j[te++]=U:U<2048?(j[te++]=U>>6|192,j[te++]=U&63|128):(U&64512)===55296&&((q=x.charCodeAt(R+1))&64512)===56320?(U=65536+((U&1023)<<10)+(q&1023),R++,j[te++]=U>>18|240,j[te++]=U>>12&63|128,j[te++]=U>>6&63|128,j[te++]=U&63|128):(j[te++]=U>>12|224,j[te++]=U>>6&63|128,j[te++]=U&63|128);P=te-M-O}else P=u(x,M+O,A);P<32?j[M++]=160|P:P<256?(O<2&&j.copyWithin(M+2,M+1,M+1+P),j[M++]=217,j[M++]=P):P<65536?(O<3&&j.copyWithin(M+3,M+2,M+2+P),j[M++]=218,j[M++]=P>>8,j[M++]=P&255):(O<5&&j.copyWithin(M+5,M+3,M+3+P),j[M++]=219,je.setUint32(M,P),M+=4),M+=P}else if(C==="number")if(x>>>0===x)x<64?j[M++]=x:x<256?(j[M++]=204,j[M++]=x):x<65536?(j[M++]=205,j[M++]=x>>8,j[M++]=x&255):(j[M++]=206,je.setUint32(M,x),M+=4);else if(x>>0===x)x>=-32?j[M++]=256+x:x>=-128?(j[M++]=208,j[M++]=x+256):x>=-32768?(j[M++]=209,je.setInt16(M,x),M+=2):(j[M++]=210,je.setInt32(M,x),M+=4);else{let I;if((I=this.useFloat32)>0&&x<4294967296&&x>=-2147483648){j[M++]=202,je.setFloat32(M,x);let O;if(I<4||(O=x*Xs[(j[M]&127)<<1|j[M+1]>>7])>>0===O){M+=4;return}else M--}j[M++]=203,je.setFloat64(M,x),M+=8}else if(C==="object")if(!x)j[M++]=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)}j[M++]=214,j[M++]=112,je.setUint32(M,O.id),M+=4;return}else l.set(x,{offset:M-t})}let I=x.constructor;if(I===Object)T(x,!0);else if(I===Array){P=x.length,P<16?j[M++]=144|P:P<65536?(j[M++]=220,j[M++]=P>>8,j[M++]=P&255):(j[M++]=221,je.setUint32(M,P),M+=4);for(let O=0;O<P;O++)S(x[O])}else if(I===Map){P=x.size,P<16?j[M++]=128|P:P<65536?(j[M++]=222,j[M++]=P>>8,j[M++]=P&255):(j[M++]=223,je.setUint32(M,P),M+=4);for(let[O,A]of x)S(O),S(A)}else{for(let O=0,A=Js.length;O<A;O++){let R=ac[O];if(x instanceof R){let U=Js[O];if(U.write){U.type&&(j[M++]=212,j[M++]=U.type,j[M++]=0),S(U.write.call(this,x));return}let q=j,te=je,$=M;j=null;let W;try{W=U.pack.call(this,x,k=>(j=q,q=null,M+=k,M>pr&&_(M),{target:j,targetView:je,position:M-k}),S)}finally{q&&(j=q,je=te,M=$,pr=j.length-10)}W&&(W.length+M>pr&&_(W.length+M),M=px(W,j,M,U.type));return}}T(x,!x.hasOwnProperty)}}else if(C==="boolean")j[M++]=x?195:194;else if(C==="bigint"){if(x<BigInt(1)<<BigInt(63)&&x>=-(BigInt(1)<<BigInt(63)))j[M++]=211,je.setBigInt64(M,x);else if(x<BigInt(1)<<BigInt(64)&&x>0)j[M++]=207,je.setBigUint64(M,x);else if(this.largeBigIntToFloat)j[M++]=203,je.setFloat64(M,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");M+=8}else if(C==="undefined")this.encodeUndefinedAsNil?j[M++]=192:(j[M++]=212,j[M++]=0,j[M++]=0);else if(C==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?x=>{let C=Object.keys(x),P=C.length;P<16?j[M++]=128|P:P<65536?(j[M++]=222,j[M++]=P>>8,j[M++]=P&255):(j[M++]=223,je.setUint32(M,P),M+=4);let I;for(let O=0;O<P;O++)S(I=C[O]),S(x[I])}:(x,C)=>{j[M++]=222;let P=M-t;M+=2;let I=0;for(let O in x)(C||x.hasOwnProperty(O))&&(S(O),S(x[O]),I++);j[P+++t]=I>>8,j[P+t]=I&255}:x=>{let C=Object.keys(x),P,I=s.transitions||(s.transitions=Object.create(null)),O=0;for(let R=0,U=C.length;R<U;R++){let q=C[R];P=I[q],P||(P=I[q]=Object.create(null),O++),I=P}let A=I[Pi];if(A)A>=96&&h?(j[M++]=((A-=96)&31)+96,j[M++]=A>>5):j[M++]=A;else{A=s.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(C)?(A=s.nextOwnId,A<g||(A=y),s.nextOwnId=A+1):(A>=g&&(A=y),s.nextId=A+1);let R=C.highByte=A>=96&&h?A-96>>5:-1;I[Pi]=A,s[A-64]=C,A<y?(C.isShared=!0,s.sharedLength=A-63,i=!0,R>=0?(j[M++]=(A&31)+96,j[M++]=R):j[M++]=A):(R>=0?(j[M++]=213,j[M++]=114,j[M++]=(A&31)+96,j[M++]=R):(j[M++]=212,j[M++]=114,j[M++]=A),O&&(b+=w*O),v.length>=m&&(v.shift()[Pi]=0),v.push(I),S(C))}for(let R=0,U=C.length;R<U;R++)S(x[C[R]])},_=x=>{let C;if(x>16777216){if(x-t>Lu)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(Lu,Math.round(Math.max((x-t)*(x>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(x-t<<2,j.length-1)>>12)+1<<12;let P=new sc(C);return je=new DataView(P.buffer,0,C),j.copy?j.copy(P,0,t,x):P.set(j.slice(t,x)),M-=t,t=0,pr=P.length-10,j=P}}useBuffer(r){j=r,je=new DataView(j.buffer,j.byteOffset,j.byteLength),M=0}};ac=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ti];Js=[{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?Bu(n,16,r):Du(ea?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==Gu&&this.structuredClone?Bu(n,ic.indexOf(e.name),r):Du(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function Bu(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 Du(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 px(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 fx(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 Xr(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)");ac.unshift(n.Class),Js.unshift(n)}Mu(n)}var Ru=new vo({useRecords:!1}),mx=Ru.pack,hx=Ru.pack;var{NEVER:yx,ALWAYS:gx,DECIMAL_ROUND:xx,DECIMAL_FIT:vx}=Zs,Vu=512,bx=1024;var ju=new vo({structuredClone:!0});Xr({Class:Ce.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ce.prototype),n}});Xr({Class:he.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,he.prototype),n}});Xr({Class:Ue.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Ue.prototype),n}});Xr({Class:wi.prototype.constructor,type:4,write(n){return n.id},read(n){return new wi(n)}});Xr({Class:_i.prototype.constructor,type:5,write(n){return n.data},read(n){return new _i(n)}});Xr({Class:Le.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});function Sx(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 lc(n){if(Wo(n))return n;if(Array.isArray(n))return n.map(lc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=lc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var ta;(t=>{function n(o){return ju.pack(o)}t.serialize=n;function r(o){return ju.unpack(o)}t.deserialize=r;function e(o){return Sx(n(lc(o))).toString()}t.checksum=e})(ta||(ta={}));var Fu;(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})(Fu||(Fu={}));var Kr;(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})(Kr||(Kr={}));var zu;(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})(zu||(zu={}));var Zr;(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})(Zr||(Zr={}));var bt;(u=>{function n(a){return typeof a=="object"&&typeof a.r=="number"&&typeof a.g=="number"&&typeof a.b=="number"}u.isRGB=n,u.white={r:1,g:1,b:1},u.red={r:1,g:0,b:0},u.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}}u.toRgb255a1=o;function i(a){return{r:a.r,g:a.g,b:a.b}}u.clone=i;function s(a){return a=Math.floor(a),{r:(a>>16&255)/255,g:(a>>8&255)/255,b:(a&255)/255}}u.fromHex=s;function l(a,d){return a.r===d.r&&a.g===d.g&&a.b===d.b}u.equals=l;function c(a,d,p){return{r:a.r+(d.r-a.r)*p,g:a.g+(d.g-a.g)*p,b:a.b+(d.b-a.b)*p}}u.lerp=c})(bt||(bt={}));var qt;(l=>{l.white={...bt.white,a:1},l.transparent={...bt.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{...bt.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 bt.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})(qt||(qt={}));var ra;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ra||(ra={}));var Uu;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Uu||(Uu={}));var ku;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(ku||(ku={}));var $t;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})($t||($t={}));var bo;(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})(bo||(bo={}));var mr;(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(wx.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;_x.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;Tx.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;Px.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;Ox.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;Ax.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(mr||(mr={}));var oa;(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})(oa||(oa={}));var wx=["count"],_x=["radius","start","end","position","scale","rotation"],Tx=["position","scale","rotation"],Px=["count","size"],Ox=["count","position","scale","rotation"],Ax=["strength","scale","rotation","position","movement","seed","freqScale"];var na;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(na||(na={}));var ia;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:qt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5};if(t==="SpotLight")return{type:t,color:qt.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:qt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(ia||(ia={}));var cc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(cc||(cc={}));var dc;(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})(dc||(dc={}));var sa;(r=>r.defaultData={...dc.defaultData,...cc.defaultData})(sa||(sa={}));var Qo;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(Qo||(Qo={}));var Hu;(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==="light"}r.is=n})(Hu||(Hu={}));var Wu;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Wu||(Wu={}));var qu=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],$u=["wrapping","image","video"],ft;(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){switch(i){case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",alpha:.6,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function t(i){switch(i){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"video",projection:0,texture:{video:Qo.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:bt.fromHex(5526619)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1]],steps:[0,1],near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...bt.fromHex(6710886),a:1},colorB:{...bt.fromHex(6710886),a:1},colorC:{...bt.fromHex(16777215),a:1},colorD:{...bt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:qt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:qt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:qt.fromHexAndA(0,1),contourColor:qt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(ft||(ft={}));var St;(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:ft.defaultData("light",u),id:a}),p.push({fi:1,data:ft.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function s(u,a="phong",d="layer1",p="layer2"){let f=ft.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:ft.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerTextureData=s;function l(u,a="phong",d="layer1",p="layer2"){let f=ft.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:ft.defaultData("light",a),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=l})(St||(St={}));var Jo;(r=>{function n(){return{points:new he,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(Jo||(Jo={}));var en;(r=>{function n(){return{points:new he,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(en||(en={}));var uc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var aa;(r=>{function n(e,t){let o={...e};return Ix.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(aa||(aa={}));var la={shape:uc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},Ix=["depth","offset","angle","twist","startScale","endScale"];var Oi;(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})(Oi||(Oi={}));var ca;(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,aa.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ca||(ca={}));var Qr;(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:en.defaultData(),extrusion:la};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Jo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};if(e==="TextGeometry")return{type:e,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:"",textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};throw new Error("not implemented")}r.defaultData=n})(Qr||(Qr={}));function Yu(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Br(n,r){return Object.setPrototypeOf(n,r),n}function da(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 Cx=typeof global=="object"&&global&&global.Object===Object&&global,ua=Cx;var Nx=typeof self=="object"&&self&&self.Object===Object&&self,Ex=ua||Nx||Function("return this")(),ke=Ex;var Mx=ke.Symbol,Ke=Mx;var Ku=Object.prototype,Lx=Ku.hasOwnProperty,Bx=Ku.toString,Ai=Ke?Ke.toStringTag:void 0;function Dx(n){var r=Lx.call(n,Ai),e=n[Ai];try{n[Ai]=void 0;var t=!0}catch{}var o=Bx.call(n);return t&&(r?n[Ai]=e:delete n[Ai]),o}var Zu=Dx;var Gx=Object.prototype,Rx=Gx.toString;function Vx(n){return Rx.call(n)}var Qu=Vx;var jx="[object Null]",Fx="[object Undefined]",Ju=Ke?Ke.toStringTag:void 0;function zx(n){return n==null?n===void 0?Fx:jx:Ju&&Ju in Object(n)?Zu(n):Qu(n)}var Et=zx;function Ux(n){return n!=null&&typeof n=="object"}var ot=Ux;var kx="[object Symbol]";function Hx(n){return typeof n=="symbol"||ot(n)&&Et(n)==kx}var tn=Hx;function Wx(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 pa=Wx;var qx=Array.isArray,Re=qx;var $x=1/0,ep=Ke?Ke.prototype:void 0,tp=ep?ep.toString:void 0;function rp(n){if(typeof n=="string")return n;if(Re(n))return pa(n,rp)+"";if(tn(n))return tp?tp.call(n):"";var r=n+"";return r=="0"&&1/n==-$x?"-0":r}var op=rp;function Yx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Mt=Yx;function Xx(n){return n}var np=Xx;var Kx="[object AsyncFunction]",Zx="[object Function]",Qx="[object GeneratorFunction]",Jx="[object Proxy]";function e0(n){if(!Mt(n))return!1;var r=Et(n);return r==Zx||r==Qx||r==Kx||r==Jx}var fa=e0;var t0=ke["__core-js_shared__"],ma=t0;var ip=function(){var n=/[^.]+$/.exec(ma&&ma.keys&&ma.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function r0(n){return!!ip&&ip in n}var sp=r0;var o0=Function.prototype,n0=o0.toString;function i0(n){if(n!=null){try{return n0.call(n)}catch{}try{return n+""}catch{}}return""}var Dr=i0;var s0=/[\\^$.*+?()[\]{}|]/g,a0=/^\[object .+?Constructor\]$/,l0=Function.prototype,c0=Object.prototype,d0=l0.toString,u0=c0.hasOwnProperty,p0=RegExp("^"+d0.call(u0).replace(s0,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function f0(n){if(!Mt(n)||sp(n))return!1;var r=fa(n)?p0:a0;return r.test(Dr(n))}var ap=f0;function m0(n,r){return n?.[r]}var lp=m0;function h0(n,r){var e=lp(n,r);return ap(e)?e:void 0}var wt=h0;var y0=wt(ke,"WeakMap"),ha=y0;var cp=Object.create,g0=function(){function n(){}return function(r){if(!Mt(r))return{};if(cp)return cp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),dp=g0;function x0(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 up=x0;function v0(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var pp=v0;var b0=800,S0=16,w0=Date.now;function _0(n){var r=0,e=0;return function(){var t=w0(),o=S0-(t-e);if(e=t,o>0){if(++r>=b0)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var fp=_0;function T0(n){return function(){return n}}var mp=T0;var P0=function(){try{var n=wt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),rn=P0;var O0=rn?function(n,r){return rn(n,"toString",{configurable:!0,enumerable:!1,value:mp(r),writable:!0})}:np,hp=O0;var A0=fp(hp),yp=A0;function I0(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var gp=I0;var C0=9007199254740991,N0=/^(?:0|[1-9]\d*)$/;function E0(n,r){var e=typeof n;return r=r??C0,!!r&&(e=="number"||e!="symbol"&&N0.test(n))&&n>-1&&n%1==0&&n<r}var on=E0;function M0(n,r,e){r=="__proto__"&&rn?rn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var ya=M0;function L0(n,r){return n===r||n!==n&&r!==r}var nn=L0;var B0=Object.prototype,D0=B0.hasOwnProperty;function G0(n,r,e){var t=n[r];(!(D0.call(n,r)&&nn(t,e))||e===void 0&&!(r in n))&&ya(n,r,e)}var sn=G0;function R0(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?ya(e,l,c):sn(e,l,c)}return e}var hr=R0;var xp=Math.max;function V0(n,r,e){return r=xp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=xp(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),up(n,this,l)}}var vp=V0;var j0=9007199254740991;function F0(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=j0}var an=F0;function z0(n){return n!=null&&an(n.length)&&!fa(n)}var ga=z0;var U0=Object.prototype;function k0(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||U0;return n===e}var ln=k0;function H0(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var bp=H0;var W0="[object Arguments]";function q0(n){return ot(n)&&Et(n)==W0}var pc=q0;var Sp=Object.prototype,$0=Sp.hasOwnProperty,Y0=Sp.propertyIsEnumerable,X0=pc(function(){return arguments}())?pc:function(n){return ot(n)&&$0.call(n,"callee")&&!Y0.call(n,"callee")},cn=X0;function K0(){return!1}var wp=K0;var Pp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,_p=Pp&&typeof module=="object"&&module&&!module.nodeType&&module,Z0=_p&&_p.exports===Pp,Tp=Z0?ke.Buffer:void 0,Q0=Tp?Tp.isBuffer:void 0,J0=Q0||wp,So=J0;var ev="[object Arguments]",tv="[object Array]",rv="[object Boolean]",ov="[object Date]",nv="[object Error]",iv="[object Function]",sv="[object Map]",av="[object Number]",lv="[object Object]",cv="[object RegExp]",dv="[object Set]",uv="[object String]",pv="[object WeakMap]",fv="[object ArrayBuffer]",mv="[object DataView]",hv="[object Float32Array]",yv="[object Float64Array]",gv="[object Int8Array]",xv="[object Int16Array]",vv="[object Int32Array]",bv="[object Uint8Array]",Sv="[object Uint8ClampedArray]",wv="[object Uint16Array]",_v="[object Uint32Array]",Me={};Me[hv]=Me[yv]=Me[gv]=Me[xv]=Me[vv]=Me[bv]=Me[Sv]=Me[wv]=Me[_v]=!0;Me[ev]=Me[tv]=Me[fv]=Me[rv]=Me[mv]=Me[ov]=Me[nv]=Me[iv]=Me[sv]=Me[av]=Me[lv]=Me[cv]=Me[dv]=Me[uv]=Me[pv]=!1;function Tv(n){return ot(n)&&an(n.length)&&!!Me[Et(n)]}var Op=Tv;function Pv(n){return function(r){return n(r)}}var dn=Pv;var Ap=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ii=Ap&&typeof module=="object"&&module&&!module.nodeType&&module,Ov=Ii&&Ii.exports===Ap,fc=Ov&&ua.process,Av=function(){try{var n=Ii&&Ii.require&&Ii.require("util").types;return n||fc&&fc.binding&&fc.binding("util")}catch{}}(),Gr=Av;var Ip=Gr&&Gr.isTypedArray,Iv=Ip?dn(Ip):Op,xa=Iv;var Cv=Object.prototype,Nv=Cv.hasOwnProperty;function Ev(n,r){var e=Re(n),t=!e&&cn(n),o=!e&&!t&&So(n),i=!e&&!t&&!o&&xa(n),s=e||t||o||i,l=s?bp(n.length,String):[],c=l.length;for(var u in n)(r||Nv.call(n,u))&&!(s&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||on(u,c)))&&l.push(u);return l}var va=Ev;function Mv(n,r){return function(e){return n(r(e))}}var ba=Mv;var Lv=ba(Object.keys,Object),Cp=Lv;var Bv=Object.prototype,Dv=Bv.hasOwnProperty;function Gv(n){if(!ln(n))return Cp(n);var r=[];for(var e in Object(n))Dv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Np=Gv;function Rv(n){return ga(n)?va(n):Np(n)}var un=Rv;function Vv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Ep=Vv;var jv=Object.prototype,Fv=jv.hasOwnProperty;function zv(n){if(!Mt(n))return Ep(n);var r=ln(n),e=[];for(var t in n)t=="constructor"&&(r||!Fv.call(n,t))||e.push(t);return e}var Mp=zv;function Uv(n){return ga(n)?va(n,!0):Mp(n)}var pn=Uv;var kv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Hv=/^\w*$/;function Wv(n,r){if(Re(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||tn(n)?!0:Hv.test(n)||!kv.test(n)||r!=null&&n in Object(r)}var Lp=Wv;var qv=wt(Object,"create"),Rr=qv;function $v(){this.__data__=Rr?Rr(null):{},this.size=0}var Bp=$v;function Yv(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var Dp=Yv;var Xv="__lodash_hash_undefined__",Kv=Object.prototype,Zv=Kv.hasOwnProperty;function Qv(n){var r=this.__data__;if(Rr){var e=r[n];return e===Xv?void 0:e}return Zv.call(r,n)?r[n]:void 0}var Gp=Qv;var Jv=Object.prototype,eb=Jv.hasOwnProperty;function tb(n){var r=this.__data__;return Rr?r[n]!==void 0:eb.call(r,n)}var Rp=tb;var rb="__lodash_hash_undefined__";function ob(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Rr&&r===void 0?rb:r,this}var Vp=ob;function fn(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])}}fn.prototype.clear=Bp;fn.prototype.delete=Dp;fn.prototype.get=Gp;fn.prototype.has=Rp;fn.prototype.set=Vp;var mc=fn;function nb(){this.__data__=[],this.size=0}var jp=nb;function ib(n,r){for(var e=n.length;e--;)if(nn(n[e][0],r))return e;return-1}var Jr=ib;var sb=Array.prototype,ab=sb.splice;function lb(n){var r=this.__data__,e=Jr(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():ab.call(r,e,1),--this.size,!0}var Fp=lb;function cb(n){var r=this.__data__,e=Jr(r,n);return e<0?void 0:r[e][1]}var zp=cb;function db(n){return Jr(this.__data__,n)>-1}var Up=db;function ub(n,r){var e=this.__data__,t=Jr(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var kp=ub;function mn(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])}}mn.prototype.clear=jp;mn.prototype.delete=Fp;mn.prototype.get=zp;mn.prototype.has=Up;mn.prototype.set=kp;var eo=mn;var pb=wt(ke,"Map"),to=pb;function fb(){this.size=0,this.__data__={hash:new mc,map:new(to||eo),string:new mc}}var Hp=fb;function mb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Wp=mb;function hb(n,r){var e=n.__data__;return Wp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var ro=hb;function yb(n){var r=ro(this,n).delete(n);return this.size-=r?1:0,r}var qp=yb;function gb(n){return ro(this,n).get(n)}var $p=gb;function xb(n){return ro(this,n).has(n)}var Yp=xb;function vb(n,r){var e=ro(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var Xp=vb;function hn(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])}}hn.prototype.clear=Hp;hn.prototype.delete=qp;hn.prototype.get=$p;hn.prototype.has=Yp;hn.prototype.set=Xp;var wo=hn;var bb="Expected a function";function hc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(bb);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(hc.Cache||wo),e}hc.Cache=wo;var Kp=hc;var Sb=500;function wb(n){var r=Kp(n,function(t){return e.size===Sb&&e.clear(),t}),e=r.cache;return r}var Zp=wb;var _b=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Tb=/\\(\\)?/g,Pb=Zp(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(_b,function(e,t,o,i){r.push(o?i.replace(Tb,"$1"):t||e)}),r}),Qp=Pb;function Ob(n){return n==null?"":op(n)}var Jp=Ob;function Ab(n,r){return Re(n)?n:Lp(n,r)?[n]:Qp(Jp(n))}var jt=Ab;var Ib=1/0;function Cb(n){if(typeof n=="string"||tn(n))return n;var r=n+"";return r=="0"&&1/n==-Ib?"-0":r}var oo=Cb;function Nb(n,r){r=jt(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[oo(r[e++])];return e&&e==t?n:void 0}var Sa=Nb;function Eb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var yn=Eb;var ef=Ke?Ke.isConcatSpreadable:void 0;function Mb(n){return Re(n)||cn(n)||!!(ef&&n&&n[ef])}var tf=Mb;function rf(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=tf),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?rf(l,r-1,e,t,o):yn(o,l):t||(o[o.length]=l)}return o}var of=rf;function Lb(n){var r=n==null?0:n.length;return r?of(n,1):[]}var nf=Lb;function Bb(n){return yp(vp(n,void 0,nf),n+"")}var wa=Bb;var Db=ba(Object.getPrototypeOf,Object),gn=Db;var Gb="[object Object]",Rb=Function.prototype,Vb=Object.prototype,sf=Rb.toString,jb=Vb.hasOwnProperty,Fb=sf.call(Object);function zb(n){if(!ot(n)||Et(n)!=Gb)return!1;var r=gn(n);if(r===null)return!0;var e=jb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&sf.call(e)==Fb}var af=zb;function Ub(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 lf=Ub;function kb(){this.__data__=new eo,this.size=0}var cf=kb;function Hb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var df=Hb;function Wb(n){return this.__data__.get(n)}var uf=Wb;function qb(n){return this.__data__.has(n)}var pf=qb;var $b=200;function Yb(n,r){var e=this.__data__;if(e instanceof eo){var t=e.__data__;if(!to||t.length<$b-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 ff=Yb;function xn(n){var r=this.__data__=new eo(n);this.size=r.size}xn.prototype.clear=cf;xn.prototype.delete=df;xn.prototype.get=uf;xn.prototype.has=pf;xn.prototype.set=ff;var vn=xn;function Xb(n,r){return n&&hr(r,un(r),n)}var mf=Xb;function Kb(n,r){return n&&hr(r,pn(r),n)}var hf=Kb;var vf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,yf=vf&&typeof module=="object"&&module&&!module.nodeType&&module,Zb=yf&&yf.exports===vf,gf=Zb?ke.Buffer:void 0,xf=gf?gf.allocUnsafe:void 0;function Qb(n,r){if(r)return n.slice();var e=n.length,t=xf?xf(e):new n.constructor(e);return n.copy(t),t}var bf=Qb;function Jb(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 Sf=Jb;function eS(){return[]}var _a=eS;var tS=Object.prototype,rS=tS.propertyIsEnumerable,wf=Object.getOwnPropertySymbols,oS=wf?function(n){return n==null?[]:(n=Object(n),Sf(wf(n),function(r){return rS.call(n,r)}))}:_a,bn=oS;function nS(n,r){return hr(n,bn(n),r)}var _f=nS;var iS=Object.getOwnPropertySymbols,sS=iS?function(n){for(var r=[];n;)yn(r,bn(n)),n=gn(n);return r}:_a,Ta=sS;function aS(n,r){return hr(n,Ta(n),r)}var Tf=aS;function lS(n,r,e){var t=r(n);return Re(n)?t:yn(t,e(n))}var Pa=lS;function cS(n){return Pa(n,un,bn)}var Ci=cS;function dS(n){return Pa(n,pn,Ta)}var Oa=dS;var uS=wt(ke,"DataView"),Aa=uS;var pS=wt(ke,"Promise"),Ia=pS;var fS=wt(ke,"Set"),Ca=fS;var Pf="[object Map]",mS="[object Object]",Of="[object Promise]",Af="[object Set]",If="[object WeakMap]",Cf="[object DataView]",hS=Dr(Aa),yS=Dr(to),gS=Dr(Ia),xS=Dr(Ca),vS=Dr(ha),_o=Et;(Aa&&_o(new Aa(new ArrayBuffer(1)))!=Cf||to&&_o(new to)!=Pf||Ia&&_o(Ia.resolve())!=Of||Ca&&_o(new Ca)!=Af||ha&&_o(new ha)!=If)&&(_o=function(n){var r=Et(n),e=r==mS?n.constructor:void 0,t=e?Dr(e):"";if(t)switch(t){case hS:return Cf;case yS:return Pf;case gS:return Of;case xS:return Af;case vS:return If}return r});var Vr=_o;var bS=Object.prototype,SS=bS.hasOwnProperty;function wS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&SS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Nf=wS;var _S=ke.Uint8Array,Sn=_S;function TS(n){var r=new n.constructor(n.byteLength);return new Sn(r).set(new Sn(n)),r}var wn=TS;function PS(n,r){var e=r?wn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Ef=PS;var OS=/\w*$/;function AS(n){var r=new n.constructor(n.source,OS.exec(n));return r.lastIndex=n.lastIndex,r}var Mf=AS;var Lf=Ke?Ke.prototype:void 0,Bf=Lf?Lf.valueOf:void 0;function IS(n){return Bf?Object(Bf.call(n)):{}}var Df=IS;function CS(n,r){var e=r?wn(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Gf=CS;var NS="[object Boolean]",ES="[object Date]",MS="[object Map]",LS="[object Number]",BS="[object RegExp]",DS="[object Set]",GS="[object String]",RS="[object Symbol]",VS="[object ArrayBuffer]",jS="[object DataView]",FS="[object Float32Array]",zS="[object Float64Array]",US="[object Int8Array]",kS="[object Int16Array]",HS="[object Int32Array]",WS="[object Uint8Array]",qS="[object Uint8ClampedArray]",$S="[object Uint16Array]",YS="[object Uint32Array]";function XS(n,r,e){var t=n.constructor;switch(r){case VS:return wn(n);case NS:case ES:return new t(+n);case jS:return Ef(n,e);case FS:case zS:case US:case kS:case HS:case WS:case qS:case $S:case YS:return Gf(n,e);case MS:return new t;case LS:case GS:return new t(n);case BS:return Mf(n);case DS:return new t;case RS:return Df(n)}}var Rf=XS;function KS(n){return typeof n.constructor=="function"&&!ln(n)?dp(gn(n)):{}}var Vf=KS;var ZS="[object Map]";function QS(n){return ot(n)&&Vr(n)==ZS}var jf=QS;var Ff=Gr&&Gr.isMap,JS=Ff?dn(Ff):jf,zf=JS;var e1="[object Set]";function t1(n){return ot(n)&&Vr(n)==e1}var Uf=t1;var kf=Gr&&Gr.isSet,r1=kf?dn(kf):Uf,Hf=r1;var o1=1,n1=2,i1=4,Wf="[object Arguments]",s1="[object Array]",a1="[object Boolean]",l1="[object Date]",c1="[object Error]",qf="[object Function]",d1="[object GeneratorFunction]",u1="[object Map]",p1="[object Number]",$f="[object Object]",f1="[object RegExp]",m1="[object Set]",h1="[object String]",y1="[object Symbol]",g1="[object WeakMap]",x1="[object ArrayBuffer]",v1="[object DataView]",b1="[object Float32Array]",S1="[object Float64Array]",w1="[object Int8Array]",_1="[object Int16Array]",T1="[object Int32Array]",P1="[object Uint8Array]",O1="[object Uint8ClampedArray]",A1="[object Uint16Array]",I1="[object Uint32Array]",Ee={};Ee[Wf]=Ee[s1]=Ee[x1]=Ee[v1]=Ee[a1]=Ee[l1]=Ee[b1]=Ee[S1]=Ee[w1]=Ee[_1]=Ee[T1]=Ee[u1]=Ee[p1]=Ee[$f]=Ee[f1]=Ee[m1]=Ee[h1]=Ee[y1]=Ee[P1]=Ee[O1]=Ee[A1]=Ee[I1]=!0;Ee[c1]=Ee[qf]=Ee[g1]=!1;function Na(n,r,e,t,o,i){var s,l=r&o1,c=r&n1,u=r&i1;if(e&&(s=o?e(n,t,o,i):e(n)),s!==void 0)return s;if(!Mt(n))return n;var a=Re(n);if(a){if(s=Nf(n),!l)return pp(n,s)}else{var d=Vr(n),p=d==qf||d==d1;if(So(n))return bf(n,l);if(d==$f||d==Wf||p&&!o){if(s=c||p?{}:Vf(n),!l)return c?Tf(n,hf(s,n)):_f(n,mf(s,n))}else{if(!Ee[d])return o?n:{};s=Rf(n,d,l)}}i||(i=new vn);var f=i.get(n);if(f)return f;i.set(n,s),Hf(n)?n.forEach(function(y){s.add(Na(y,r,e,y,n,i))}):zf(n)&&n.forEach(function(y,g){s.set(g,Na(y,r,e,g,n,i))});var m=u?c?Oa:Ci:c?pn:un,h=a?void 0:m(n);return gp(h||n,function(y,g){h&&(g=y,y=n[g]),sn(s,g,Na(y,r,e,g,n,i))}),s}var Ea=Na;var C1=1,N1=4;function E1(n){return Ea(n,C1|N1)}var jr=E1;var M1="__lodash_hash_undefined__";function L1(n){return this.__data__.set(n,M1),this}var Yf=L1;function B1(n){return this.__data__.has(n)}var Xf=B1;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=Yf;Ma.prototype.has=Xf;var Kf=Ma;function D1(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 Zf=D1;function G1(n,r){return n.has(r)}var Qf=G1;var R1=1,V1=2;function j1(n,r,e,t,o,i){var s=e&R1,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&V1?new Kf: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(!Zf(r,function(g,v){if(!Qf(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 La=j1;function F1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var Jf=F1;function z1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var em=z1;var U1=1,k1=2,H1="[object Boolean]",W1="[object Date]",q1="[object Error]",$1="[object Map]",Y1="[object Number]",X1="[object RegExp]",K1="[object Set]",Z1="[object String]",Q1="[object Symbol]",J1="[object ArrayBuffer]",ew="[object DataView]",tm=Ke?Ke.prototype:void 0,yc=tm?tm.valueOf:void 0;function tw(n,r,e,t,o,i,s){switch(e){case ew:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case J1:return!(n.byteLength!=r.byteLength||!i(new Sn(n),new Sn(r)));case H1:case W1:case Y1:return nn(+n,+r);case q1:return n.name==r.name&&n.message==r.message;case X1:case Z1:return n==r+"";case $1:var l=Jf;case K1:var c=t&U1;if(l||(l=em),n.size!=r.size&&!c)return!1;var u=s.get(n);if(u)return u==r;t|=k1,s.set(n,r);var a=La(l(n),l(r),t,o,i,s);return s.delete(n),a;case Q1:if(yc)return yc.call(n)==yc.call(r)}return!1}var rm=tw;var rw=1,ow=Object.prototype,nw=ow.hasOwnProperty;function iw(n,r,e,t,o,i){var s=e&rw,l=Ci(n),c=l.length,u=Ci(r),a=u.length;if(c!=a&&!s)return!1;for(var d=c;d--;){var p=l[d];if(!(s?p in r:nw.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 om=iw;var sw=1,nm="[object Arguments]",im="[object Array]",Ba="[object Object]",aw=Object.prototype,sm=aw.hasOwnProperty;function lw(n,r,e,t,o,i){var s=Re(n),l=Re(r),c=s?im:Vr(n),u=l?im:Vr(r);c=c==nm?Ba:c,u=u==nm?Ba:u;var a=c==Ba,d=u==Ba,p=c==u;if(p&&So(n)){if(!So(r))return!1;s=!0,a=!1}if(p&&!a)return i||(i=new vn),s||xa(n)?La(n,r,e,t,o,i):rm(n,r,c,e,t,o,i);if(!(e&sw)){var f=a&&sm.call(n,"__wrapped__"),m=d&&sm.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new vn),o(h,y,e,t,i)}}return p?(i||(i=new vn),om(n,r,e,t,o,i)):!1}var am=lw;function lm(n,r,e,t,o){return n===r?!0:n==null||r==null||!ot(n)&&!ot(r)?n!==n&&r!==r:am(n,r,e,t,lm,o)}var cm=lm;function cw(n,r){return n!=null&&r in Object(n)}var dm=cw;function dw(n,r,e){r=jt(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var s=oo(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&&an(o)&&on(s,o)&&(Re(n)||cn(n)))}var um=dw;function uw(n,r){return n!=null&&um(n,r,dm)}var pm=uw;function pw(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var fm=pw;function fw(n,r){return r.length<2?n:Sa(n,lf(r,0,-1))}var mm=fw;function mw(n,r){return cm(n,r)}var Ni=mw;function hw(n,r){return r=jt(r,n),n=mm(n,r),n==null||delete n[oo(fm(r))]}var hm=hw;function yw(n){return af(n)?void 0:n}var ym=yw;var gw=1,xw=2,vw=4,bw=wa(function(n,r){var e={};if(n==null)return e;var t=!1;r=pa(r,function(i){return i=jt(i,n),t||(t=i.length>1),i}),hr(n,Oa(n),e),t&&(e=Ea(e,gw|xw|vw,ym));for(var o=r.length;o--;)hm(e,r[o]);return e}),_n=bw;function Sw(n,r,e,t){if(!Mt(n))return n;r=jt(r,n);for(var o=-1,i=r.length,s=i-1,l=n;l!=null&&++o<i;){var c=oo(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=Mt(a)?a:on(r[o+1])?[]:{})}sn(l,c,u),l=l[c]}return n}var gm=Sw;function ww(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=Sa(n,s);e(l,s)&&gm(i,jt(s,n),l)}return i}var xm=ww;function _w(n,r){return xm(n,r,function(e,t){return pm(n,t)})}var vm=_w;var Tw=wa(function(n,r){return n==null?{}:vm(n,r)}),Tn=Tw;var bm;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(bm||(bm={}));var Pn;(o=>{o.identity={...ra.identity,hiddenMatrix:Zr.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 Yu({position:Kr.isEqual(i.position,s.position)?void 0:s.position,rotation:Kr.isEqual(i.rotation,s.rotation)?void 0:s.rotation,scale:Kr.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Zr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?void 0:s.hiddenMatrix})}o.diff=t})(Pn||(Pn={}));var Sm;(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]})(Sm||(Sm={}));var Lt;(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"},...Pn.identity,cloner:null})(Lt||(Lt={}));var wm;(r=>r.defaultData={type:"Empty",...Lt.defaultData})(wm||(wm={}));var _m;(r=>r.defaultData={type:"Component",...Lt.defaultData})(_m||(_m={}));var To;(r=>r.defaultData={type:"Mesh",...Lt.defaultData,...sa.defaultData})(To||(To={}));var On;(r=>r.defaultData={...Lt.defaultData,...Pn.identity,...bo.defaultData})(On||(On={}));var Tm;(r=>{function n(e){return{...Lt.defaultData,...ia.defaultData(e)}}r.defaultData=n})(Tm||(Tm={}));var An;(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})(An||(An={}));var no;(i=>{i.rootOverrideProps=["physics"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(s,l){return{...Lt.defaultData,...l,component:s,overrides:new Le,physics:void 0,type:"Instance"}}i.ofComponent=t;function o(s){let l=Pn.fromObject(s.data);return t(s.id,l)}i.fromComponentData=o})(no||(no={}));var Pm;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Zr.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},...bo.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",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("RectangleGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("BooleanGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Lt.defaultData,...To.defaultData,geometry:Qr.defaultData("TextGeometry"),material:St.defaultTwoLayerData("phong","layer1","layer2")}))(Pm||(Pm={}));var Po;(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})))):$t.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=Ko(l.material,c=>{if(typeof c!="string")for(let[u,a]of Object.entries(s.material.layers)){let d=c.layers.data(u);d&&ft.patch(d,a)}}).data),l.materials&&s.materials&&(l.materials=Ko(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&&ft.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(...oa.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,Pn.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})}),$t.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:ca.merge(l.geometry,s.geometry)}),(s.material||s.materials)&&(l=r(l,s)),l.cloner&&"cloner"in s&&Object.assign(l,{cloner:mr.merge(l.cloner,s.cloner)});else if(i.type==="Empty")l.cloner&&"cloner"in s&&Object.assign(l,{cloner:mr.merge(l.cloner,s.cloner)});else if(na.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=bt.clone(c.color))}return l}o.patch=t})(Po||(Po={}));var In;(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})(In||(In={}));var Da;(r=>r.defaultData={orbitControls:In.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})(Da||(Da={}));var Cn;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Cn||(Cn={}));var Ga;(t=>{function n(){let o={};return o["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Br(o,Ce.prototype)}t.defaultColors=n;function r(o){let i={};return o?.withAITexture&&(i["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Cn.emptyImage,name:"AI generated image"}),Br(i,Ce.prototype)}t.defaultImages=r;function e(){return{materials:new Ce,images:new Ce,videos:new Ce,colors:new Ce,audios:new Ce,fonts:new Ce,penumbraSize:[2,2,2]}}t.emptyData=e})(Ga||(Ga={}));import{MathUtils as Ra}from"three";function Om(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={...Tn(Ye(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={...Ye(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function Va(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function ja(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 Pw(n){Object.assign(n.scene.publish,{orbitControls:{...In.defaultData,...Ye(n.scene.publish.orbitControls)}})}function Ow(n){Object.assign(n.scene.publish.settings,{video:{...Da.defaultData.settings.video,...Ye(n.scene.publish.settings.video)}})}function Aw(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((qu.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))($u.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 Iw(n){n.scene.publish.withBackground=!0}function Cw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function Nw(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 Ew(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 Mw(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Ye(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Ye(e).booleanExclude!==!0)}})}function Lw(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 Bw(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=Ye(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=Ye(c).layers;e(u),c.layers=u}})})}function Am(n){n.layers===void 0&&Object.assign(n,St.defaultTwoLayerData("lambert"))}function gc(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={...Ye(r),colors:e,steps:t};Object.assign(r,o)}})}function Dw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Im(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&gc(t)}):"material"in e&&typeof e.material!="string"&&gc(e.material)}),Object.values(n.shared.materials).forEach(r=>gc(r))}function Gw(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 Rw(n){n.shared.audios=Br({},Ce.prototype)}function Vw(n){n.shared.videos=Br({},Ce.prototype)}function jw(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 Fw(n){Object.entries(Ye(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Ye(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function zw(n){n.scene.publish.settings.web.preload=!1}function Cm(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 Uw(n){n.shared.fonts=Br({},Ce.prototype)}function kw(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 Hw(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=St.defaultTwoLayerData("phong"),s=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:s.r,g:s.g,b:s.b},i.layers[1].data.alpha=o.alpha;let l=kw(o.font);n.shared.fonts[l]===void 0&&(n.shared.fonts[l]={name:l});let c={name:o.name,...Lt.defaultData,...To.defaultData,flatShading:!1,wireframe:!1,geometry:{...Qr.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:Ye(o.states),events:Ye(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Ye(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 Ww(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:Ra.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,Tn(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:Ra.generateUUID(),data:u},{fi:1,id:Ra.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function qw(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={...Tn(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={...Tn(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:Ra.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Nm(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=ft.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function Em(n){Va(n,Nm),ja(n,Nm)}function $w(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function Yw(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 Xw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=St.defaultTwoLayerData("phong"))})}function Kw(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 Zw(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 Qw(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 Jw(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function e_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function t_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}var Mm=37;function Lm(n){let r=n.schema??0;r!==Mm&&(console.warn("updating from ",r,"to ",Mm),r<1&&(ja(n,Om),Va(n,Om),n.schema=1),r<2&&(Pw(n),n.schema=2),r<3&&(Aw(n),n.schema=3),r<4&&(Iw(n),n.schema=4),r<5&&(Cw(n),n.schema=5),r<6&&(Nw(n),n.schema=6),r<7&&(Ew(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Im(n),n.schema=9),r<10&&(Dw(n),n.schema=10),r<11&&(Gw(n),n.schema=11),r<12&&(Im(n),n.schema=12),r<13&&(Rw(n),n.schema=13),r<14&&(jw(n),n.schema=14),r<15&&(Fw(n),n.schema=15),r<16&&(zw(n),n.schema=16),r<17&&(ja(n,Cm),Va(n,Cm),n.schema=17),r<18&&(ja(n,Am),Va(n,Am),n.schema=18),r<19&&(Ow(n),n.schema=19),r<20&&(Uw(n),Hw(n),n.schema=20),r<21&&(Ww(n),qw(n),n.schema=21),r<22&&(Em(n),n.schema=22),r<23&&($w(n),n.schema=23),r<24&&(Yw(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(Vw(n),r<25&&(n.schema=25)),r<26&&(Mw(n),n.schema=26),r<27&&(Lw(n),n.schema=27),r<28&&(Em(n),n.schema=28),r<29&&(Bw(n),n.schema=29),r<30&&(Xw(n),n.schema=30),r<31&&(Kw(n),n.schema=31),r<33&&(Zw(n),n.schema=33),r<34&&(Qw(n),n.schema=34),r<35&&(Jw(n),n.schema=35),r<36&&(e_(n),n.schema=36),r<37&&(t_(n),n.schema=37))}var ci=Rs(Dm());import{Object3D as _O,Vector3 as Gt,Euler as Yd,MathUtils as Yy,Matrix4 as Uo}from"three";var r_=.5*(Math.sqrt(3)-1),Li=(3-Math.sqrt(3))/6,o_=1/3,yr=1/6,sR=(Math.sqrt(5)-1)/4,aR=(5-Math.sqrt(5))/20,Bi=n=>Math.floor(n)|0,Gm=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]),vc=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 Fa(n=Math.random){let r=Vm(n),e=new Float64Array(r).map(o=>Gm[o%12*2]),t=new Float64Array(r).map(o=>Gm[o%12*2+1]);return function(i,s){let l=0,c=0,u=0,a=(i+s)*r_,d=Bi(i+a),p=Bi(s+a),f=(d+p)*Li,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+Li,S=g-b+Li,T=y-1+2*Li,_=g-1+2*Li,x=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let A=x+r[C],R=e[A],U=t[A];P*=P,l=P*P*(R*y+U*g)}let I=.5-w*w-S*S;if(I>=0){let A=x+v+r[C+b],R=e[A],U=t[A];I*=I,c=I*I*(R*w+U*S)}let O=.5-T*T-_*_;if(O>=0){let A=x+1+r[C+1],R=e[A],U=t[A];O*=O,u=O*O*(R*T+U*_)}return 70*(l+c+u)}}function Rm(n=Math.random){let r=Vm(n),e=new Float64Array(r).map(i=>vc[i%12*3]),t=new Float64Array(r).map(i=>vc[i%12*3+1]),o=new Float64Array(r).map(i=>vc[i%12*3+2]);return function(s,l,c){let u,a,d,p,f=(s+l+c)*o_,m=Bi(s+f),h=Bi(l+f),y=Bi(c+f),g=(m+h+y)*yr,v=m-g,b=h-g,w=y-g,S=s-v,T=l-b,_=c-w,x,C,P,I,O,A;S>=T?T>=_?(x=1,C=0,P=0,I=1,O=1,A=0):S>=_?(x=1,C=0,P=0,I=1,O=0,A=1):(x=0,C=0,P=1,I=1,O=0,A=1):T<_?(x=0,C=0,P=1,I=0,O=1,A=1):S<_?(x=0,C=1,P=0,I=0,O=1,A=1):(x=0,C=1,P=0,I=1,O=1,A=0);let R=S-x+yr,U=T-C+yr,q=_-P+yr,te=S-I+2*yr,$=T-O+2*yr,W=_-A+2*yr,k=S-1+3*yr,V=T-1+3*yr,G=_-1+3*yr,B=m&255,L=h&255,D=y&255,Y=.6-S*S-T*T-_*_;if(Y<0)u=0;else{let E=B+r[L+r[D]];Y*=Y,u=Y*Y*(e[E]*S+t[E]*T+o[E]*_)}let H=.6-R*R-U*U-q*q;if(H<0)a=0;else{let E=B+x+r[L+C+r[D+P]];H*=H,a=H*H*(e[E]*R+t[E]*U+o[E]*q)}let F=.6-te*te-$*$-W*W;if(F<0)d=0;else{let E=B+I+r[L+O+r[D+A]];F*=F,d=F*F*(e[E]*te+t[E]*$+o[E]*W)}let z=.6-k*k-V*V-G*G;if(z<0)p=0;else{let E=B+1+r[L+1+r[D+1]];z*=z,p=z*z*(e[E]*k+t[E]*V+o[E]*G)}return 32*(u+a+d+p)}}function Vm(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 n_}from"three";var Xt=new n_,za=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;Xt.a.fromBufferAttribute(r,o),Xt.b.fromBufferAttribute(r,o+1),Xt.c.fromBufferAttribute(r,o+2),i*=Xt.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),Xt.a.fromBufferAttribute(this.positionAttribute,r*3),Xt.b.fromBufferAttribute(this.positionAttribute,r*3+1),Xt.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Xt.a,o).addScaledVector(Xt.b,i).addScaledVector(Xt.c,1-(o+i)),Xt.getNormal(t),this}};import{Object3D as c_}from"three";var zm=Rs(Fm());import{Object3D as i_,Matrix4 as Fr}from"three";var s_=new Fr,a_=new Fr,l_=new Fr,Di;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Di||(Di={}));var Nn=n=>class extends n{constructor(){super(...arguments);this.hiddenMatrix=new Fr;this.matrixWorldRigid=new Fr;this.shearScale=new Fr;this.shearScaleInv=new Fr}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof i_&&(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)Di.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,zm.SVD)(o),c=s_.set(i[0][0],i[0][1],i[0][2],0,i[1][0],i[1][1],i[1][2],0,i[2][0],i[2][1],i[2][2],0,0,0,0,1),u=a_.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=l_.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 Fr().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof Fr?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 bc=class extends Nn(c_){},d_=n=>n.type==="Mesh",zr=class extends bc{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 zr(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 d_(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 ZT,BufferGeometry as QT,MeshBasicMaterial as JT}from"three";import{Matrix4 as XT,Mesh as KT}from"three";import{Matrix4 as Ha,Vector3 as y_,Euler as g_}from"three";import{Box3 as u_,Line3 as p_,Matrix4 as Sc,Vector3 as Bt}from"three";var Oo=new Bt,Ao=new Bt,En=new Sc,km=[new Bt(-1,1,1),new Bt(-1,-1,1),new Bt(1,-1,1),new Bt(1,1,1),new Bt(-1,1,-1),new Bt(-1,-1,-1),new Bt(1,-1,-1),new Bt(1,1,-1)],f_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],m_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Um=(n,r,e)=>{n.updateEntityBoxSize(Oo,Ao),En.copy(r).multiply(n.matrixWorld),Ao.x===0&&Ao.y===0&&Ao.z===0?e.push(new Bt(Oo.x,Oo.y,Oo.z).applyMatrix4(En)):km.forEach(t=>{e.push(t.clone().multiply(Ao).add(Oo).applyMatrix4(En))})},Gi=class extends u_{constructor(){super(...arguments);this.matrix=new Sc;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 Sc().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 Bt);return}Um(s,t,i)}}):Um(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(En.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Ao).multiplyScalar(.5),this.getCenter(Oo),En.copy(this.matrix).setPosition(Oo),this.vertices=km.map(e=>e.clone().multiply(Ao).applyMatrix4(En))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=f_.map(([e,t])=>new p_(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Bt))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=m_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Kt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as h_,CubicBezierCurve3 as wc,Vector3 as Zt}from"three";var Tc=class extends h_{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 Pc=.001;function Oc(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Pc}function _c(n,r){let e=new Zt(...n.position),t=new Zt(...n.controlNext.position),o=new Zt(...r.controlPrevious.position),i=new Zt(...r.position);return Oc(e,t,i)&&Oc(e,o,i)}function ka(n){let r=n.points.map(a=>new Zt(...a.data.position)),e=[n.points[0]],t=new Zt(...e[0].data.position);for(let a=0;a<n.points.length-1;a++)Oc(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 Zt(...d.position),f=new Zt(...d.controlPrevious.position),m=new Zt(...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 Zt(...v.position),S=new Zt(...b.position),T=w.clone().sub(p).normalize(),_=S.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let x=_c(v,d),C=_c(d,b);if(!x||!C)l[a]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),I=P.clone().cross(T).length()/T.dot(P);l[a]={...h,tan:I,removedLength:d.roundness/I}}}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(!_c(e[d].data,e[p].data))f.position.distanceTo(m.position)>Pc&&(h=new wc(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)>Pc&&(h=new wc(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),C=m.clone().lerp(_,4/3);c[2*a]=new wc(f,x,C,m)}let u=new Tc;return c.forEach(a=>{a&&u.add(a)}),u}var Ie;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Ie||(Ie={}));var Ri=n=>Ie.is(n),x_={type:"completeState",isfromEntity:!0},Wa=n=>class extends Nn(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 Gi;this._recursiveBBox=new Gi;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(Ie.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(Ie.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)Po.toOps(this.data,s.data).forEach(c=>{let u=zs.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=Po.patch(this.data,s),Po.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=>{Ri(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(Ie.is(o[i]))return o[i];if(Ie.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Ie.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)Ri(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Ie.is(o)&&t(o)})}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let s of this.children)Ri(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ri(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=>Ri(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 _n(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??Zr.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)Ie.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Ie.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return _n(o,t)}updateByOp(t,o,i,s){let l=this.data;this.data=o;let c=t,u=Wt(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=ut.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=ut.removeOverridden(t.path,t.props,a);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,Po.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Wt(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(Mr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...a]);if(p){let f=ut.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=An.resolve(o.overrides,a),p.updateByOp(t,rt.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 no.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(a={...t,props:d})}else for(let d of no.rootOverrideProps)if(Wt(t.path,[d])){a=t;break}a!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=Mr.filterOp(d.overrideData,a);p&&d.updateByOp(p,rt.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=Mr.filterOp(d.overrideData,t);if(p){let f;l===d.data&&t===p?f=o:f=rt.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&&!$t.is(t.props.type)&&Kt.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Kt.changeEntityProptotype(this,o,i);for(let s of this.children)Ie.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),Wt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Wt(t.path,["cloner"])!==null){let s=rt.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 Ha;c.updateMatrixWorld();let m=new Ha().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(l==="tangential"){let y=new Ha().extractRotation(c.matrixWorld),g=a.getTangentAt(d).applyMatrix4(y).add(p),v=new Ha().lookAt(p,g,new y_(0,1,0)),b=new g_().setFromRotationMatrix(v);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(x_)})}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 Kt.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 Kt.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 S_}from"three";import{BufferGeometry as v_,CylinderGeometry as b_,Float32BufferAttribute as Ac,Vector2 as Qt,Vector3 as qa}from"three";var Wm=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 Vi(u,a,t,o,i,s,l,c*Math.PI/180,d,d,p,f):m=new b_(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 io(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function Hm(n){return new Qt(n.y,-n.x)}var Vi=class extends v_{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 qa,S=new qa;f&&r==0&&(r=u),f&&e==0&&(e=a);let T=new Qt(r,b),_=new Qt(e,-b),x=null,C=null,P=null,I=null,O=T.clone().sub(_),A=0,R=0,U=0;p>0&&(A=Math.min(r,e)*(1-p),R=r-A,U=e-A);let q=T.clone();q.x-=A;let te=Math.PI-O.angle(),$=O.angle(),W=Math.tan($/2),k=Math.tan(te/2),V=W+k,G=p?V:k,B=p?V:W;if(u=Math.min(u,(r-R)/G,O.length()/V),a=Math.min(a,(e-U)/B,O.length()/V),u>0){let z=u/W;x=T.clone().sub(new Qt(z,u)),p&&(P=x.clone(),P.x-=A-V*u),T.sub(O.clone().setLength(z))}if(a>0){let z=a/k;C=_.clone().sub(new Qt(z,-a)),_.add(O.clone().setLength(z)),p&&(I=C.clone(),I.x-=A-V*a,q.sub(O.clone().setLength(z)))}O=T.clone().sub(_);let L=O.length()<.5,D=[];for(let z=0;z<=o;z++){let E=[],K=z/o,re=K*c+l,oe=new Qt(Math.sin(re),Math.cos(re));I&&C?(Y(E,K,oe,te,a,I,-1,!0),Y(E,K,oe,$,a,C,-1,!1)):C?(H(E,oe,C.x,0,-1),Y(E,K,oe,$,a,C,-1,!1)):s||H(E,oe,e,U,-1);let X=Hm(O).normalize();if(io(X,oe,w),!L)for(let ee=0;ee<=i;ee++){let Z=ee/i,ie=O.clone().multiplyScalar(Z).add(_);io(ie,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(K,.5+S.y/t),E.push(v++)}if(P&&x?(Y(E,K,oe,te,u,x,1,!1),Y(E,K,oe,$,u,P,1,!0)):x?(Y(E,K,oe,te,u,x,1,!1),H(E,oe,x.x,0,1)):s||H(E,oe,r,R,1),p&&!L){let ee=Hm(O).multiplyScalar(-1).normalize();io(ee,oe,w);for(let Z=0;Z<=i;Z++){let ie=Z/i,ce=O.clone().multiplyScalar(-ie).add(q);io(ce,oe,S),h.push(S.x,S.y,S.z),y.push(w.x,w.y,w.z),g.push(K,.5+S.y/t),E.push(v++)}}p&&!s&&E.push(E[0]),D.push(E)}for(let z=0;z<D.length-1;z++)for(let E=0;E<D[0].length-1;E++){if(s&&p&&E==i)continue;let K=D[z][E],re=D[z+1][E],oe=D[z+1][E+1],X=D[z][E+1],ee=h[oe*3+0],Z=h[oe*3+2];m.push(K,re,X),(ee!=0||Z!=0)&&m.push(re,oe,X)}c<Math.PI*2&&(F(-1,D[0],l),F(1,D[D.length-1],l+c)),this.setIndex(m),this.setAttribute("position",new Ac(h,3)),this.setAttribute("normal",new Ac(y,3)),this.setAttribute("uv",new Ac(g,2));function Y(z,E,K,re,oe,X,ee,Z){for(let ie=0;ie<d+1;ie++){let ce=ie/d,se=ee<0?ce:1-ce;Z&&(se-=1),se*=re;let fe=new Qt(Math.sin(se),Math.cos(se)*ee),De=fe.clone().multiplyScalar(oe).add(X);io(De,K,S),h.push(S.x,S.y,S.z),io(fe,K,w),y.push(w.x,w.y,w.z),g.push(E,.5+S.y/t),z.push(v++)}}function H(z,E,K,re,oe){let X=new qa,ee=new Qt,Z=[K,re];oe<0&&Z.reverse();for(let ie of Z)ee.set(ie,b*oe),io(ee,E,X),h.push(X.x,X.y,X.z),y.push(0,oe,0),g.push(.5,.5),z.push(v++)}function F(z,E,K){let re=new Qt(Math.sin(K),Math.cos(K)),oe=new Qt(-Math.cos(K),Math.sin(K)),X=new qa,ee=z<0?(ce,se,fe)=>m.push(ce,se,fe):(ce,se,fe)=>m.push(ce,fe,se),Z=new Qt((r+e+R+U)/4,0);io(Z,re,X),h.push(X.x,X.y,X.z),y.push(oe.x,0,oe.y),g.push(.5,.5);let ie=v++;for(let ce of E){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 qm=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 Vi(0,r/2,t,o,i,s,l,c*Math.PI/180,u,a,d,0,!0):p=new S_(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as w_,BufferGeometry as __,Float32BufferAttribute as Ic,Vector3 as ji}from"three";var $m=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 w_(r,e,t,o,i,s):u=new Nc(r,e,t,o,i,s,l,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},Cc=Math.PI/2,Nc=class extends __{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 Ic(d,3)),this.setAttribute("normal",new Ic(p,3)),this.setAttribute("uv",new Ic(f,2));function y(b,w,S,T,_,x,C,P,I,O,A){let R=(x-2*l)/I,U=(C-2*l)/O,q=x/2-l,te=C/2-l,$=P/2,W=I+1,k=O+1,V=0,G=0,B=new ji;for(let L=0;L<k;L++){let D=L*U-te;for(let Y=0;Y<W;Y++){let H=Y*R-q;B[b]=H*T,B[w]=D*_,B[S]=$,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/I),f.push(1-L/O),V+=1}}for(let L=0;L<O;L++)for(let D=0;D<I;D++){let Y=m+D+W*L,H=m+D+W*(L+1),F=m+(D+1)+W*(L+1),z=m+(D+1)+W*L;a.push(Y,H,z),a.push(H,F,z),G+=6}u.addGroup(h,G,A),h+=G,m+=V}function g(b,w,S,T,_,x,C,P,I,O,A){let R=(C-2*l)/O,U=C/2-l,q=P/2-l,te=I/2,$=O+1,W=0,k=0,V=new ji,G=new ji;for(let B=0;B<c+1;B++){let L=B/c*Cc,D=Math.sin(L)*l,Y=(1-Math.cos(L))*l,H=Math.sin(L),F=Math.cos(L);V[w]=(q+D)*_,V[S]=(te-Y)*x,G[b]=0,G[w]=H*Math.sign(V[w]),G[S]=F*Math.sign(V[S]);for(let z=0;z<$;z++){let E=z*R-U;V[b]=E*T,d.push(V.x,V.y,V.z),p.push(G.x,G.y,G.z),f.push(z/O),f.push(0),W+=1}}for(let B=0;B<c;B++)for(let L=0;L<O;L++){let D=m+L+$*B,Y=m+L+$*(B+1),H=m+(L+1)+$*(B+1),F=m+(L+1)+$*B;a.push(D,Y,F),a.push(Y,H,F),k+=6}u.addGroup(h,k,A),h+=k,m+=W}function v(b,w,S){let T=new ji,_=new ji(r/2,e/2,t/2);_.subScalar(l);let x=[],C=b*w*S>0?(I,O,A)=>a.push(I,O,A):(I,O,A)=>a.push(I,A,O);for(let I=0;I<=c;I++){let O=[],A=Cc*(1-I/c),R=Math.cos(A),U=Math.sin(A),q=0;for(let te=0;te<=I;te++){let $=Math.cos(q),W=Math.sin(q);T.x=R*$,T.y=U,T.z=R*W;let k=_.clone().addScaledVector(T,l);d.push(b*k.x,w*k.y,S*k.z),p.push(b*T.x,w*T.y,S*T.z),f.push(0,0),O.push(m++),q+=Cc/I}x.push(O)}let P=x.length-1;for(let I=0;I<P;I++){let O=x[I],A=x[I+1],R=O.length-1;C(O[0],A[1],A[0]);for(let U=1;U<=R;U++)C(O[U-1],O[U],A[U]),C(O[U],A[U+1],A[U])}}}};import{BufferGeometry as T_,Float32BufferAttribute as Ec,Triangle as P_,Vector3 as Ur,Vector2 as Mc}from"three";var so=class extends T_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],u=[];a(),d(),this.setAttribute("position",new Ec(l,3)),this.setAttribute("normal",new Ec(u,3)),this.setAttribute("uv",new Ec(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 Ur,h=m.clone(),y=new P_,g=i*o,v=o-g,b=s+1,w=new Ur,S=(W,k)=>w.subVectors(W,k).normalize(),T=(W,k)=>Array(W).fill(void 0).map(k),_=T(r.length/3,(W,k)=>new Ur().fromArray(r,k*3).setLength(o)),x=[],C=1e6;for(let W=0;W<_.length;W++){let k=_[W],V=[],G,B,L,D=1e10,Y=-1;for(;(Y=e.indexOf(W,Y+1))!=-1;){let E=Y-Y%3;G=e[E+(Y+1)%3],B=e[E+(Y+2)%3],L=k.distanceToSquared(_[G]),D=Math.min(D,L),V.push([G,B,L])}D+=1e-6;let H=[],F=0,z=V.length;for(let E=0;E<z;E++){[G,B,L]=V[F];let K=x[G]?.includes(W)==!0;L<=D&&H.push(G+ +K*C),F=V.findIndex(re=>re[0]==B)}x.push(H)}let P=[];{let W=0,k=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++)[W,k]=[V+D+L+2,G+D+L+3],P.push(V,G,...B?[k,V]:[W,G],k,W),[V,G]=[W,k];P.push(V,G,V+s+2)}}let I=m.clone(),O=m.clone(),A=m.clone(),R=m.clone(),U=m.clone(),q=[],te=T(_.length,()=>T(f,()=>m.clone()));for(let W=0;W<_.length;W++){m.copy(_[W]).normalize(),I.copy(m).multiplyScalar(v);let k=x[W];for(let H=0;H<k.length;H++){let F=k[H],z=k[(H+1)%f];y.setFromPointsAndIndices(_,W,F%C,z%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(I,te[W][H])}let V=[],G=[],B=[],L=new Ur;s==0&&[...te[W]].reduce((H,F)=>H.add(F),L).multiplyScalar(1/f);for(let H=0;H<f;H++){let F=[],z=(H-1+f)%f,E=te[W][z],K=te[W][H];m.copy(E).sub(I),h.copy(K).sub(I);let re=I.angleTo(m),oe=m.angleTo(h),X=Math.cos(re)*g;s==0?O.copy(L):O.copy(I).setLength(v+X),G.push(X);let ee=[O,E,K];for(let Z=0;Z<2;Z++){let ie=ee[Z],ce=ee[Z+1];R.subVectors(ie,I),U.subVectors(ce,I),A.crossVectors(R,U).normalize();for(let se=0;se<b;se++){let fe=[re,oe][Z]*se/b;m.copy(R).applyAxisAngle(A,fe).add(I),V.push(m.clone()),Z&&(S(m,I),F.push([se==0?ie:m.clone(),w.clone()]))}Z&&(S(ce,I),F.push([ce,w.clone()]))}B.push(F)}q.push(B);let D=2*b,Y=2;for(let H=0;H<f;H++){let F=D*H,z=D*((H+1)%f),E=[V[F]];for(let re=1;re<b;re++){R=V[F+re],U=V[z+re],E.push(R);for(let oe=1,X=re-Y+1;oe<=X;oe++)m.lerpVectors(R,U,oe/(X+1)),m.sub(I).setLength(G[H]).add(I),E.push(m.clone());E.push(U)}for(let re=0;re<b;re++)E.push(V[re+b+F]);E.push(V[z+b]);let K=P.map(re=>E[re]);l.push(...K.map(re=>[re.x,re.y,re.z]).flat()),u.push(...K.map(re=>(S(re,I),[w.x,w.y,w.z])).flat())}}let $=[];for(let W=0;W<x.length;W++)for(let k=0;k<f;k++){let V=x[W][k];if(V<C){let G=x[V].findIndex(D=>D%C==W),B=q[W][k],L=q[V][G];for(let D=0;D<b;D++){let Y=B[D],H=L[b-D],F=B[D+1],z=L[b-(D+1)];[Y,H,F,F,H,z].forEach(E=>{l.push(E[0].x,E[0].y,E[0].z),u.push(E[1].x,E[1].y,E[1].z)})}$.push(B[0][0],L[b][0],B[b][0],L[0][0])}}for(;$.length;){let W,k,V,G;[W,k]=$.splice(0,2);let B=[W];for(;W!=k;)B.push(k),V=$.indexOf(k),G=V%2,k=$.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 Ur;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,C=T(p)/Math.PI+.5;c.push(x,1-C)}let f=new Ur,m=new Ur,h=new Ur,y=new Ur,g=new Mc,v=new Mc,b=new Mc,w=(_,x,C,P)=>{P<0&&_.x===1&&(c[x]=_.x-1),C.x===0&&C.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 C=S(y);w(g,x+0,f,C),w(v,x+2,m,C),w(b,x+4,h,C)}for(let _=0;_<c.length;_+=6){let x=c[_+0],C=c[_+2],P=c[_+4],I=Math.max(x,C,P),O=Math.min(x,C,P);I>.9&&O<.1&&(x<.2&&(c[_+0]+=1),C<.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 so(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};import{DodecahedronGeometry as O_}from"three";var Ym=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 Fi(r*.5,i,s):new O_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},Fi=class extends so{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 Fi(r.radius,r.corner,r.cornerSides)}};import{Plane as R_,Shape as ch,Vector2 as kr,Vector3 as V_,MathUtils as jc,LineCurve as Fc,QuadraticBezierCurve as dh,CubicBezierCurve as Ka}from"three";import{CubicBezierCurve as $a,EllipseCurve as A_,LineCurve as Ya,LineCurve3 as I_,MathUtils as C_,QuadraticBezierCurve as Bc,SplineCurve as N_,Vector2 as ct,Vector3 as Zm}from"three";var zi=1e-12,Mn=class{constructor(r){this.position=new ct;this.startPosition=new ct;this.uuid=C_.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 Mn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ln=class extends Mn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Ln(this.parent).copy(this)}},Jt=class extends Mn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Ln(this),new Ln(this))}static create(e,t){let o=new Jt(e,new ct(...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 Jt(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 ct,t=new ct){let[o,i]=this.computeTangents();return o&&i&&(Xm(o,e),Xm(i,t)),[e,t]}computeTangent(e=new ct){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new ct){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function Xm(n,r=new ct){let e=n.length();return r.set(-n.y/e,n.x/e)}var Dc=n=>n,Bn=new ct,Xa=new ct,E_=new ct,M_=new ct,L_=new ct,B_=new ct,Qm=new Zm,Jm=new Zm;function eh(n){let r=new ct;r.addVectors(n.v0,Bn.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new ct;return e.addVectors(n.v2,Xa.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new $a(n.v0,r,e,n.v2)}function Ui(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function D_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function G_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Gc(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 th(n,r,e){return Km(n,r)&&Km(r,e)&&Lc(n.position,r.position,e.position)}function Lc(n,r,e){return Bn.copy(r).sub(n).cross(Xa.copy(e).sub(n))===0}function rh(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 oh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function nh(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 Gc(r,n,e)>Math.PI&&(a*=-1),Ui(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 Rc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function Km(n,r){return Lc(n.position,n.controls[1].position,r.position)&&Lc(n.position,r.controls[0].position,r.position)}function ih(n,r,e,t,o=.5){let i=Bn.subVectors(r,n).multiplyScalar(o).add(n),s=Xa.subVectors(e,r).multiplyScalar(o).add(r),l=E_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=M_.subVectors(s,i).multiplyScalar(o).add(i),a=L_.subVectors(l,s).multiplyScalar(o).add(s),d=l,p=B_.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 sh(n,r,e=12,t=!0){let o=Jm.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let u=Dc(r[c]),a=Bn,d=ao(u,e);l.push(d);for(let p=0;p<=d;p++)if(u instanceof $a||u instanceof Bc||u instanceof Ya){if(u.getPoint(p/d,a),o.set(a.x,a.y,0),i!==void 0&&G_(i,o))continue;i===void 0&&(i=Qm),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 ah(n,r,e,t=12,o=!0){let i=Jm.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,a=Dc(r[c]),d=Bn,p=ao(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof $a||a instanceof Bc||a instanceof Ya){if(a.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=Qm:(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 Vc(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=ao(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),l+=c}s.curveAfter!==void 0&&(l+=ao(s.curveAfter,r)),t.push(l)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=ao(n[0].roundedCurveCorner,r)*.5),t}function ao(n,r=12){return n&&n instanceof A_?r*2:n&&(n instanceof Ya||n instanceof I_)?1:n&&n instanceof N_?r*n.points.length:r}function lh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=Dc(r[s]),c=ao(l,e),u=Bn;for(let a=0;a<=c;a++)if(l instanceof $a||l instanceof Bc||l instanceof Ya){if(l.getPoint(a/c,u),o!==void 0&&D_(o,u,zi))continue;o===void 0&&(o=Xa),o.copy(u),n.push(u.x,u.y),i++}}return Ui(n[0],n[n.length-2],zi)&&Ui(n[1],n[n.length-1],zi)&&(n.pop(),n.pop()),t&&i>1&&!(Ui(n[i-1],n[1],zi)&&Ui(n[i-2],n[0],zi))&&(n.push(n[0],n[1]),i++),n}var zc=new kr,j_=new kr,F_=new kr,z_=new kr,U_=new kr,k_=new kr,Se=class extends ch{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new R_(new V_(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=jc.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=>Jt.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=zc.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=jc.generateUUID()){let i;e instanceof kr?i=e:i=new kr(e,t);let s=new Jt(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 sh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Vc(this.points,e,!1),this.roundedCurveDivisions=Vc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return ah(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),lh(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=ao(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(Rc(i,s)){let d=i.position.distanceTo(s.position);return i.position.distanceTo(zc.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){Rc(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&&th(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,zc),_=p.getPointAt(S,j_);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let C=Gc(T,s.position,_)/2,P=Math.tan(C)*T.distanceTo(s.position),[I,O]=rh(T,_,P,F_,z_),A=oh(I,O,s.position),[R,U]=nh(A,T,_,P,U_,k_);x=new Ka(T.clone(),R.clone(),U.clone(),_.clone())}else x=new dh(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 Fc)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=ih(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 Jt(jc.generateUUID(),new kr(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 Ka&&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 dh&&(i[l]=eh(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 Ka?(f=this.createPoint(d.v0),f.controls[1].position.copy(d.v1)):d instanceof Fc&&(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 Ka?u.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(u.v2),a=!0):u instanceof Fc&&u.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof ch&&(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 kc=Math.PI*2;function Uc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function H_(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 uh(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 W_(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,_=uh(1,0,b,w),x=uh(b,w,S,T);return!u&&x>0&&(x-=kc),u&&x<0&&(x+=kc),{centerx:g,centery:v,ang1:_,ang2:x}}function ph({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=W_(n,r,e,t,o,i,u,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(kc/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(H_(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=Uc(b[0],o,i,h,y),{x:T,y:_}=Uc(b[1],o,i,h,y),{x,y:C}=Uc(b[2],o,i,h,y);return{x1:w,y1:S,x2:T,y2:_,x,y:C}})}import{BufferAttribute as el,BufferGeometry as Z_}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 Be;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Be||(Be={}));function ue(n,r){if(!n)throw r||"Assertion Failed!"}var ae=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}(),ki=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}(),Za=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}(),Dn=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}(),fh=function(){function n(){var r=new Dn,e=new ki,t=new Za(0),o=new Za(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 Za(0),t=new Za(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 Dn,e=new Dn,t=new ki,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 Dn;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var s=new ki;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 ki;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 Dn;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 ki;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&&ae.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&ae.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}(),mh=function(){function n(){this.handle=null}return n}(),hh=function(){function n(){this.key=null,this.node=0}return n}(),q_=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 mh,this.handles[t]=new hh;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 mh;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new hh}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}(),Hc=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}(),yh=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),$_=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new yh,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 yh;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}(),Y_=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?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var l=ae.edgeEval(i.Dst,o,i.Org),c=ae.edgeEval(s.Dst,o,s.Org);return l>=c},n.deleteRegion=function(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 Hc;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(ae.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=ae.vertL1dist(e,r),i=ae.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(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(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(ae.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(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=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 Dn,f,m;if(ue(!ae.vertEq(u,c)),ue(ae.edgeSign(c,r.event,s)<=0),ue(ae.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(ae.vertLeq(s,l)){if(ae.edgeSign(u,s,l)>0)return!1}else if(ae.edgeSign(c,l,s)<0)return!1;return n.debugEvent(r),ae.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)),ae.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=ae.vertLeq(s,l)?s:l,ae.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),ae.vertEq(p,s)||ae.vertEq(p,l)?(n.checkForRightSplice(r,e),!1):!ae.vertEq(c,r.event)&&ae.edgeSign(c,r.event,p)>=0||!ae.vertEq(u,r.event)&&ae.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):(ae.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),ae.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),ae.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),ae.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}ae.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,ae.vertEq(o.Org,t)){ue(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!ae.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),ae.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 Hc;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(s=t.eUp,l=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=ae.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 Hc,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 $_(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,ae.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 q_(i,ae.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||!ae.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}(),X_=function(){function n(){this.mesh=new fh,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(;ae.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ae.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(ae.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ae.edgeGoesLeft(o.Lnext)||ae.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&&(ae.edgeGoesRight(t.Lprev)||ae.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===Be.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===Be.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 fh),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=Be.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_(),Y_.computeInterior(this,s);var l=this.mesh;return e===Be.BOUNDARY_CONTOURS?this.setWindingNumber_(l,1,!0):this.tessellateInterior_(l),s&&l.check(),e===Be.BOUNDARY_CONTOURS?this.outputContours_(l,o):this.outputPolymesh_(l,e,t,o),!0},n}();function er(n){var r=n.windingRule,e=r===void 0?ve.ODD:r,t=n.elementType,o=t===void 0?Be.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 X_;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 IV=ve.ODD,CV=ve.NONZERO,NV=ve.POSITIVE,EV=ve.NEGATIVE,MV=ve.ABS_GEQ_TWO,LV=Be.POLYGONS,BV=Be.CONNECTED_POLYGONS,DV=Be.BOUNDARY_CONTOURS;import{BufferAttribute as Ja,BufferGeometry as K_}from"three";var Qa=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*Qa.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*Qa.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)}},Hi=Qa;Hi.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Wi={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},$c={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},Wc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Gn=class extends K_{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),C=[];for(let P=x.length-1;P>=1;P-=2){let I=x[P-1],O=x[P-0];C.push(I,O)}return C}),a;try{a=er({windingRule:l,elementType:Be.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[c]})}catch{a=Wi}let d;try{d=er({windingRule:ve.ODD,elementType:Be.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[_],C=_%2===0?a.vertexCount:0;a.elements.push(x+C)}for(let _=0;_<d.vertexIndices.length;_++){let x=d.vertexIndices[_],C=a.vertexCount;a.vertexIndices.push(x+C)}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 C=_*2,P=a.vertices[C+0],I=a.vertices[C+1];P<f&&(f=P),P>m&&(m=P),I<h&&(h=I),I>y&&(y=I)}this._minX=f,this._minY=h,this._width=m-f,this._height=y-h,this._buffer=new Hi(this._computeBufferEstimatedSize(a));let g=[],v=[];for(let _=a.elementCount-1;_>=0;_--){let x=_>=p,C=_*2,P=a.elements[C+0],I=a.elements[C+1],O=P+I,A={start:P,count:I,normals:[],continuous:[],concave:[]},R=P,U=O-1,q=P+1,te=this._shape.roundedCurves.length;do{let V=R-P,G=a.vertices[U*2+0],B=a.vertices[U*2+1],L=a.vertices[R*2+0],D=a.vertices[R*2+1],Y=a.vertices[q*2+0],H=a.vertices[q*2+1],F=L-G,z=D-B,E=Math.sqrt(F*F+z*z);F/=E,z/=E;let K=L-Y,re=D-H,oe=Math.sqrt(K*K+re*re);K/=oe,re/=oe,A.normals[V*2+0]=-re,A.normals[V*2+1]=K,A.concave[V]=F*re-z*K>0;let X=a.vertexIndices[R];if(Array.isArray(X))A.continuous[V]=!1;else{let[ee,Z]=this._shape.getCurveIndexFromVertexId(X-1,!0);if(Z>0&&Z<1)A.continuous[V]=!0;else{let ie=Z===1?ee+1:ee-1;ie=(ie+te)%te;let ce=Z===1?0:1,se=this._shape.roundedCurves[ee].getTangent(Z),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),[U,R,q]=[R,q,q+1],q>=O&&(q-=I)}while(q!==P+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:a.vertices.slice(P*2,O*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((V,G)=>[G,G]),elements:[0,I],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=[],H=[],F=0;for(let E=0;E<I;E++){let K=E*2,re=(E-1+I)%I*2,oe=a.vertices[A.start*2+K+0],X=a.vertices[A.start*2+K+1],ee=-A.normals[re+0]*B,Z=-A.normals[re+1]*B,ie=-A.normals[K+0]*B,ce=-A.normals[K+1]*B;if(A.concave[E]||!A.concave[E]&&x){let se=Math.atan2(Z,ee),fe=Math.atan2(ce,ie);fe>se&&(fe-=Math.PI*2);let De=fe-se;if(A.continuous[E]||x){let ye=se+De/2,ze=Math.cos(ye)*B,Te=Math.sin(ye)*B;L[2*F+0]=oe+ze*(x?-1:1),L[2*F+1]=X+Te*(x?-1:1),H[F]=E,F++}else{let ye=Math.max(1,Math.floor(i/4*Math.abs(De)/Math.PI));for(let ze=0;ze<=ye;ze++){let Te=se+De*(ze/ye),gt=Math.cos(Te)*B,Rt=Math.sin(Te)*B;L[2*F+0]=oe+gt,L[2*F+1]=X+Rt,H[F]=E,F++}}}else L[2*F+0]=oe+ee,L[2*F+1]=X+Z,H[F]=E,D[E]=F,F++,L[2*F+0]=oe,L[2*F+1]=X,H[F]=E,F++,L[2*F+0]=oe+ie,L[2*F+1]=X+ce,H[F]=E,Y[E]=F,F++}let z=er({windingRule:ve.POSITIVE,elementType:Be.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[L],edgeCreateCallback:E=>{let re=E.Org.idx,oe=H[re],X=H[(re+1)%H.length];E.idx=[oe,X],E.Sym.idx=[X,oe]},vertexIdCallback:E=>{let K=E.Lprev.idx;return[K?K[1]:0,E.idx?E.idx[0]:0]}});if(!z)throw console.log("Error"),new Error(`error generating bevel geometry for ${V}'th loop`);if(!z.vertexCount)break;for(let E=0;E<z.vertexIndices.length;E++){let[K,re]=z.vertexIndices[E];if(K===re)continue;let oe=re;re<K&&(oe+=I);for(let X=K;X<oe;X++){let ee=X%I,Z=(X+1)%I;if(!A.continuous[ee]||!A.continuous[Z]){z.vertexIndices[E]=[K,ee],z.vertexIndices.splice(E+1,0,[Z,re]),z.vertices.splice((E+1)*2,0,z.vertices[E*2],z.vertices[E*2+1]);break}}}$.push({bevelI:V,angle:G,size:B,boundary:z,reverseMap:H,insetPoints:L})}let W=(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},k=g.length;for(let V=1;V<$.length;V++){let G=$[V-1],B=$[V],L=G.boundary.vertexIndices.length,D=B.boundary.vertexIndices.length;if(!L||!D)break;let Y=A.concave.length,H=0,F=Wc(H,I);for(;!G.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)H++,F=Wc(H,I);let z=G.boundary.vertexIndices.findIndex(F),E=B.boundary.vertexIndices.findIndex(F);do z=(z+1)%L;while(F(G.boundary.vertexIndices[z]));do E=(E+1)%D;while(F(B.boundary.vertexIndices[E]));H=(H+1)%I;let K=H,re=this._buildBevelVert(A,G,(z-1+L)%L),oe=this._buildBevelVert(A,B,(E-1+D)%D),X=re,ee=oe,Z,ie,ce=!1;do{F=Wc(H,I);let se=W(G,z,F),fe=W(B,E,F),De=ce;if(ce=!1,se&&!fe){for(let ye=0;ye<se;ye++)Z=this._buildBevelVert(A,G,(z+ye)%L,ye/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z;ce=!0}else if(!se&&fe)for(let ye=0;ye<fe;ye++)ie=this._buildBevelVert(A,B,(E+ye)%D,ye/(fe-1)),g.push(ee.topN,X.topP,ie.topP),g.push(X.bottomP,ee.bottomN,ie.bottomP),ee=ie;else if(se&&fe)if(Z=this._buildBevelVert(A,G,z,0),ie=this._buildBevelVert(A,B,E,0),De?(g.push(X.topN,ie.topP,ee.topN),g.push(X.topN,Z.topP,ie.topP),g.push(ie.bottomP,X.bottomN,ee.bottomN),g.push(ie.bottomP,Z.bottomP,X.bottomN)):(g.push(ee.topN,X.topN,Z.topP),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP)),X=Z,ee=ie,se===fe)for(let ye=1;ye<se;ye++)Z=this._buildBevelVert(A,G,(z+ye)%L,ye/(se-1)),ie=this._buildBevelVert(A,B,(E+ye)%D,ye/(fe-1)),g.push(X.topN,Z.topP,ee.topN),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,X.bottomN,ee.bottomN),g.push(Z.bottomP,ee.bottomN,ie.bottomP),X=Z,ee=ie;else if(se>fe){let ye=se/fe,ze=0;for(let Te=1;Te<se;Te++)Z=this._buildBevelVert(A,G,(z+Te)%L,Te/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z,Te>(ze+1)*ye&&(ze++,ie=this._buildBevelVert(A,B,(E+ze)%D,ze/(fe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie)}else{let ye=fe/se,ze=0;for(let Te=1;Te<fe;Te++)ie=this._buildBevelVert(A,B,(E+Te)%D,Te/(fe-1)),g.push(ee.topN,Z.topP,ie.topP),g.push(Z.bottomP,ee.bottomN,ie.bottomP),ee=ie,Te>(ze+1)*ye&&(ze++,Z=this._buildBevelVert(A,G,(z+ze)%L,ze/(se-1)),g.push(X.topN,Z.topP,ee.topN),g.push(Z.bottomP,X.bottomN,ee.bottomN),X=Z)}z=(z+se)%L,E=(E+fe)%D,H=(H+1)%Y}while(H!==K)}if(this._buildWall($,A,g),x){let V=[];for(let G=g.length-1;G>=k+2;G-=3){let B=g[G-2],L=g[G-1],D=g[G-0];V.push(D,L,B)}g.splice(k,g.length-k,...V)}if(x){let V=[];for(let G=$[$.length-1].boundary.vertices.length-1;G>=1;G-=2){let B=$[$.length-1].boundary.vertices[G-1],L=$[$.length-1].boundary.vertices[G-0];V.push(B,L)}v.push(V)}if(!x){let V=$[$.length-1],G;try{G=er({windingRule:$.length>1?ve.POSITIVE:ve.ODD,elementType:Be.POLYGONS,vertexSize:2,strict:!0,contours:[V.insetPoints,...v]})}catch{G=$c}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 Ja(Uint32Array.from(g),1),w=new Ja(this._buffer.positions,3),S=new Ja(this._buffer.normals,3),T=new Ja(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],C=e.normals[g+0],P=e.normals[g+1];if(p){let U=C-_,q=P-x;_=_+U*(1-i),x=x+q*(1-i);let te=Math.sqrt(_*_+x*x);_/=te,x/=te}let I=this._buffer.get(d?2:4),O=I*3,A=I*2,R={i:o,fi:u,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+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||(I+=2,O+=6,A+=4,R.topP=I+0,R.bottomP=I+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]=C*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]=C*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 Gn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jr(this.userData),e}};var Rn=class extends Z_{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=ve.ODD;this.elementType=Be.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:ve.ODD,elementType:Be.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=er({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=Wi}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new el(new Float32Array(p*3),3),this._normalAttribute=new el(new Float32Array(p*3),3),this._uvAttribute=new el(new Float32Array(p*2),2),this._indexAttribute=new el(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],C=(_-m)/v,P=(x-y)/b;this._positionAttribute.setXYZ(w,_,x,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,C,P)}for(let w=0,S=f;w<S;w++){let T=w*3,_=l.elements[T+0],x=l.elements[T+1],C=l.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,x),this._indexAttribute.setX(T+2,C)}}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 Rn(this._shape,this._curveSegments);return e.userData=jr(this.userData),e}};var Vn=class extends Gn{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 Vn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=jr(this.userData),e}};var _t=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 Rn(n.shape,o,{windingRule:s}):l=new Vn(n.shape,r,e,o,t,s),Object.assign(l,{userData:{...n,type:"VectorGeometry"}})}};import{MathUtils as xh,Vector2 as vh}from"three";var bh=Math.PI*2,Fn=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=Q_(u,a,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f=_t.create({shape:u,parameters:{subdivisions:p,depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function Q_(n,r,e,t,o,i){if(t>=bh)return o>30||o%4===0?(eT(n,r,e,i),Math.round(o/4)):gh(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=ph({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?J_(n,s.x,s.y,u,o,r,e,i):gh(n,t,o,r,e,i)}function J_(n,r,e,t,o,i,s,l){let c=Math.round(o/t.length);n.addPoint(jn(r,e));for(let u=0,a=t.length;u<a;u++){let d=t[u],p=n.points[u],f=jn(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?Sh(n,i,s,l):n.addPoint(jn(0,0)),c}function gh(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(jn(u,a))}return r<bh?i>0?Sh(n,t,o,i):n.addPoint(jn(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&wh(n,t,o,i)),1}function eT(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(tl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(tl(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(tl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(tl(o,i-e,o+l,i-e,o-l,i-e)),t>0&&wh(n,r,e,t)}function jn(n,r){return new Jt(xh.generateUUID(),new vh(n,r))}function tl(n,r,e,t,o,i){let s=jn(n,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,i),s}function Sh(n,r,e,t){_h(n,r,e,t).forEach(i=>n.addPoint(i))}function wh(n,r,e,t){let o=_h(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function _h(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new vh(o/r,i/e),l=n.points.map(c=>{let u=c.clone();return u.uuid=xh.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 tT,Float32BufferAttribute as Yc,Vector3 as Th}from"three";var Ph=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 qi(!1,r,e,t,o,i,s,l,c,u,a,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},qi=class extends tT{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 Th,h=new Th,y=m(),g=m(),v=m(),b,w,S,T,_,x,C,P,I=m(),O=m(),A=m(),R=m(),U=m(),q=m(),te=m(),$=m(),W=t-2*c+.001,k=W/s,V=Math.ceil(l*s),G=V+1,B=W/V,L=-W/2,D=a+1,Y=2*Math.PI/a,H=Math.PI/2/p,F=.01,z=Math.min((1-d/100)*c,c-F),E=c-z,K=0,re=2,oe=p*re+re,X=D*oe/re,ee=X+D*G,Z=D*(G+oe),[ie,ce,se]=[3,3,2].map(Ve=>Array(Z*Ve).fill(0)),fe=[],De=i-c;function ye(Ve,Ct){let lr=Math.PI/2;x=Ct*B,P=2*Math.PI*(x%k)/k+lr,x+=L,C=Math.sin(P)*De,_=Math.cos(P)*De,r?Ve.set(_,C,x):Ve.set(_,x,C)}ye(h,-1e-10),ye(y,0),I.copy(h),ye(h,1);let ze=h.distanceTo(y),Te=f?0:E+z,gt=ze*V+2*Te,Rt=z,ko=gt-Te;for(let Ve=0;Ve<=V;Ve++){ye(g,Ve),$.subVectors(g,I).normalize(),I.copy(g),q.copy(g).setComponent(+r+1,0).normalize(),te.crossVectors($,q).normalize();let Ct=Ve===0,lr=Ve===V,Rg=Ct?3*Math.PI/2:H,Vg=Ct?Rt:ko,jg=Ct?D:ee,Fg=Ct?0:Z-D,zg=$.clone().multiplyScalar(Ct?-E:E).add(g),Ug=$.clone().multiplyScalar(Ct?-1:1).normalize();for(let Er=0;Er<D;Er++){let cu=Er*Y;if(O.addVectors(h.copy(q).multiplyScalar(c*Math.cos(cu)),y.copy(te).multiplyScalar(c*Math.sin(cu))),A.copy(O).normalize(),Ct||lr){f||(K=Fg+Er,[0,1,2].forEach(xt=>{ie[K*3+xt]=zg.getComponent(xt),ce[K*3+xt]=Ug.getComponent(xt)}),se[K*2]=+lr,se[K*2+1]=Er/a),y.copy(A).multiplyScalar(z),v.addVectors(g,y);for(let xt=0;xt<p;xt++){let Ul=xt*H+Rg;R.addVectors(h.copy($).multiplyScalar(E*Math.sin(Ul)),y.copy(A).multiplyScalar(E*Math.cos(Ul))),U.copy(R).normalize(),y.addVectors(v,R),R.normalize(),K=jg+xt*D+Er,[0,1,2].forEach(Ds=>{ie[K*3+Ds]=y.getComponent(Ds),ce[K*3+Ds]=U.getComponent(Ds)});let kg=+Ct+Math.sin(Ul);se[K*2]=(Vg+E*kg)/gt,se[K*2+1]=Er/a}}y.addVectors(g,O),K=X+Ve*D+Er,[0,1,2].forEach(xt=>{ie[K*3+xt]=y.getComponent(xt),ce[K*3+xt]=A.getComponent(xt)}),se[K*2]=(Te+Ve*ze)/gt,se[K*2+1]=Er/a}}let It=G+2*p+re,Ls=1,[Bs,xi]=[+f,It-1];f&&(xi-=1);for(let Ve=Bs;Ve<=xi-1;Ve++){let Ct=f&&Ve===xi-1;for(let lr=0;lr<D-1;lr++)b=Ve*D+lr,w=b+1,S=(Ct?lr:b)+D,T=(Ct?lr+1:w)+D,Ve===0?fe.push(w,T,S):Ve===It-2?fe.push(b,w,S):fe.push(b,w,S,w,T,S)}this.setIndex(fe),this.setAttribute("position",new Yc(ie,3)),this.setAttribute("normal",new Yc(ce,3)),this.setAttribute("uv",new Yc(se,2))}};import{IcosahedronGeometry as rT}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 $i(r*.5,i,s):new rT(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},$i=class extends so{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 $i(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as oT,Shape as nT}from"three";var Ah=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 nT;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 oT(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as Dh,BufferGeometryLoader as yT,Vector3 as gT,BoxGeometry as Gh}from"three";import{BufferGeometry as pT,Vector2 as Qc,Vector3 as Bh}from"three";import{Box3 as iT,BufferAttribute as Yi,BufferGeometry as Ih,Color as Zc,EventDispatcher as sT,Float32BufferAttribute as zn,Matrix3 as Ch,Matrix4 as Lh,MathUtils as aT,Object3D as lT,Sphere as cT,Vector2 as Dt,Vector3 as nt,Vector4 as dT}from"three";var gr=new Lh,Xc=new lT,rl=new nt,lo=class extends sT{constructor(){super(),this.uuid=aT.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 Ch().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 gr.makeRotationX(r),this.applyMatrix4(gr),this}rotateY(r){return gr.makeRotationY(r),this.applyMatrix4(gr),this}rotateZ(r){return gr.makeRotationZ(r),this.applyMatrix4(gr),this}translate(r,e,t){return gr.makeTranslation(r,e,t),this.applyMatrix4(gr),this}scale(r,e,t){return gr.makeScale(r,e,t),this.applyMatrix4(gr),this}lookAt(r){return Xc.lookAt(r),Xc.updateMatrix(),this.applyMatrix4(Xc.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 nt().fromBufferAttribute(i,p)),l!==void 0&&e.colors.push(new Zc().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 nt().fromBufferAttribute(s,p),new nt().fromBufferAttribute(s,f),new nt().fromBufferAttribute(s,m)],v=new Un(p,f,m,g,y,h);e.faces.push(v),c!==void 0&&e.faceVertexUvs[0].push([new Dt().fromBufferAttribute(c,p),new Dt().fromBufferAttribute(c,f),new Dt().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new Dt().fromBufferAttribute(u,p),new Dt().fromBufferAttribute(u,f),new Dt().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(rl).negate(),this.translate(rl.x,rl.y,rl.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new Lh;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 nt,e=new nt;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 nt;if(r){let t=new nt,o=new nt;for(let i=0,s=this.faces.length;i<s;i++){let l=this.faces[i],c=this.vertices[l.a],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 lo;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 nt,a={a:new nt,b:new nt,c:new nt};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 iT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new cT),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 Ch().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 Un(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 nt(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 lo().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 Kc().fromGeometry(this),e=new Ih,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",ol.call(new Yi(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",ol.call(new Yi(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",Nh.call(new Yi(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Eh.call(new Yi(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Eh.call(new Yi(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 zn(u.data.length*3,3);a.name=u.name,i.push(ol.call(a,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new zn(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Mh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new zn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Mh.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 Ih,t=r.geometry;if(r.isPoints||r.isLine){let o=new zn(t.vertices.length*3,3),i=new zn(t.colors.length*3,3);if(e.setAttribute("position",ol.call(o,t.vertices)),e.setAttribute("color",Nh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new zn(t.lineDistances.length,1);e.setAttribute("lineDistance",uT.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}};lo.prototype.isGeometry=!0;var Kc=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 Dt,new Dt,new Dt))}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 Dt,new Dt,new Dt))}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}},Un=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 nt,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new Zc,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 uT(n){return this.array.set(n),this}function Nh(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 Zc),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Eh(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 Dt),r[e++]=i.x,r[e++]=i.y}return this}function ol(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 nt),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Mh(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 dT),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var fT=["a","b","c"];function mT(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Jc(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function ed(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 hT(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],ed(s.a,s.b,n,t,s,e),ed(s.b,s.c,n,t,s,e),ed(s.c,s.a,n,t,s,e)}function nl(n,r,e,t,o){n.push(new Un(r,e,t,void 0,void 0,o))}function kn(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function il(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var sl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof pT?r=new lo().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 Bh,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;hT(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 Bh,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[mT(v,fT[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,C,P,I,O,A=[];for(o=0,i=c.length;o<i;o++){for(I=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=I.clone().multiplyScalar(_),e.set(0,0,0),s=0;s<t;s++)C=P[s],h=C.a!==I?C.a:C.b,e.add(h);e.multiplyScalar(Number(x)),O.add(e),A.push(O)}let R=A.concat(m),U=A.length,q,te,$,W=[],k=[],V,G,B,L,D=new Qc,Y=new Qc,H=new Qc;for(o=0,i=u.length;o<i;o++)v=u[o],q=Number(Jc(v.a,v.b,f).newEdge)+U,te=Number(Jc(v.b,v.c,f).newEdge)+U,$=Number(Jc(v.c,v.a,f).newEdge)+U,nl(W,q,te,$,v.materialIndex),nl(W,v.a,q,$,v.materialIndex),nl(W,v.b,te,q,v.materialIndex),nl(W,v.c,$,te,v.materialIndex),d&&(V=a[o],G=V[0],B=V[1],L=V[2],D.set(kn(G.x,B.x),kn(G.y,B.y)),Y.set(kn(B.x,L.x),kn(B.y,L.y)),H.set(kn(G.x,L.x),kn(G.y,L.y)),il(k,D,Y,H),il(k,G,D,H),il(k,B,Y,D),il(k,L,H,Y));r.vertices=R,r.faces=W,d&&(r.faceVertexUvs[0]=k)}};var We=new gT,Rh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Dh().copy(new Gh(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(We),t={width:We.x,height:We.y,depth:We.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 Dh().copy(new Gh(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(We)):We.set(s.width,s.height,s.depth),(r!==We.x||e!==We.y||t!==We.z)&&i.scale(We.x===0?1:r/We.x,We.y===0?1:e/We.y,We.z===0?1:t/We.z);let l=i.originalGeometry;try{o>0?(l===void 0||s?.subdivisions!==o)&&(l===void 0&&(l=i),i=new sl(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 yT(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(We);let s=100/We.x;Object.assign(i.parameters,{width:100,height:We.y*s,depth:We.z*s}),r(this.build(i))})}};var al=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=_t.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};import{BufferGeometry as xT,Float32BufferAttribute as td,Vector2 as xr,Vector3 as Ze}from"three";var Vh=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 od(r*.5,e,o,i,s,l,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function Xi(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function rd(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 vT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var od=class extends xT{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 Ze(0,-f,0),w=new Ze(0,f,0),S=new xr(r,-f),T=new xr(h,-f),_=new xr(0,w.y).sub(T),x=new xr(0,w.y).sub(S),C=new xr(_.y,-_.x).normalize(),P=new xr(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 k=new Ze(C.x,C.y,0),V=new Ze(Math.cos(y)*k.x,k.y,Math.sin(y)*k.x);A=k.angleTo(V)}let R=s/Math.tan((Math.PI-_.angle())/2),U=s/Math.tan((Math.PI-A)/2),q=new Ze;if(!i){u.push(b.x,b.y,b.z),a.push(0,-1,0),d.push(0,0);let k=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 xr(Math.sin(D),Math.cos(D));Xi(G,Y,q),u.push(q.x,q.y,q.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],k,V[(L+1)%V.length])}let te=[];{let k=new Ze,V=new Ze,G=new Ze,B=new Ze,L=new Ze,D=new Ze;for(let Y=0;Y<t;Y++){let H=Y/t*Math.PI*2+m,F=(Y+.5)/t*Math.PI*2+m,z=(Y+1)/t*Math.PI*2+m,E=new xr(Math.sin(H),Math.cos(H)),K=new xr(Math.sin(F),Math.cos(F)),re=new xr(Math.sin(z),Math.cos(z));Xi(S,E,V),Xi(S,re,G),Xi(C,K,k),rd(w,V,G,U,U,B),u.push(B.x,B.y,B.z),rd(V,w,G,U,R,L),u.push(L.x,L.y,L.z),rd(G,V,w,R,U,D),u.push(D.x,D.y,D.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),a.push(k.x,k.y,k.z),d.push(0,0),d.push(0,0),d.push(0,0);let oe=p++,X=p++,ee=p++;if(c.push(oe,X,ee),s>0){{let ce=V.clone().add(G).multiplyScalar(.5),se=w.clone().sub(ce).normalize(),De=b.clone().sub(ce).normalize().add(se).normalize().multiplyScalar(-1),ye=D.clone().sub(L);$(ce,ye,De,_.angle())}let Z,ie;{let ce=new Ze;Xi(P,re,ce);let se=D.clone().add(B).multiplyScalar(.5);se=vT(se,G,w);let fe=D.clone().sub(B);[Z,ie]=$(se,fe,ce,A,B.y)}{let ce=Z,se=ce.clone().setY(0).normalize(),fe=new Ze(0,-1,0),De=se.clone().cross(fe);W(ce,se,fe,De)}te.concat(ie);{let ce=_.angle(),se=Math.PI-ce,fe=w.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let De=new Ze,ye=[];for(let Te=0;Te<l;Te++){let gt=[],Rt=Math.PI/2-se*Te/l,ko=Math.cos(Rt),It=Math.sin(Rt),Ls=F;for(let Bs=0;Bs<=Te;Bs++){let xi=Math.cos(Ls),Ve=Math.sin(Ls);k.x=ko*Ve,k.y=It,k.z=ko*xi,De.copy(fe).addScaledVector(k,s),u.push(De.x,De.y,De.z),a.push(k.x,k.y,k.z),d.push(0,0),gt.push(p++),Ls+=Math.PI*2/Te/t}ye.push(gt)}ie.reverse(),ye.push(ie);let ze=ye.length-1;for(let Te=0;Te<ze;Te++){let gt=ye[Te],Rt=ye[Te+1],ko=gt.length-1;c.push(Rt[1],gt[0],Rt[0]);for(let It=1;It<=ko;It++)c.push(gt[It],gt[It-1],Rt[It]),c.push(Rt[It+1],gt[It],Rt[It])}}}}}this.setIndex(c),this.setAttribute("position",new td(u,3)),this.setAttribute("normal",new td(a,3)),this.setAttribute("uv",new td(d,2));function $(k,V,G,B,L){let D=-B/2,Y=(Math.PI-B)/2,H=V.clone().normalize().cross(G);k.addScaledVector(G,-s/Math.sin(Y));let F=new Ze,z=new Ze,E=1,K=p,re=[];for(let oe=0;oe<=l;oe++){let X=D+oe/l*B;z.set(0,0,0),z.addScaledVector(H,Math.sin(X)),z.addScaledVector(G,Math.cos(X));for(let ee=0;ee<=E;ee++){let Z=ee/E-.5;if(F.copy(k),F.addScaledVector(V,Z),F.addScaledVector(z,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(z.x,z.y,z.z),d.push(0,0),ee===0&&re.push(p),p++}}for(let oe=0;oe<l;oe++)for(let X=0;X<E;X++){let ee=K+X+(E+1)*oe,Z=ee+(E+1),ie=Z+1,ce=ee+1;c.push(ee,Z,ce),c.push(Z,ie,ce)}return[k.clone().addScaledVector(V,.5),re]}function W(k,V,G,B){let L=Math.PI/2,D=x.angle()-L,Y=[],H=new Ze,F=new Ze;for(let E=0;E<=l;E++){let K=[],re=E/l;for(let oe=0;oe<=E;oe++){let ee=((E?oe/E:0)-.5)*v,Z=Math.cos(ee),ie=Math.sin(ee),ce=Math.atan(Math.tan(D)*Z),se=(L+ce)*re,fe=Math.cos(se),De=Math.sin(se);H.set(0,0,0),H.addScaledVector(V,De*Z),H.addScaledVector(G,fe),H.addScaledVector(B,De*ie),F.copy(k).addScaledVector(H,s),u.push(F.x,F.y,F.z),a.push(H.x,H.y,H.z),d.push(0,0),K.push(p++)}Y.push(K)}let z=Y.length-1;for(let E=0;E<z;E++){let K=Y[E],re=Y[E+1],oe=K.length-1;c.push(K[0],re[1],re[0]);for(let X=1;X<=oe;X++)c.push(K[X-1],K[X],re[X]),c.push(K[X],re[X+1],re[X])}}}};var ll=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=_t.create({shape:r,parameters:{depth:s,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(b,{userData:{...n,type:"RectangleGeometry"}})}};import{SphereGeometry as bT}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,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 bT(.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 ST}from"three";var Fh=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 ST(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as wT,Float32BufferAttribute as nd,Vector3 as _T}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,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 id(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},id=class extends wT{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,z=0,E=0)=>new _T(F,z,E),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,z=!1)=>Math.sin(F-Math.PI/(1+ +z)),C=(F,z=!1)=>Math.cos(F-Math.PI/(1+ +z));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-v,I=S.z-a;o<=p?(_.z=Math.min(P,I),_.z==I&&(_.y-=(P-I)/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),U=m.clone().normalize().add(h.normalize()).setLength(R).add(T);m.set(0,x(o,!0),C(o,!0)),d.push([_,m.clone()]);let q=(Math.PI-o)/s;for(let F=0;F<=s;F++){let z=p+o+F*q;m.set(0,Math.sin(z)*A,Math.cos(z)*A),m.add(U),h.set(0,x(z),C(z)),d.push([m.clone(),h.clone()])}d.push([S,f(0,1,0)]);let te=Math.sin(q/2)*A*2,$=d.length-1,W=d[0][0].distanceTo(d[1][0]),k=d[$-1][0].distanceTo(d[$][0]),V=W+te*s+k;d[0].push(1);for(let F=0;F<=s;F++)d[F+1].push(1-(W+F*te)/V);d[$].push(0);let[G,B,L]=d[0],D,Y,H;for(let F=1;F<d.length;F++)[D,Y,H]=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,H,1,L,1,L,0,H,1,H),[G,B,L]=[D,Y,H];this.setAttribute("position",new nd(l,3)),this.setAttribute("normal",new nd(c,3)),this.setAttribute("uv",new nd(u,2))}};var cl=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=_t.create({shape:a,parameters:{roundness:i,depth:l,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(b,{userData:{...n,type:"StarGeometry"}})}};import{PlaneGeometry as TT}from"three";var Uh=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 TT(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var kh=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=PT(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 PT(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 qi(!0,n,r,e,t,o,i,s,l,c,u,a)}import{TorusKnotGeometry as OT}from"three";var Hh=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 OT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Wh=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=_t.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};import{Vector2 as $h,Vector3 as Qe,Matrix4 as Ki,BufferGeometry as Yh,BufferAttribute as sd,MathUtils as ad}from"three";function qh(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function AT(n,r,e){let t=[new Qe,new Qe,new Qe],o=[new Qe,new Qe,new Qe];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=ad.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new Ki().makeBasis(t[0],t[1],t[2])}var Xh=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??Fn.create({parameters:uc}).userData.shape;return{path:n.path??en.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...la,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new ld(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Yh,{userData:{...n,type:"PathGeometry"}})}},ld=class extends Yh{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)||!qh(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]=AT(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,U)=>A+(U===0||!R?2:1),0),S+=O.verticesCount,w=S});let T=S*u,_,x=0;if(this._isOpenEnded()){try{_=er({windingRule:ve.ODD,elementType:Be.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:g})}catch{_=$c}x=_.vertexCount}let C=T+2*x,P={positions:new Float32Array(C*3),normals:new Float32Array(C*3),uvs:new Float32Array(C*2)},I=[];v.forEach(O=>{this._extrudeRegion(O,b,d,a,P,I,this._isGeometryClosed()&&!this._isOpenEnded())}),_&&(this._closeEnd(_,T,I,P,d[0],a[0],!1),this._closeEnd(_,T+x,I,P,d[d.length-1],a[a.length-1],!0)),this.setAttribute("position",new sd(P.positions,3)),this.setAttribute("normal",new sd(P.normals,3)),this.setAttribute("uv",new sd(P.uvs,2)),this.setIndex(I)}_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 Qe,l=new Qe,c=new Qe,u=new Qe,a=new Qe(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 C=new Ki().makeBasis(_,x,T);t.push(C)}let d=i?l:c,p=i?s:new Qe(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 Ki().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 Ki,d=new Ki;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(ad.lerp(s,s+l,m));let h=ad.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=er({windingRule:t,elementType:Be.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{l=Wi}let c;try{c=er({windingRule:ve.ODD,elementType:Be.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,C=o.roundedCurves.length;do{let P=T-v,I=l.vertices[_*2+0],O=l.vertices[_*2+1],A=l.vertices[T*2+0],R=l.vertices[T*2+1],U=l.vertices[x*2+0],q=l.vertices[x*2+1],te=A-I,$=R-O,W=Math.sqrt(te*te+$*$);te/=W,$/=W;let k=A-U,V=R-q,G=Math.sqrt(k*k+V*V);k/=G,V/=G,S.normals[P*2+0]=-V,S.normals[P*2+1]=k;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+C)%C;let H=D===1?0:1,F=o.roundedCurves[L].getTangent(D),z=o.roundedCurves[Y].getTangent(H);S.continuous[P]=F.dot(z)>.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 Qe,a=new Qe,d=new Qe,p=new Qe,f=new $h;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 Qe(0,0,c?-1:1).applyMatrix4(s),d=new Qe,p=new $h;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 Kh,BufferGeometry as cd}from"three";import{mergeBufferGeometries as IT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Zh(){let n=new cd;return n.setAttribute("position",new Kh(new Float32Array([]),3)),n.setIndex(new Kh(new Uint16Array([]),1)),n}var CT=Zh().attributes,NT=12,ET=1,Hn=class extends cd{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,CT),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=MT(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=>_t.create({shape:S,parameters:{depth:s,extrudeBevelSegments:c,extrudeBevelSize:l,windingRule:s<=0?ve.NONZERO:ve.ODD,subdivisions:this.isLowResolution&&s>0?ET:NT}})),w=b.length?IT(b):Zh();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=Br(new cd,Hn.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 MT(n,r,e){e=e??n.text;let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
1
+ var Zg=Object.create;var $l=Object.defineProperty;var Qg=Object.getOwnPropertyDescriptor;var Jg=Object.getOwnPropertyNames;var e0=Object.getPrototypeOf,t0=Object.prototype.hasOwnProperty;var Us=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),r0=(n,r)=>{for(var e in r)$l(n,e,{get:r[e],enumerable:!0})},o0=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Jg(r))!t0.call(n,o)&&o!==e&&$l(n,o,{get:()=>r[o],enumerable:!(t=Qg(r,o))||t.enumerable});return n};var Hs=(n,r,e)=>(e=n!=null?Zg(e0(n)):{},o0(r||!n||!n.__esModule?$l(e,"default",{value:n,enumerable:!0}):e,n));var km=Us((wc,jm)=>{(function(n,r){typeof wc=="object"?jm.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(wc,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 $m=Us(($a,qm)=>{(function(n,r){typeof $a=="object"&&typeof qm<"u"?r($a):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})($a,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 My=Us(Al=>{(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 Al<"u"&&(Al.Howler=r,Al.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 jg=Us((U7,Fg)=>{Fg.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 VA,Loader as zA}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 Gi(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"&&Gi(t)}return Object.freeze(n)}function hd(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 Ws(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 yd(){return typeof process<"u"}function gd(n,r){for(let e of n)r(e.id,e.data)!==!0&&gd(e.children,r)}function xd(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)xd(e,r)}var He=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,He.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Gi(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&&xd(o,t)}}traverse(e){gd(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)=>hd(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;)Gi(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 yd()||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?Ws(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=Ws(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let d=Ws(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 Ri(o,i)??o}t.apply=n;function r(o,i){return Yl(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=Xl([i],c);return d?(console.log(d),d):i}else return i}t.filterOp=e})(Gr||(Gr={}));function Xl(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=Ri(o.data,r[i]);if(e=e||s!==void 0,s===void 0&&(s=o.data),o.children){let l=Xl(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 n0(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,s=Ri(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 Ri(n,r){if(!Zo(r))return r;if(n instanceof He){let e=Xl(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof he)return n0(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let s=Ri(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 Yl(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let s=Ri(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 Yl(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=Yl(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function vd(n,r){let e={cur:[],result:[],len:0};return n=Vi(n,r,e)??n,[n,e.result]}function qs(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function $s(n){n&&(n.len-=1)}function i0(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function bd(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=Vi(i.data,r,qs(e,s));$s(e),t=t||c!==void 0,c===void 0&&(c=i.data);let d=bd(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 s0(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=Vi(i.data,r,qs(e,s));return $s(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 Vi(n,r,e){if(n instanceof He){let t=bd(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof he)return s0(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,s)=>{let l=Vi(i,r,qs(e,s));return $s(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=Vi(s,r,qs(e,i));$s(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");i0(e)}return t}else return}}var Xs;(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})(Xs||(Xs={}));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 Kl;(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]=vd(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})(Kl||(Kl={}));var Sd=Symbol(),a0=Symbol(),Ks=Symbol(),So=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof Ys);){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[Ks];t&&t(),delete this._children[r]}}}},Ql=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)}},Jl=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))}},wd={get(n,r){if(r===Ks)return()=>{n._parent=null};if(r===Sd)return n._current;if(r===a0)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=Zs(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]}}},l0={...wd,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}},c0={...wd,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[Ks]=()=>{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=Zs(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[Ks]=()=>{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=Zs(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 Zl(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 Ys=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){Zl(this.ts,e,r),Zl(this.actual,t,r),Zl(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Zs(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 Jl(n,r,e),c0):e!==null&&typeof e=="object"?Yo(e)?e:new Proxy(new Ql(n,r,e),l0):e}function ec(n){let r=new Ys(n);return[Zs(r,"",n),r]}function en(n,r){let[e,t]=ec(n);return r(e),t.result()}function Ke(n){return n instanceof Qo||n instanceof Jo?n._current:n!==null&&typeof n=="object"?n[Sd]: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 _d(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 Qs=class{},zi=class extends Qs{constructor(e){super();this.id=e}},Fi=class extends Qs{constructor(e){super();this.data=e}};var rc;try{rc=new TextDecoder}catch{}var ne,Jr,I=0;var Md=[],oc=Md,nc=0,St={},_e,Qr,zt=0,hr=0,Mt,Rr,ht=[],Oe,Td={useRecords:!1,mapsAsObjects:!0},ji=class{},sc=new ji;sc.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 Gd(()=>(ea(),this?this.unpack(r,e):yr.prototype.unpack.call(Td,r,e)));Jr=e>-1?e:r.length,I=0,nc=0,hr=0,Qr=null,oc=Md,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,Js();(!_e||_e.length>0)&&(_e=[])}else St=Td,(!_e||_e.length>0)&&(_e=[]);return Js()}unpackMultiple(r,e){let t,o=0;try{tn=!0;let i=r.length,s=this?this.unpack(r,i):oa.unpack(r,i);if(e){for(e(s);I<i;)if(o=I,e(Js())===!1)return}else{for(t=[s];I<i;)o=I,t.push(Js());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{tn=!1,ea()}}_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 Js(){try{if(!St.trusted&&!tn){let r=_e.sharedLength||0;r<_e.length&&(_e.length=r)}let n=Re();if(I==Jr)_e.restoreStructures&&Pd(),_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&&Pd(),ea(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Pd(){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&&Ed()[n&63];return r?(r.read||(r.read=ac(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[Bd()]=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?lc(r):Ld(r);if(e!=null)return e}return ic(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)):sc;case 194:return!1;case 195:return!0;case 196:return tc(ne[I++]);case 197:return r=Oe.getUint16(I),I+=2,tc(r);case 198:return r=Oe.getUint32(I),I+=4,tc(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=ra[(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 Id(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++,Id(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):d0(r);case 218:return r=Oe.getUint16(I),I+=2,hr>=I?Qr.slice(I-zt,(I+=r)-zt):p0(r);case 219:return r=Oe.getUint32(I),I+=4,hr>=I?Qr.slice(I-zt,(I+=r)-zt):f0(r);case 220:return r=Oe.getUint16(I),I+=2,Ad(r);case 221:return r=Oe.getUint32(I),I+=4,Ad(r);case 222:return r=Oe.getUint16(I),I+=2,Cd(r);case 223:return r=Oe.getUint32(I),I+=4,Cd(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 u0=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function ac(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>u0.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Re);return n.highByte===0&&(n.read=Od(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?Od(r,e):e}var Od=(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]||Ed()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=ac(o,n)),o.read()};function Ed(){let n=Gd(()=>(ne=null,St.getStructures()));return _e=St._mergeStructures(n,_e)}var ic=ta,d0=ta,p0=ta,f0=ta;function ta(n){let r;if(n<16&&(r=lc(n)))return r;if(n>64&&rc)return rc.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 Ad(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=Re();return r}function Cd(n){if(St.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[Bd()]=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 Ld(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 lc(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 tc(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 Nd=new Array(4096);function Bd(){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 ic(n)}else return I--,Re();let r=(n<<5^(n>1?Oe.getUint16(I):n>0?ne[I]:0))&4095,e=Nd[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=[],Nd[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?lc(n):Ld(n);return l!=null?e.string=l:e.string=ic(n)}var Id=(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=ac(e,t),e.read()},Dd=typeof self=="object"?self:global;ht[0]=()=>{};ht[0].noBuffer=!0;ht[101]=()=>{let n=Re();return(Dd[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 cc=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");ht[116]=n=>{let r=n[0],e=cc[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Dd[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 Gd(n){let r=Jr,e=I,t=nc,o=zt,i=hr,s=Qr,l=oc,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,nc=t,zt=o,hr=i,Qr=s,oc=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 ea(){ne=null,Rr=null,_e=null}function Rd(n){n.unpack?ht[n.type]=n.unpack:ht[n.type]=n}var ra=new Array(147);for(let n=0;n<256;n++)ra[n]=+("1e"+Math.floor(45.15-n*.30103));var oa=new yr({useRecords:!1}),m0=oa.unpack,h0=oa.unpackMultiple,y0=oa.unpack,na={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},g0=new Float32Array(1),UC=new Uint8Array(g0.buffer,0,4);var ia;try{ia=new TextEncoder}catch{}var sa,dc,aa=typeof Buffer<"u",uc=aa?Buffer.allocUnsafeSlow:Uint8Array,jd=aa?Buffer:Uint8Array,Vd=aa?4294967296:2144337920,z,je,E=0,gr,xr=null,x0=/[\u0080-\uFFFF]/,ki=Symbol("record-id"),_o=class extends yr{constructor(r){super(r),this.offset=0;let e,t,o,i,s,l,c=0,d=jd.prototype.utf8Write?function(x,N,P){return z.utf8Write(x,N,P)}:ia&&ia.encodeInto?function(x,N){return ia.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 uc(8192),je=new DataView(z.buffer,0,8192),E=0),gr=z.length-10,gr-E<2048?(z=new uc(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[ki]=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=b0(z.subarray(t,E),l.idsToInsert);return l=null,P}return N&Ud?(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][ki]=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&A0&&(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=x0.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*ra[(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=sa.length;O<A;O++){let R=dc[O];if(x instanceof R){let k=sa[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=v0(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[ki];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[ki]=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()[ki]=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>Vd)throw new Error("Packed buffer would be larger than maximum buffer size");N=Math.min(Vd,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 uc(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}};dc=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,ji];sa=[{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?zd(n,16,r):Fd(aa?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==jd&&this.structuredClone?zd(n,cc.indexOf(e.name),r):Fd(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function zd(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 Fd(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 v0(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 b0(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)");dc.unshift(n.Class),sa.unshift(n)}Rd(n)}var kd=new _o({useRecords:!1}),S0=kd.pack,w0=kd.pack;var{NEVER:_0,ALWAYS:T0,DECIMAL_ROUND:P0,DECIMAL_FIT:O0}=na,Ud=512,A0=1024;var Hd=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:zi.prototype.constructor,type:4,write(n){return n.id},read(n){return new zi(n)}});eo({Class:Fi.prototype.constructor,type:5,write(n){return n.data},read(n){return new Fi(n)}});eo({Class:Le.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Le.prototype),n}});function C0(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 pc(n){if(Yo(n))return n;if(Array.isArray(n))return n.map(pc);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=pc(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var la;(t=>{function n(o){return Hd.pack(o)}t.serialize=n;function r(o){return Hd.unpack(o)}t.deserialize=r;function e(o){return C0(n(pc(o))).toString()}t.checksum=e})(la||(la={}));var Wd;(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})(Wd||(Wd={}));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 qd;(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})(qd||(qd={}));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 ca;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ca||(ca={}));var $d;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})($d||($d={}));var Xd;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(Xd||(Xd={}));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(N0.forEach(s=>{Object.assign(i,{[s]:o[s]??t[s]})}),i.radial={...t.radial},o.radial){let s=t.radial,l=o.radial;I0.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;M0.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;E0.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;L0.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;B0.forEach(c=>{Object.assign(i.randomnessObject,{[c]:l[c]??s[c]})})}return i}e.merge=r})(vr||(vr={}));var ua;(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})(ua||(ua={}));var N0=["count"],I0=["radius","start","end","position","scale","rotation"],M0=["position","scale","rotation"],E0=["count","size"],L0=["count","position","scale","rotation"],B0=["strength","scale","rotation","position","movement","seed","freqScale"];var da;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(da||(da={}));var pa;(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")}})(pa||(pa={}));var fc;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(fc||(fc={}));var mc;(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})(mc||(mc={}));var fa;(r=>r.defaultData={...mc.defaultData,...fc.defaultData})(fa||(fa={}));var rn;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(rn||(rn={}));var Yd;(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})(Yd||(Yd={}));function Zd(n){return n.type!=="displace"}var Kd;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(Kd||(Kd={}));var Qd=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Jd=["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 hc={type:"Ellipse",width:100,height:100,spikes:64,angle:360,innerRadius:0};var ma;(r=>{function n(e,t){let o={...e};return D0.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(ma||(ma={}));var ha={shape:hc,depth:1,offset:0,bevel:0,bevelSides:1,angle:0,twist:0,startScale:1,endScale:1},D0=["depth","offset","angle","twist","startScale","endScale"];var Ui;(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})(Ui||(Ui={}));var ya;(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,ma.merge(o.extrusion,t.extrusion))),o}r.merge=n})(ya||(ya={}));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:ha};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 ep(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 ga(n){return Array.isArray(n)?n:[n]}function tp(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 G0=typeof global=="object"&&global&&global.Object===Object&&global,xa=G0;var R0=typeof self=="object"&&self&&self.Object===Object&&self,V0=xa||R0||Function("return this")(),We=V0;var z0=We.Symbol,Qe=z0;var rp=Object.prototype,F0=rp.hasOwnProperty,j0=rp.toString,Hi=Qe?Qe.toStringTag:void 0;function k0(n){var r=F0.call(n,Hi),e=n[Hi];try{n[Hi]=void 0;var t=!0}catch{}var o=j0.call(n);return t&&(r?n[Hi]=e:delete n[Hi]),o}var op=k0;var U0=Object.prototype,H0=U0.toString;function W0(n){return H0.call(n)}var np=W0;var q0="[object Null]",$0="[object Undefined]",ip=Qe?Qe.toStringTag:void 0;function X0(n){return n==null?n===void 0?$0:q0:ip&&ip in Object(n)?op(n):np(n)}var Et=X0;function Y0(n){return n!=null&&typeof n=="object"}var st=Y0;var K0="[object Symbol]";function Z0(n){return typeof n=="symbol"||st(n)&&Et(n)==K0}var sn=Z0;function Q0(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 va=Q0;var J0=Array.isArray,Ve=J0;var ex=1/0,sp=Qe?Qe.prototype:void 0,ap=sp?sp.toString:void 0;function lp(n){if(typeof n=="string")return n;if(Ve(n))return va(n,lp)+"";if(sn(n))return ap?ap.call(n):"";var r=n+"";return r=="0"&&1/n==-ex?"-0":r}var cp=lp;function tx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var Lt=tx;function rx(n){return n}var up=rx;var ox="[object AsyncFunction]",nx="[object Function]",ix="[object GeneratorFunction]",sx="[object Proxy]";function ax(n){if(!Lt(n))return!1;var r=Et(n);return r==nx||r==ix||r==ox||r==sx}var ba=ax;var lx=We["__core-js_shared__"],Sa=lx;var dp=function(){var n=/[^.]+$/.exec(Sa&&Sa.keys&&Sa.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function cx(n){return!!dp&&dp in n}var pp=cx;var ux=Function.prototype,dx=ux.toString;function px(n){if(n!=null){try{return dx.call(n)}catch{}try{return n+""}catch{}}return""}var zr=px;var fx=/[\\^$.*+?()[\]{}|]/g,mx=/^\[object .+?Constructor\]$/,hx=Function.prototype,yx=Object.prototype,gx=hx.toString,xx=yx.hasOwnProperty,vx=RegExp("^"+gx.call(xx).replace(fx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function bx(n){if(!Lt(n)||pp(n))return!1;var r=ba(n)?vx:mx;return r.test(zr(n))}var fp=bx;function Sx(n,r){return n?.[r]}var mp=Sx;function wx(n,r){var e=mp(n,r);return fp(e)?e:void 0}var _t=wx;var _x=_t(We,"WeakMap"),wa=_x;var hp=Object.create,Tx=function(){function n(){}return function(r){if(!Lt(r))return{};if(hp)return hp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),yp=Tx;function Px(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 gp=Px;function Ox(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var xp=Ox;var Ax=800,Cx=16,Nx=Date.now;function Ix(n){var r=0,e=0;return function(){var t=Nx(),o=Cx-(t-e);if(e=t,o>0){if(++r>=Ax)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var vp=Ix;function Mx(n){return function(){return n}}var bp=Mx;var Ex=function(){try{var n=_t(Object,"defineProperty");return n({},"",{}),n}catch{}}(),an=Ex;var Lx=an?function(n,r){return an(n,"toString",{configurable:!0,enumerable:!1,value:bp(r),writable:!0})}:up,Sp=Lx;var Bx=vp(Sp),wp=Bx;function Dx(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var _p=Dx;var Gx=9007199254740991,Rx=/^(?:0|[1-9]\d*)$/;function Vx(n,r){var e=typeof n;return r=r??Gx,!!r&&(e=="number"||e!="symbol"&&Rx.test(n))&&n>-1&&n%1==0&&n<r}var ln=Vx;function zx(n,r,e){r=="__proto__"&&an?an(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var _a=zx;function Fx(n,r){return n===r||n!==n&&r!==r}var cn=Fx;var jx=Object.prototype,kx=jx.hasOwnProperty;function Ux(n,r,e){var t=n[r];(!(kx.call(n,r)&&cn(t,e))||e===void 0&&!(r in n))&&_a(n,r,e)}var un=Ux;function Hx(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?_a(e,l,c):un(e,l,c)}return e}var br=Hx;var Tp=Math.max;function Wx(n,r,e){return r=Tp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Tp(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),gp(n,this,l)}}var Pp=Wx;var qx=9007199254740991;function $x(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=qx}var dn=$x;function Xx(n){return n!=null&&dn(n.length)&&!ba(n)}var Ta=Xx;var Yx=Object.prototype;function Kx(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Yx;return n===e}var pn=Kx;function Zx(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var Op=Zx;var Qx="[object Arguments]";function Jx(n){return st(n)&&Et(n)==Qx}var yc=Jx;var Ap=Object.prototype,ev=Ap.hasOwnProperty,tv=Ap.propertyIsEnumerable,rv=yc(function(){return arguments}())?yc:function(n){return st(n)&&ev.call(n,"callee")&&!tv.call(n,"callee")},fn=rv;function ov(){return!1}var Cp=ov;var Mp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Np=Mp&&typeof module=="object"&&module&&!module.nodeType&&module,nv=Np&&Np.exports===Mp,Ip=nv?We.Buffer:void 0,iv=Ip?Ip.isBuffer:void 0,sv=iv||Cp,Po=sv;var av="[object Arguments]",lv="[object Array]",cv="[object Boolean]",uv="[object Date]",dv="[object Error]",pv="[object Function]",fv="[object Map]",mv="[object Number]",hv="[object Object]",yv="[object RegExp]",gv="[object Set]",xv="[object String]",vv="[object WeakMap]",bv="[object ArrayBuffer]",Sv="[object DataView]",wv="[object Float32Array]",_v="[object Float64Array]",Tv="[object Int8Array]",Pv="[object Int16Array]",Ov="[object Int32Array]",Av="[object Uint8Array]",Cv="[object Uint8ClampedArray]",Nv="[object Uint16Array]",Iv="[object Uint32Array]",Ee={};Ee[wv]=Ee[_v]=Ee[Tv]=Ee[Pv]=Ee[Ov]=Ee[Av]=Ee[Cv]=Ee[Nv]=Ee[Iv]=!0;Ee[av]=Ee[lv]=Ee[bv]=Ee[cv]=Ee[Sv]=Ee[uv]=Ee[dv]=Ee[pv]=Ee[fv]=Ee[mv]=Ee[hv]=Ee[yv]=Ee[gv]=Ee[xv]=Ee[vv]=!1;function Mv(n){return st(n)&&dn(n.length)&&!!Ee[Et(n)]}var Ep=Mv;function Ev(n){return function(r){return n(r)}}var mn=Ev;var Lp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wi=Lp&&typeof module=="object"&&module&&!module.nodeType&&module,Lv=Wi&&Wi.exports===Lp,gc=Lv&&xa.process,Bv=function(){try{var n=Wi&&Wi.require&&Wi.require("util").types;return n||gc&&gc.binding&&gc.binding("util")}catch{}}(),Fr=Bv;var Bp=Fr&&Fr.isTypedArray,Dv=Bp?mn(Bp):Ep,Pa=Dv;var Gv=Object.prototype,Rv=Gv.hasOwnProperty;function Vv(n,r){var e=Ve(n),t=!e&&fn(n),o=!e&&!t&&Po(n),i=!e&&!t&&!o&&Pa(n),s=e||t||o||i,l=s?Op(n.length,String):[],c=l.length;for(var d in n)(r||Rv.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 Oa=Vv;function zv(n,r){return function(e){return n(r(e))}}var Aa=zv;var Fv=Aa(Object.keys,Object),Dp=Fv;var jv=Object.prototype,kv=jv.hasOwnProperty;function Uv(n){if(!pn(n))return Dp(n);var r=[];for(var e in Object(n))kv.call(n,e)&&e!="constructor"&&r.push(e);return r}var Gp=Uv;function Hv(n){return Ta(n)?Oa(n):Gp(n)}var hn=Hv;function Wv(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Rp=Wv;var qv=Object.prototype,$v=qv.hasOwnProperty;function Xv(n){if(!Lt(n))return Rp(n);var r=pn(n),e=[];for(var t in n)t=="constructor"&&(r||!$v.call(n,t))||e.push(t);return e}var Vp=Xv;function Yv(n){return Ta(n)?Oa(n,!0):Vp(n)}var yn=Yv;var Kv=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Zv=/^\w*$/;function Qv(n,r){if(Ve(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||sn(n)?!0:Zv.test(n)||!Kv.test(n)||r!=null&&n in Object(r)}var zp=Qv;var Jv=_t(Object,"create"),jr=Jv;function eb(){this.__data__=jr?jr(null):{},this.size=0}var Fp=eb;function tb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var jp=tb;var rb="__lodash_hash_undefined__",ob=Object.prototype,nb=ob.hasOwnProperty;function ib(n){var r=this.__data__;if(jr){var e=r[n];return e===rb?void 0:e}return nb.call(r,n)?r[n]:void 0}var kp=ib;var sb=Object.prototype,ab=sb.hasOwnProperty;function lb(n){var r=this.__data__;return jr?r[n]!==void 0:ab.call(r,n)}var Up=lb;var cb="__lodash_hash_undefined__";function ub(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=jr&&r===void 0?cb:r,this}var Hp=ub;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=Fp;gn.prototype.delete=jp;gn.prototype.get=kp;gn.prototype.has=Up;gn.prototype.set=Hp;var xc=gn;function db(){this.__data__=[],this.size=0}var Wp=db;function pb(n,r){for(var e=n.length;e--;)if(cn(n[e][0],r))return e;return-1}var no=pb;var fb=Array.prototype,mb=fb.splice;function hb(n){var r=this.__data__,e=no(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():mb.call(r,e,1),--this.size,!0}var qp=hb;function yb(n){var r=this.__data__,e=no(r,n);return e<0?void 0:r[e][1]}var $p=yb;function gb(n){return no(this.__data__,n)>-1}var Xp=gb;function xb(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 Yp=xb;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=Wp;xn.prototype.delete=qp;xn.prototype.get=$p;xn.prototype.has=Xp;xn.prototype.set=Yp;var io=xn;var vb=_t(We,"Map"),so=vb;function bb(){this.size=0,this.__data__={hash:new xc,map:new(so||io),string:new xc}}var Kp=bb;function Sb(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var Zp=Sb;function wb(n,r){var e=n.__data__;return Zp(r)?e[typeof r=="string"?"string":"hash"]:e.map}var ao=wb;function _b(n){var r=ao(this,n).delete(n);return this.size-=r?1:0,r}var Qp=_b;function Tb(n){return ao(this,n).get(n)}var Jp=Tb;function Pb(n){return ao(this,n).has(n)}var ef=Pb;function Ob(n,r){var e=ao(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var tf=Ob;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=Kp;vn.prototype.delete=Qp;vn.prototype.get=Jp;vn.prototype.has=ef;vn.prototype.set=tf;var Oo=vn;var Ab="Expected a function";function vc(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(Ab);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(vc.Cache||Oo),e}vc.Cache=Oo;var rf=vc;var Cb=500;function Nb(n){var r=rf(n,function(t){return e.size===Cb&&e.clear(),t}),e=r.cache;return r}var of=Nb;var Ib=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Mb=/\\(\\)?/g,Eb=of(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Ib,function(e,t,o,i){r.push(o?i.replace(Mb,"$1"):t||e)}),r}),nf=Eb;function Lb(n){return n==null?"":cp(n)}var sf=Lb;function Bb(n,r){return Ve(n)?n:zp(n,r)?[n]:nf(sf(n))}var Ft=Bb;var Db=1/0;function Gb(n){if(typeof n=="string"||sn(n))return n;var r=n+"";return r=="0"&&1/n==-Db?"-0":r}var lo=Gb;function Rb(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 Ca=Rb;function Vb(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var bn=Vb;var af=Qe?Qe.isConcatSpreadable:void 0;function zb(n){return Ve(n)||fn(n)||!!(af&&n&&n[af])}var lf=zb;function cf(n,r,e,t,o){var i=-1,s=n.length;for(e||(e=lf),o||(o=[]);++i<s;){var l=n[i];r>0&&e(l)?r>1?cf(l,r-1,e,t,o):bn(o,l):t||(o[o.length]=l)}return o}var uf=cf;function Fb(n){var r=n==null?0:n.length;return r?uf(n,1):[]}var df=Fb;function jb(n){return wp(Pp(n,void 0,df),n+"")}var Na=jb;var kb=Aa(Object.getPrototypeOf,Object),Sn=kb;var Ub="[object Object]",Hb=Function.prototype,Wb=Object.prototype,pf=Hb.toString,qb=Wb.hasOwnProperty,$b=pf.call(Object);function Xb(n){if(!st(n)||Et(n)!=Ub)return!1;var r=Sn(n);if(r===null)return!0;var e=qb.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&pf.call(e)==$b}var ff=Xb;function Yb(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 mf=Yb;function Kb(){this.__data__=new io,this.size=0}var hf=Kb;function Zb(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var yf=Zb;function Qb(n){return this.__data__.get(n)}var gf=Qb;function Jb(n){return this.__data__.has(n)}var xf=Jb;var eS=200;function tS(n,r){var e=this.__data__;if(e instanceof io){var t=e.__data__;if(!so||t.length<eS-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 vf=tS;function wn(n){var r=this.__data__=new io(n);this.size=r.size}wn.prototype.clear=hf;wn.prototype.delete=yf;wn.prototype.get=gf;wn.prototype.has=xf;wn.prototype.set=vf;var _n=wn;function rS(n,r){return n&&br(r,hn(r),n)}var bf=rS;function oS(n,r){return n&&br(r,yn(r),n)}var Sf=oS;var Pf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,wf=Pf&&typeof module=="object"&&module&&!module.nodeType&&module,nS=wf&&wf.exports===Pf,_f=nS?We.Buffer:void 0,Tf=_f?_f.allocUnsafe:void 0;function iS(n,r){if(r)return n.slice();var e=n.length,t=Tf?Tf(e):new n.constructor(e);return n.copy(t),t}var Of=iS;function sS(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 Af=sS;function aS(){return[]}var Ia=aS;var lS=Object.prototype,cS=lS.propertyIsEnumerable,Cf=Object.getOwnPropertySymbols,uS=Cf?function(n){return n==null?[]:(n=Object(n),Af(Cf(n),function(r){return cS.call(n,r)}))}:Ia,Tn=uS;function dS(n,r){return br(n,Tn(n),r)}var Nf=dS;var pS=Object.getOwnPropertySymbols,fS=pS?function(n){for(var r=[];n;)bn(r,Tn(n)),n=Sn(n);return r}:Ia,Ma=fS;function mS(n,r){return br(n,Ma(n),r)}var If=mS;function hS(n,r,e){var t=r(n);return Ve(n)?t:bn(t,e(n))}var Ea=hS;function yS(n){return Ea(n,hn,Tn)}var qi=yS;function gS(n){return Ea(n,yn,Ma)}var La=gS;var xS=_t(We,"DataView"),Ba=xS;var vS=_t(We,"Promise"),Da=vS;var bS=_t(We,"Set"),Ga=bS;var Mf="[object Map]",SS="[object Object]",Ef="[object Promise]",Lf="[object Set]",Bf="[object WeakMap]",Df="[object DataView]",wS=zr(Ba),_S=zr(so),TS=zr(Da),PS=zr(Ga),OS=zr(wa),Ao=Et;(Ba&&Ao(new Ba(new ArrayBuffer(1)))!=Df||so&&Ao(new so)!=Mf||Da&&Ao(Da.resolve())!=Ef||Ga&&Ao(new Ga)!=Lf||wa&&Ao(new wa)!=Bf)&&(Ao=function(n){var r=Et(n),e=r==SS?n.constructor:void 0,t=e?zr(e):"";if(t)switch(t){case wS:return Df;case _S:return Mf;case TS:return Ef;case PS:return Lf;case OS:return Bf}return r});var kr=Ao;var AS=Object.prototype,CS=AS.hasOwnProperty;function NS(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&CS.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Gf=NS;var IS=We.Uint8Array,Pn=IS;function MS(n){var r=new n.constructor(n.byteLength);return new Pn(r).set(new Pn(n)),r}var On=MS;function ES(n,r){var e=r?On(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Rf=ES;var LS=/\w*$/;function BS(n){var r=new n.constructor(n.source,LS.exec(n));return r.lastIndex=n.lastIndex,r}var Vf=BS;var zf=Qe?Qe.prototype:void 0,Ff=zf?zf.valueOf:void 0;function DS(n){return Ff?Object(Ff.call(n)):{}}var jf=DS;function GS(n,r){var e=r?On(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var kf=GS;var RS="[object Boolean]",VS="[object Date]",zS="[object Map]",FS="[object Number]",jS="[object RegExp]",kS="[object Set]",US="[object String]",HS="[object Symbol]",WS="[object ArrayBuffer]",qS="[object DataView]",$S="[object Float32Array]",XS="[object Float64Array]",YS="[object Int8Array]",KS="[object Int16Array]",ZS="[object Int32Array]",QS="[object Uint8Array]",JS="[object Uint8ClampedArray]",e1="[object Uint16Array]",t1="[object Uint32Array]";function r1(n,r,e){var t=n.constructor;switch(r){case WS:return On(n);case RS:case VS:return new t(+n);case qS:return Rf(n,e);case $S:case XS:case YS:case KS:case ZS:case QS:case JS:case e1:case t1:return kf(n,e);case zS:return new t;case FS:case US:return new t(n);case jS:return Vf(n);case kS:return new t;case HS:return jf(n)}}var Uf=r1;function o1(n){return typeof n.constructor=="function"&&!pn(n)?yp(Sn(n)):{}}var Hf=o1;var n1="[object Map]";function i1(n){return st(n)&&kr(n)==n1}var Wf=i1;var qf=Fr&&Fr.isMap,s1=qf?mn(qf):Wf,$f=s1;var a1="[object Set]";function l1(n){return st(n)&&kr(n)==a1}var Xf=l1;var Yf=Fr&&Fr.isSet,c1=Yf?mn(Yf):Xf,Kf=c1;var u1=1,d1=2,p1=4,Zf="[object Arguments]",f1="[object Array]",m1="[object Boolean]",h1="[object Date]",y1="[object Error]",Qf="[object Function]",g1="[object GeneratorFunction]",x1="[object Map]",v1="[object Number]",Jf="[object Object]",b1="[object RegExp]",S1="[object Set]",w1="[object String]",_1="[object Symbol]",T1="[object WeakMap]",P1="[object ArrayBuffer]",O1="[object DataView]",A1="[object Float32Array]",C1="[object Float64Array]",N1="[object Int8Array]",I1="[object Int16Array]",M1="[object Int32Array]",E1="[object Uint8Array]",L1="[object Uint8ClampedArray]",B1="[object Uint16Array]",D1="[object Uint32Array]",Me={};Me[Zf]=Me[f1]=Me[P1]=Me[O1]=Me[m1]=Me[h1]=Me[A1]=Me[C1]=Me[N1]=Me[I1]=Me[M1]=Me[x1]=Me[v1]=Me[Jf]=Me[b1]=Me[S1]=Me[w1]=Me[_1]=Me[E1]=Me[L1]=Me[B1]=Me[D1]=!0;Me[y1]=Me[Qf]=Me[T1]=!1;function Ra(n,r,e,t,o,i){var s,l=r&u1,c=r&d1,d=r&p1;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=Gf(n),!l)return xp(n,s)}else{var u=kr(n),p=u==Qf||u==g1;if(Po(n))return Of(n,l);if(u==Jf||u==Zf||p&&!o){if(s=c||p?{}:Hf(n),!l)return c?If(n,Sf(s,n)):Nf(n,bf(s,n))}else{if(!Me[u])return o?n:{};s=Uf(n,u,l)}}i||(i=new _n);var f=i.get(n);if(f)return f;i.set(n,s),Kf(n)?n.forEach(function(y){s.add(Ra(y,r,e,y,n,i))}):$f(n)&&n.forEach(function(y,g){s.set(g,Ra(y,r,e,g,n,i))});var m=d?c?La:qi:c?yn:hn,h=a?void 0:m(n);return _p(h||n,function(y,g){h&&(g=y,y=n[g]),un(s,g,Ra(y,r,e,g,n,i))}),s}var Va=Ra;var G1=1,R1=4;function V1(n){return Va(n,G1|R1)}var Ur=V1;var z1="__lodash_hash_undefined__";function F1(n){return this.__data__.set(n,z1),this}var em=F1;function j1(n){return this.__data__.has(n)}var tm=j1;function za(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Oo;++r<e;)this.add(n[r])}za.prototype.add=za.prototype.push=em;za.prototype.has=tm;var rm=za;function k1(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 om=k1;function U1(n,r){return n.has(r)}var nm=U1;var H1=1,W1=2;function q1(n,r,e,t,o,i){var s=e&H1,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&W1?new rm: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(!om(r,function(g,v){if(!nm(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 Fa=q1;function $1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var im=$1;function X1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var sm=X1;var Y1=1,K1=2,Z1="[object Boolean]",Q1="[object Date]",J1="[object Error]",ew="[object Map]",tw="[object Number]",rw="[object RegExp]",ow="[object Set]",nw="[object String]",iw="[object Symbol]",sw="[object ArrayBuffer]",aw="[object DataView]",am=Qe?Qe.prototype:void 0,bc=am?am.valueOf:void 0;function lw(n,r,e,t,o,i,s){switch(e){case aw:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case sw:return!(n.byteLength!=r.byteLength||!i(new Pn(n),new Pn(r)));case Z1:case Q1:case tw:return cn(+n,+r);case J1:return n.name==r.name&&n.message==r.message;case rw:case nw:return n==r+"";case ew:var l=im;case ow:var c=t&Y1;if(l||(l=sm),n.size!=r.size&&!c)return!1;var d=s.get(n);if(d)return d==r;t|=K1,s.set(n,r);var a=Fa(l(n),l(r),t,o,i,s);return s.delete(n),a;case iw:if(bc)return bc.call(n)==bc.call(r)}return!1}var lm=lw;var cw=1,uw=Object.prototype,dw=uw.hasOwnProperty;function pw(n,r,e,t,o,i){var s=e&cw,l=qi(n),c=l.length,d=qi(r),a=d.length;if(c!=a&&!s)return!1;for(var u=c;u--;){var p=l[u];if(!(s?p in r:dw.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 cm=pw;var fw=1,um="[object Arguments]",dm="[object Array]",ja="[object Object]",mw=Object.prototype,pm=mw.hasOwnProperty;function hw(n,r,e,t,o,i){var s=Ve(n),l=Ve(r),c=s?dm:kr(n),d=l?dm:kr(r);c=c==um?ja:c,d=d==um?ja:d;var a=c==ja,u=d==ja,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||Pa(n)?Fa(n,r,e,t,o,i):lm(n,r,c,e,t,o,i);if(!(e&fw)){var f=a&&pm.call(n,"__wrapped__"),m=u&&pm.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),cm(n,r,e,t,o,i)):!1}var fm=hw;function mm(n,r,e,t,o){return n===r?!0:n==null||r==null||!st(n)&&!st(r)?n!==n&&r!==r:fm(n,r,e,t,mm,o)}var hm=mm;function yw(n,r){return n!=null&&r in Object(n)}var ym=yw;function gw(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 gm=gw;function xw(n,r){return n!=null&&gm(n,r,ym)}var xm=xw;function vw(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var vm=vw;function bw(n,r){return r.length<2?n:Ca(n,mf(r,0,-1))}var bm=bw;function Sw(n,r){return hm(n,r)}var $i=Sw;function ww(n,r){return r=Ft(r,n),n=bm(n,r),n==null||delete n[lo(vm(r))]}var Sm=ww;function _w(n){return ff(n)?void 0:n}var wm=_w;var Tw=1,Pw=2,Ow=4,Aw=Na(function(n,r){var e={};if(n==null)return e;var t=!1;r=va(r,function(i){return i=Ft(i,n),t||(t=i.length>1),i}),br(n,La(n),e),t&&(e=Va(e,Tw|Pw|Ow,wm));for(var o=r.length;o--;)Sm(e,r[o]);return e}),An=Aw;function Cw(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 _m=Cw;function Nw(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var s=r[t],l=Ca(n,s);e(l,s)&&_m(i,Ft(s,n),l)}return i}var Tm=Nw;function Iw(n,r){return Tm(n,r,function(e,t){return xm(n,t)})}var Pm=Iw;var Mw=Na(function(n,r){return n==null?{}:Pm(n,r)}),Cn=Mw;var Om;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Om||(Om={}));var Nn;(o=>{o.identity={...ca.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 ep({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 Am;(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]})(Am||(Am={}));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 Cm;(r=>r.defaultData={type:"Empty",...Bt.defaultData})(Cm||(Cm={}));var Nm;(r=>r.defaultData={type:"Component",...Bt.defaultData})(Nm||(Nm={}));var Co;(r=>r.defaultData={type:"Mesh",...Bt.defaultData,...fa.defaultData})(Co||(Co={}));var In;(r=>r.defaultData={...Bt.defaultData,...Nn.identity,...To.defaultData})(In||(In={}));var Im;(r=>{function n(e){return{...Bt.defaultData,...pa.defaultData(e)}}r.defaultData=n})(Im||(Im={}));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 Mm;(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")}))(Mm||(Mm={}));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(...ua.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:ya.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(da.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 ka;(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})(ka||(ka={}));var Ln;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII="})(Ln||(Ln={}));var Ua;(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})(Ua||(Ua={}));import{MathUtils as Ha}from"three";function Em(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 Yi(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function Ki(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 Ew(n){Object.assign(n.scene.publish,{orbitControls:{...En.defaultData,...Ke(n.scene.publish.orbitControls)}})}function Lw(n){Object.assign(n.scene.publish.settings,{video:{...ka.defaultData.settings.video,...Ke(n.scene.publish.settings.video)}})}function Bw(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((Qd.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[s,l]of Object.entries(i))(Jd.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 Dw(n){n.scene.publish.withBackground=!0}function Gw(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function Rw(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 Vw(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 zw(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 Fw(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 jw(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 Lm(n){n.layers===void 0&&Object.assign(n,wt.defaultTwoLayerData("lambert"))}function Sc(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 kw(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Bm(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Sc(t)}):"material"in e&&typeof e.material!="string"&&Sc(e.material)}),Object.values(n.shared.materials).forEach(r=>Sc(r))}function Uw(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 Hw(n){n.shared.audios=Vr({},Ne.prototype)}function Ww(n){n.shared.videos=Vr({},Ne.prototype)}function qw(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 $w(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 Xw(n){n.scene.publish.settings.web.preload=!1}function Dm(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 Gm(n){n.layers&&n.layers.forEach(r=>{Zd(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 Yw(n){n.shared.fonts=Vr({},Ne.prototype)}function Kw(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 Zw(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=Kw(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 Qw(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:Ha.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:Ha.generateUUID(),data:d},{fi:1,id:Ha.generateUUID(),data:p})};i.push({fi:c,id:l,data:f})}),delete o.targets)}})})}function Jw(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:Ha.generateUUID(),data:{type:o,actions:s}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Rm(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 Vm(n){Yi(n,Rm),Ki(n,Rm)}function e_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function t_(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 r_(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 o_(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 n_(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 i_(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 s_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function a_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function l_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}var zm=38;function Fm(n){let r=n.schema??0;r!==zm&&(console.warn("updating from ",r,"to ",zm),r<1&&(Ki(n,Em),Yi(n,Em),n.schema=1),r<2&&(Ew(n),n.schema=2),r<3&&(Bw(n),n.schema=3),r<4&&(Dw(n),n.schema=4),r<5&&(Gw(n),n.schema=5),r<6&&(Rw(n),n.schema=6),r<7&&(Vw(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Bm(n),n.schema=9),r<10&&(kw(n),n.schema=10),r<11&&(Uw(n),n.schema=11),r<12&&(Bm(n),n.schema=12),r<13&&(Hw(n),n.schema=13),r<14&&(qw(n),n.schema=14),r<15&&($w(n),n.schema=15),r<16&&(Xw(n),n.schema=16),r<17&&(Ki(n,Dm),Yi(n,Dm),n.schema=17),r<18&&(Ki(n,Lm),Yi(n,Lm),n.schema=18),r<19&&(Lw(n),n.schema=19),r<20&&(Yw(n),Zw(n),n.schema=20),r<21&&(Qw(n),Jw(n),n.schema=21),r<22&&(Vm(n),n.schema=22),r<23&&(e_(n),n.schema=23),r<24&&(t_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(Ww(n),r<25&&(n.schema=25)),r<26&&(zw(n),n.schema=26),r<27&&(Fw(n),n.schema=27),r<28&&(Vm(n),n.schema=28),r<29&&(jw(n),n.schema=29),r<30&&(r_(n),n.schema=30),r<31&&(o_(n),n.schema=31),r<33&&(n_(n),n.schema=33),r<34&&(i_(n),n.schema=34),r<35&&(s_(n),n.schema=35),r<36&&(a_(n),n.schema=36),r<37&&(l_(n),n.schema=37),r<38&&(Ki(n,Gm),Yi(n,Gm),n.schema=38))}var Ai=Hs(km());import{Object3D as EO,Vector3 as Rt,Euler as Ju,MathUtils as tg,Matrix4 as qo}from"three";var c_=.5*(Math.sqrt(3)-1),Qi=(3-Math.sqrt(3))/6,u_=1/3,Sr=1/6,yR=(Math.sqrt(5)-1)/4,gR=(5-Math.sqrt(5))/20,Ji=n=>Math.floor(n)|0,Um=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]),_c=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 Wa(n=Math.random){let r=Wm(n),e=new Float64Array(r).map(o=>Um[o%12*2]),t=new Float64Array(r).map(o=>Um[o%12*2+1]);return function(i,s){let l=0,c=0,d=0,a=(i+s)*c_,u=Ji(i+a),p=Ji(s+a),f=(u+p)*Qi,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+Qi,S=g-b+Qi,T=y-1+2*Qi,_=g-1+2*Qi,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 Hm(n=Math.random){let r=Wm(n),e=new Float64Array(r).map(i=>_c[i%12*3]),t=new Float64Array(r).map(i=>_c[i%12*3+1]),o=new Float64Array(r).map(i=>_c[i%12*3+2]);return function(s,l,c){let d,a,u,p,f=(s+l+c)*u_,m=Ji(s+f),h=Ji(l+f),y=Ji(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 Wm(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 d_}from"three";var Zt=new d_,qa=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 y_}from"three";var Xm=Hs($m());import{Object3D as p_,Matrix4 as Hr}from"three";var f_=new Hr,m_=new Hr,h_=new Hr,es;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(es||(es={}));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 p_&&(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)es.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,Xm.SVD)(o),c=f_.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=m_.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=h_.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 Tc=class extends Bn(y_){},g_=n=>n.type==="Mesh",Wr=class extends Tc{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 g_(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 iP,BufferGeometry as sP,MeshBasicMaterial as aP}from"three";import{Matrix4 as oP,Mesh as nP}from"three";import{Matrix4 as Ya,Vector3 as __,Euler as T_}from"three";import{Box3 as x_,Line3 as v_,Matrix4 as Pc,Vector3 as Dt}from"three";var Io=new Dt,Mo=new Dt,Dn=new Pc,Km=[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)],b_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],S_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Ym=(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)):Km.forEach(t=>{e.push(t.clone().multiply(Mo).add(Io).applyMatrix4(Dn))})},ts=class extends x_{constructor(){super(...arguments);this.matrix=new Pc;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 Pc().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}Ym(s,t,i)}}):Ym(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=Km.map(e=>e.clone().multiply(Mo).applyMatrix4(Dn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=b_.map(([e,t])=>new v_(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=S_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Qt={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};import{CurvePath as w_,CubicBezierCurve3 as Oc,Vector3 as Jt}from"three";var Cc=class extends w_{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 Nc=.001;function Ic(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Nc}function Ac(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 Ic(e,t,i)&&Ic(e,o,i)}function Xa(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++)Ic(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=Ac(v,u),N=Ac(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(!Ac(e[u].data,e[p].data))f.position.distanceTo(m.position)>Nc&&(h=new Oc(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)>Nc&&(h=new Oc(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 Oc(f,x,N,m)}let d=new Cc;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 rs=n=>Ce.is(n),P_={type:"completeState",isfromEntity:!0},Ka=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 ts;this._recursiveBBox=new ts;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=Xs.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=>{rs(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)rs(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)rs(s)&&s.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)rs(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=>rs(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=Xa(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 Ya;c.updateMatrixWorld();let m=new Ya().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:d.rotation};if(l==="tangential"){let y=new Ya().extractRotation(c.matrixWorld),g=a.getTangentAt(u).applyMatrix4(y).add(p),v=new Ya().lookAt(p,g,new __(0,1,0)),b=new T_().setFromRotationMatrix(v);h={...h,rotation:[b.x,b.y,b.z]}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(P_)})}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 C_}from"three";import{BufferGeometry as O_,CylinderGeometry as A_,Float32BufferAttribute as Mc,Vector2 as er,Vector3 as Za}from"three";var Qm=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 os(d,a,t,o,i,s,l,c*Math.PI/180,u,u,p,f):m=new A_(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 Zm(n){return new er(n.y,-n.x)}var os=class extends O_{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 Za,S=new Za;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=Zm(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=Zm(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 Mc(h,3)),this.setAttribute("normal",new Mc(y,3)),this.setAttribute("uv",new Mc(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 Za,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 Za,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 Jm=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 os(0,r/2,t,o,i,s,l,c*Math.PI/180,d,a,u,0,!0):p=new C_(r/2,t,o,i,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};import{BoxGeometry as N_,BufferGeometry as I_,Float32BufferAttribute as Ec,Vector3 as ns}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,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 N_(r,e,t,o,i,s):d=new Bc(r,e,t,o,i,s,l,c),Object.assign(d,{userData:{...n,type:"CubeGeometry"}})}},Lc=Math.PI/2,Bc=class extends I_{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 Ec(u,3)),this.setAttribute("normal",new Ec(p,3)),this.setAttribute("uv",new Ec(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 ns;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 ns,G=new ns;for(let B=0;B<c+1;B++){let L=B/c*Lc,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 ns,_=new ns(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=Lc*(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++),$+=Lc/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 M_,Float32BufferAttribute as Dc,Triangle as E_,Vector3 as qr,Vector2 as Gc}from"three";var po=class extends M_{constructor(r=[],e=[],t="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let l=[],c=[],d=[];a(),u(),this.setAttribute("position",new Dc(l,3)),this.setAttribute("normal",new Dc(d,3)),this.setAttribute("uv",new Dc(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 E_,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 Gc,v=new Gc,b=new Gc,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 L_}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,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 is(r*.5,i,s):new L_(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"DodecahedronGeometry"}})}},is=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 is(r.radius,r.corner,r.cornerSides)}};import{Plane as H_,Shape as yh,Vector2 as $r,Vector3 as W_,MathUtils as Uc,LineCurve as Hc,QuadraticBezierCurve as gh,CubicBezierCurve as tl}from"three";import{CubicBezierCurve as Qa,EllipseCurve as B_,LineCurve as Ja,LineCurve3 as D_,MathUtils as G_,QuadraticBezierCurve as Vc,SplineCurve as R_,Vector2 as ft,Vector3 as nh}from"three";var ss=1e-12,Gn=class{constructor(r){this.position=new ft;this.startPosition=new ft;this.uuid=G_.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&&(rh(o,e),rh(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 rh(n,r=new ft){let e=n.length();return r.set(-n.y/e,n.x/e)}var zc=n=>n,Vn=new ft,el=new ft,V_=new ft,z_=new ft,F_=new ft,j_=new ft,ih=new nh,sh=new nh;function ah(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,el.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Qa(n.v0,r,e,n.v2)}function as(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function k_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function U_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Fc(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 lh(n,r,e){return oh(n,r)&&oh(r,e)&&Rc(n.position,r.position,e.position)}function Rc(n,r,e){return Vn.copy(r).sub(n).cross(el.copy(e).sub(n))===0}function ch(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 uh(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function dh(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 Fc(r,n,e)>Math.PI&&(a*=-1),as(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 jc(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function oh(n,r){return Rc(n.position,n.controls[1].position,r.position)&&Rc(n.position,r.controls[0].position,r.position)}function ph(n,r,e,t,o=.5){let i=Vn.subVectors(r,n).multiplyScalar(o).add(n),s=el.subVectors(e,r).multiplyScalar(o).add(r),l=V_.subVectors(t,e).multiplyScalar(o).add(e),c=i,d=z_.subVectors(s,i).multiplyScalar(o).add(i),a=F_.subVectors(l,s).multiplyScalar(o).add(s),u=l,p=j_.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 fh(n,r,e=12,t=!0){let o=sh.set(0,0,0),i,s=0,l=[];for(let c=0;c<r.length;c++){let d=zc(r[c]),a=Vn,u=fo(d,e);l.push(u);for(let p=0;p<=u;p++)if(d instanceof Qa||d instanceof Vc||d instanceof Ja){if(d.getPoint(p/u,a),o.set(a.x,a.y,0),i!==void 0&&U_(i,o))continue;i===void 0&&(i=ih),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 mh(n,r,e,t=12,o=!0){let i=sh.set(0,0,0),s=0,l=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let d,a=zc(r[c]),u=Vn,p=fo(a,t);l.push(p);for(let f=0;f<=p;f++)if(a instanceof Qa||a instanceof Vc||a instanceof Ja){if(a.getPoint(f/p,u),i.set(u.x,u.y,0),d?.equals(i))continue;d===void 0?d=ih:(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 kc(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 B_?r*2:n&&(n instanceof Ja||n instanceof D_)?1:n&&n instanceof R_?r*n.points.length:r}function hh(n,r,e=12,t=!0){let o,i=0;for(let s=0;s<r.length;s++){let l=zc(r[s]),c=fo(l,e),d=Vn;for(let a=0;a<=c;a++)if(l instanceof Qa||l instanceof Vc||l instanceof Ja){if(l.getPoint(a/c,d),o!==void 0&&k_(o,d,ss))continue;o===void 0&&(o=el),o.copy(d),n.push(d.x,d.y),i++}}return as(n[0],n[n.length-2],ss)&&as(n[1],n[n.length-1],ss)&&(n.pop(),n.pop()),t&&i>1&&!(as(n[i-1],n[1],ss)&&as(n[i-2],n[0],ss))&&(n.push(n[0],n[1]),i++),n}var Wc=new $r,q_=new $r,$_=new $r,X_=new $r,Y_=new $r,K_=new $r,Se=class extends yh{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new H_(new W_(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=Uc.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=Wc.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=Uc.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 fh(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((s,l)=>s+l,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=kc(this.points,e,!1),this.roundedCurveDivisions=kc(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return mh(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),hh(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(jc(i,s)){let u=i.position.distanceTo(s.position);return i.position.distanceTo(Wc.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){jc(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&&lh(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,Wc),_=p.getPointAt(S,q_);this._subSplitCurve(u,f,w,T,void 0),this._subSplitCurve(p,m,S,void 0,_);let x;if(this.useCubicForRoundedCorners){let N=Fc(T,s.position,_)/2,P=Math.tan(N)*T.distanceTo(s.position),[C,O]=ch(T,_,P,$_,X_),A=uh(C,O,s.position),[R,k]=dh(A,T,_,P,Y_,K_);x=new tl(T.clone(),R.clone(),k.clone(),_.clone())}else x=new gh(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 Hc)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=ph(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(Uc.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 tl&&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 gh&&(i[l]=ah(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 tl?(f=this.createPoint(u.v0),f.controls[1].position.copy(u.v1)):u instanceof Hc&&(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 tl?d.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(d.v2),a=!0):d instanceof Hc&&d.v2.equals(s[0].position)&&(a=!0),this.isClosed=a,s};return this.points=o(e.curves),e instanceof yh&&(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 $c=Math.PI*2;function qc({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function Z_(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 xh(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 Q_(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,_=xh(1,0,b,w),x=xh(b,w,S,T);return!d&&x>0&&(x-=$c),d&&x<0&&(x+=$c),{centerx:g,centery:v,ang1:_,ang2:x}}function vh({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=Q_(n,r,e,t,o,i,d,a,s,l),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/($c/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(Z_(f,m)),f+=m;return c.map(b=>{let{x:w,y:S}=qc(b[0],o,i,h,y),{x:T,y:_}=qc(b[1],o,i,h,y),{x,y:N}=qc(b[2],o,i,h,y);return{x1:w,y1:S,x2:T,y2:_,x,y:N}})}import{BufferAttribute as il,BufferGeometry as nT}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}(),ls=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}(),rl=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}(),bh=function(){function n(){var r=new zn,e=new ls,t=new rl(0),o=new rl(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 rl(0),t=new rl(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 ls,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 ls;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 ls;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 ls;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}(),Sh=function(){function n(){this.handle=null}return n}(),wh=function(){function n(){this.key=null,this.node=0}return n}(),J_=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 Sh,this.handles[t]=new wh;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 Sh;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new wh}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}(),Xc=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}(),_h=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),eT=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new _h,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 _h;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}(),tT=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 Xc;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 Xc;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 Xc,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 eT(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 J_(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}(),rT=function(){function n(){this.mesh=new bh,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 bh),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_(),tT.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 rT;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 VV=ve.ODD,zV=ve.NONZERO,FV=ve.POSITIVE,jV=ve.NEGATIVE,kV=ve.ABS_GEQ_TWO,UV=De.POLYGONS,HV=De.CONNECTED_POLYGONS,WV=De.BOUNDARY_CONTOURS;import{BufferAttribute as nl,BufferGeometry as oT}from"three";var ol=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*ol.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*ol.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)}},cs=ol;cs.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},Kc={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},Zc={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},Yc=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),Fn=class extends oT{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=us}let u;try{u=rr({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...d]})}catch{u=Kc}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 cs(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=Yc(W,C);for(;!G.boundary.vertexIndices.filter(F).length||!B.boundary.vertexIndices.filter(F).length;)W++,F=Yc(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=Yc(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=Zc}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 nl(Uint32Array.from(g),1),w=new nl(this._buffer.positions,3),S=new nl(this._buffer.normals,3),T=new nl(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 nT{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=us}let p=l?.vertexCount??1,f=l?.elementCount??1;if(this._positionAttribute=new il(new Float32Array(p*3),3),this._normalAttribute=new il(new Float32Array(p*3),3),this._uvAttribute=new il(new Float32Array(p*2),2),this._indexAttribute=new il(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 Ph,Vector2 as Oh}from"three";var Ah=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=iT(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 iT(n,r,e,t,o,i){if(t>=Ah)return o>30||o%4===0?(aT(n,r,e,i),Math.round(o/4)):Th(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=vh({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?sT(n,s.x,s.y,d,o,r,e,i):Th(n,t,o,r,e,i)}function sT(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?Ch(n,i,s,l):n.addPoint(Un(0,0)),c}function Th(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<Ah?i>0?Ch(n,t,o,i):n.addPoint(Un(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Nh(n,t,o,i)),1}function aT(n,r,e,t=0,o=0,i=0){let s=.5522847498,l=r*s,c=e*s;n.addPoint(sl(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(sl(o,i+e,o-l,i+e,o+l,i+e)),n.addPoint(sl(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(sl(o,i-e,o+l,i-e,o-l,i-e)),t>0&&Nh(n,r,e,t)}function Un(n,r){return new tr(Ph.generateUUID(),new Oh(n,r))}function sl(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 Ch(n,r,e,t){Ih(n,r,e,t).forEach(i=>n.addPoint(i))}function Nh(n,r,e,t){let o=Ih(n,r,e,t),i=new Se;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Ih(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),s=new Oh(o/r,i/e),l=n.points.map(c=>{let d=c.clone();return d.uuid=Ph.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 lT,Float32BufferAttribute as Qc,Uint32BufferAttribute as cT,Vector3 as Mh}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,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 ds(!1,r,e,t,o,i,s,l,c,d,a,u);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Jc=new cT([0,0,0],1),ds=class extends lT{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 Mh,h=new Mh,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,Hg=It?3*Math.PI/2:W,Wg=It?Vt:$o,qg=It?D:ee,$g=It?0:J-D,Xg=X.clone().multiplyScalar(It?-M:M).add(g),Yg=X.clone().multiplyScalar(It?-1:1).normalize();for(let Dr=0;Dr<D;Dr++){let md=Dr*Y;if(O.addVectors(h.copy($).multiplyScalar(c*Math.cos(md)),y.copy(te).multiplyScalar(c*Math.sin(md))),A.copy(O).normalize(),It||fr){f||(Q=$g+Dr,[0,1,2].forEach(bt=>{ie[Q*3+bt]=Xg.getComponent(bt),ce[Q*3+bt]=Yg.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 ql=bt*W+Hg;R.addVectors(h.copy(X).multiplyScalar(M*Math.sin(ql)),y.copy(A).multiplyScalar(M*Math.cos(ql))),k.copy(R).normalize(),y.addVectors(v,R),R.normalize(),Q=qg+bt*D+Dr,[0,1,2].forEach(ks=>{ie[Q*3+ks]=y.getComponent(ks),ce[Q*3+ks]=k.getComponent(ks)});let Kg=+It+Math.sin(ql);se[Q*2]=(Wg+M*Kg)/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,zs=1,[Fs,js]=[+f,Nt-1];for(let Fe=Fs;Fe<=js-1;Fe++){let It=f&&Fe===js-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 Qc(ie,3)),this.setAttribute("normal",new Qc(ce,3)),this.setAttribute("uv",new Qc(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,Jc.array=o,Jc.count=o.length,Jc}};import{IcosahedronGeometry as uT}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,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 ps(r*.5,i,s):new uT(r*.5,o);return l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"IcosahedronGeometry"}})}},ps=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 ps(r.radius,r.corner,r.cornerSides)}};import{LatheGeometry as dT,Shape as pT}from"three";var Bh=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 pT;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 dT(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};import{BufferGeometry as kh,BufferGeometryLoader as TT,Vector3 as PT,BoxGeometry as Uh}from"three";import{BufferGeometry as bT,Vector2 as ou,Vector3 as jh}from"three";import{Box3 as fT,BufferAttribute as fs,BufferGeometry as Dh,Color as ru,EventDispatcher as mT,Float32BufferAttribute as Wn,Matrix3 as Gh,Matrix4 as Fh,MathUtils as hT,Object3D as yT,Sphere as gT,Vector2 as Gt,Vector3 as at,Vector4 as xT}from"three";var wr=new Fh,eu=new yT,al=new at,mo=class extends mT{constructor(){super(),this.uuid=hT.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 Gh().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 eu.lookAt(r),eu.updateMatrix(),this.applyMatrix4(eu.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 ru().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(al).negate(),this.translate(al.x,al.y,al.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new Fh;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 fT),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new gT),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 Gh().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 tu().fromGeometry(this),e=new Dh,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",ll.call(new fs(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",ll.call(new fs(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",Rh.call(new fs(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Vh.call(new fs(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Vh.call(new fs(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(ll.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",zh.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new Wn(r.skinWeights.length*4,4);e.setAttribute("skinWeight",zh.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 Dh,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",ll.call(o,t.vertices)),e.setAttribute("color",Rh.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new Wn(t.lineDistances.length,1);e.setAttribute("lineDistance",vT.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 tu=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 ru,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 vT(n){return this.array.set(n),this}function Rh(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 ru),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return 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.copyVector2sArray(): vector is undefined",t),i=new Gt),r[e++]=i.x,r[e++]=i.y}return this}function ll(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 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.copyVector4sArray(): vector is undefined",t),i=new xT),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var ST=["a","b","c"];function wT(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function nu(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function iu(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 _T(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],iu(s.a,s.b,n,t,s,e),iu(s.b,s.c,n,t,s,e),iu(s.c,s.a,n,t,s,e)}function cl(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 ul(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var dl=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof bT?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 jh,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;_T(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 jh,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[wT(v,ST[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 ou,Y=new ou,W=new ou;for(o=0,i=d.length;o<i;o++)v=d[o],$=Number(nu(v.a,v.b,f).newEdge)+k,te=Number(nu(v.b,v.c,f).newEdge)+k,X=Number(nu(v.c,v.a,f).newEdge)+k,cl(q,$,te,X,v.materialIndex),cl(q,v.a,$,X,v.materialIndex),cl(q,v.b,te,$,v.materialIndex),cl(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)),ul(H,D,Y,W),ul(H,G,D,W),ul(H,B,Y,D),ul(H,L,W,Y));r.vertices=R,r.faces=q,u&&(r.faceVertexUvs[0]=H)}};var qe=new PT,Hh=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new kh().copy(new Uh(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 kh().copy(new Uh(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 dl(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 TT(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 pl=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 OT,Float32BufferAttribute as su,Vector2 as _r,Vector3 as Je}from"three";var Wh=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 lu(r*.5,e,o,i,s,l,c);return d.scale(1,1,t/r),Object.assign(d,{userData:{...n,type:"PyramidGeometry"}})}};function ms(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function au(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 AT(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var lu=class extends OT{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));ms(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));ms(S,M,V),ms(S,re,G),ms(N,Q,H),au(w,V,G,k,k,B),d.push(B.x,B.y,B.z),au(V,w,G,k,R,L),d.push(L.x,L.y,L.z),au(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;ms(P,re,ce);let se=D.clone().add(B).multiplyScalar(.5);se=AT(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),zs=F;for(let Fs=0;Fs<=Te;Fs++){let js=Math.cos(zs),Fe=Math.sin(zs);H.x=$o*Fe,H.y=Nt,H.z=$o*js,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++),zs+=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 su(d,3)),this.setAttribute("normal",new su(a,3)),this.setAttribute("uv",new su(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 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,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 CT}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,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 CT(.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 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,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 NT(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};import{BufferGeometry as IT,Float32BufferAttribute as cu,Vector3 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,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 uu(r,e,t,o,i,s);return Object.assign(l,{userData:{...n,type:"BackdropGeometry"}})}},uu=class extends IT{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 MT(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 cu(l,3)),this.setAttribute("normal",new cu(c,3)),this.setAttribute("uv",new cu(d,2))}};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,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 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},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 ET(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Kh=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=LT(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 LT(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 ds(!0,n,r,e,t,o,i,s,l,c,d,a)}import{TorusKnotGeometry as BT}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,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 BT(l,e,t,o,i,s);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var Qh=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 ey,Vector3 as et,Matrix4 as hs,BufferGeometry as ty,BufferAttribute as du,MathUtils as pu}from"three";function Jh(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}function DT(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=pu.lerp(i.length(),l.length(),e);i.lerp(l,e).setLength(c)}),new hs().makeBasis(t[0],t[1],t[2])}var ry=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:hc}).userData.shape;return{path:n.path??nn.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...ha,...e.extrusion}}),shapeData:s}}static build(n){if(n.path.points.length>=2){let e=new fu(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new ty,{userData:{...n,type:"PathGeometry"}})}},fu=class extends ty{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)||!Jh(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]=DT(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{_=Zc}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 du(P.positions,3)),this.setAttribute("normal",new du(P.normals,3)),this.setAttribute("uv",new du(P.uvs,2)),this.setIndex(C)}_extractPathPoints(){let t=Xa(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 hs().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 hs().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 hs,u=new hs;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(pu.lerp(s,s+l,m));let h=pu.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=us}let c;try{c=rr({windingRule:ve.ODD,elementType:De.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...s]})}catch{c=Kc}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 ey;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 ey;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 oy,BufferGeometry as mu}from"three";import{mergeBufferGeometries as GT}from"three/examples/jsm/utils/BufferGeometryUtils.js";function ny(){let n=new mu;return n.setAttribute("position",new oy(new Float32Array([]),3)),n.setIndex(new oy(new Uint16Array([]),1)),n}var RT=ny().attributes,VT=12,zT=1,Xn=class extends mu{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,RT),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=FT(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?zT:VT}})),w=b.length?GT(b):ny();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 mu,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 FT(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 ud,BufferAttribute as ty,Uint32BufferAttribute as pd,Float32BufferAttribute as fd,Matrix4 as GT,Vector3 as Qi,Sphere as RT,Box3 as VT,BoxGeometry as jT}from"three";var Jh,qn=new Promise(n=>{Jh=n}),Qh=!1;async function ey(){if(Qh)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.345/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});Jh(i),Qh=!0}import{BufferGeometryLoader as LT}from"three";function Io(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 LT().parse(n);else{if(n.type==="SubdivGeometry")return new Fe(n,e);if(n.type==="TextGeometry")return new Hn(n,r)}let o;try{o=dd(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(Jo.defaultData(),100,100);t.shape=i,o=dd(t)}return o}import{Matrix4 as BT}from"three";var DT=new BT;function Zi(n,r,e,t){let o=n.position.array,i=n.normal.array,s=DT.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 dl=new VT,$n=new Qi,de;qn.then(n=>{de=n});var ry=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),oy=new Uint32Array([0,1,2,3]),ny=new Uint8Array([4]),Fe=class extends ud{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=Kr.div(t,o);this.subdividedGeometry&&Zi(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Zi(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($n.fromArray(i));let l=$n.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}=Fe.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new jT(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&&(Fe.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new RT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;dl.setFromBufferAttribute(t),dl.getCenter(o),e.boundingSphere.radius=o.distanceTo(dl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),dl.getSize($n);let i={width:$n.x,height:$n.y,depth:$n.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=Fe.allocate(e,i)}catch(a){console.error(a,e),s=Fe.allocate({positionWASM:ry,indexWASM:oy,verticesPerFaceWASM:ny},i)}if(de.set_destination_refinement_level(s,0),l=Fe.buildLevel(s,!0,u),e.subdivisions>0)try{de.set_destination_refinement_level(s,e.subdivisions),c=Fe.buildLevel(s,!1,u)}catch{try{de.set_destination_refinement_level(s,e.subdivisions-1),c=Fe.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:Io(e,o,!1),s,l,c,u;({positions:s,triIndices:u}=gd(i.getAttribute("position"),i.getIndex()));let a;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let d=e.radialSegments*e.heightSegments*3*2,p=d+e.radialSegments*3;a=[d,p]}return{indices:l,verticesPerFace:c}=xd(s,u,i,a),{positions:s,indices:l,verticesPerFace:c}}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=ry,i=oy,s=ny);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 GT().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 ud;if(w.setIndex(new pd(b,1)),w.setAttribute("position",new fd(f,3)),w.setAttribute("normal",new fd(h,3)),t){w.setAttribute("faceMap",new pd(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new ty(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 ud;m.setAttribute("position",new fd(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 ty(h,3)),m.setIndex(new pd(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 iy=["getX","getY","getZ"];function gd(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[iy[p]](a)*l)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)s.push(n[iy[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 ul=new Qi,md=new Qi,hd=new Qi,yd=new Qi;function xd(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]){ul.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),md.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),hd.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),yd.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),md.sub(ul).normalize(),hd.sub(ul).normalize(),yd.sub(ul).normalize();let c=md.cross(hd).dot(yd);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 tr={};Xg(tr,{calcBoolean:()=>HT,calcBooleanTopological:()=>kT,freeMeshSet:()=>$T,getMeshSet:()=>WT,transformMeshSet:()=>qT});var FT,sy=new Promise(n=>{FT=n});import{Float32BufferAttribute as ay,Sphere as zT}from"three";var ge,Yn;sy.then(n=>ge=n);function UT(n,r,e){let t,{positions:o,triIndices:i}=gd(n.getAttribute("position"),n.getIndex()),s;if(r&&e){let{indices:l,verticesPerFace:c}=xd(o,i,n);s=c.length,t=[];for(let u=0,a=0;u<s;u++){t.push(c[u]);for(let d=0;d<c[u];d++)t.push(l[a++])}}else{let l=i.length;t=Array(l+l/3),s=0;for(let c=0,u=0;u<t.length;)t[u++]=3,s++,t[u++]=i[c++],t[u++]=i[c++],t[u++]=i[c++]}return{positions:o,faceIndices:t,nFaces:s}}function ly(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 cy(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 kT(n,r){Yn===void 0&&(Yn=ge.init_csg());let e=ly(n),t=ge.csg_calc_topological(Yn,e,n.length,cy(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 HT(n,r,e,t){Yn===void 0&&(Yn=ge.init_csg());let o=ly(n),i=ge.csg_calc(Yn,o,n.length,t,cy(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 ay(d,3)),e.setAttribute("normal",new ay(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new zT),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 WT(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}=UT(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 qT(n,r){ge.transform_csg_mesh(n,r.elements)}function $T(n){ge.free_csg_mesh(n)}var YT={ConeGeometry:qm,CubeGeometry:$m,CylinderGeometry:Wm,DodecahedronGeometry:Ym,EllipseGeometry:Fn,HelixGeometry:Ph,IcosahedronGeometry:Oh,LatheGeometry:Ah,NonParametricGeometry:Rh,PolygonGeometry:al,PyramidGeometry:Vh,RectangleGeometry:ll,SphereGeometry:jh,PlaneGeometry:Fh,BackdropGeometry:zh,StarGeometry:cl,TextFrameGeometry:Uh,TorusGeometry:kh,TorusKnotGeometry:Hh,TriangleGeometry:Wh,PathGeometry:Xh,VectorGeometry:_t},dd=n=>YT[n.type].create(n);function Ji(n){return n!==null&&"booleanOp"in n}var Xn=class extends Wa(KT){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new XT}updateVisible(){super.updateVisible(),this.visible=!Ji(this.parent)&&this.visible,Ji(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(tr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ji(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Xn&&(e.freeBooleanPointer(),Ji(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&Ji(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var pl=new ZT;function es(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)}pl.min.set(i,s,l),pl.max.set(c,u,a),pl.getCenter(t),pl.getSize(o).multiplyScalar(.5)}var eP=new QT,tP=new JT,it=class extends Xn{constructor(r,e){super(eP,tP),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?es(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 cO,Matrix4 as dO,Sphere as Dy,Vector3 as uO}from"three";import{BufferAttribute as sO,Float32BufferAttribute as By,MathUtils as Hd,Vector3 as Wd}from"three";import{ShaderMaterial as $P}from"three";import{CubeReflectionMapping as fP,CubeRefractionMapping as mP,CubeUVReflectionMapping as hP,LinearEncoding as fy,sRGBEncoding as yP}from"three";var ts=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 rP}from"three";var Je=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=rP.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 Je&&(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 vd=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}},qe=new vd;import{Vector2 as dy}from"three";import{MathUtils as oP}from"three";var le=class extends Je{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=oP.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 Ne=class extends le{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 et=class extends Ne{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof dy?e:new dy(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 uy}from"three";var st=class extends Ne{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof uy?e:new uy(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 nP}from"three";var $e=class extends nP{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 Ft=class extends Ne{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof $e?e:new $e(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 iP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,py=/[a-z_0-9]+/gi,Q=class extends le{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=py.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&&qe.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=qe.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||qe.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&&qe.contains(h)&&e.include(qe.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=iP.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(py);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 sP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,bd=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||bd.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=sP.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=bd;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var aP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
- )*?)}`,"gim"),lP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Kn=class extends le{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let 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=aP.exec(e);if(t){let o=t[2],i;for(;i=lP.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=t[1]}else this.name="";this.type=this.name}};var Zn=class extends le{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)}};qe.addKeyword("uv",function(){return new Zn});qe.addKeyword("uv2",function(){return new Zn(1)});import{LinearEncoding as cP,sRGBEncoding as dP}from"three";var Co=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??Co.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case cP:return["Linear"];case dP:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),i=this.getType(e),s=Co.Nodes[this.method],l=e.include(s);if(l===Co.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=Co.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=Co.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},mt=Co;mt.Nodes={LinearToLinear:new Q(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
5
- `)),sRGBToLinear:new Q(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
6
- `)),LinearTosRGB:new Q(["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
- `))},mt.LINEAR_TO_LINEAR="LinearToLinear",mt.SRGB_TO_LINEAR="sRGBToLinear",mt.LINEAR_TO_SRGB="LinearTosRGB";var _e=class extends Q{constructor(e="",t,o,i,s){super(e,s,i,o,t);this.nodeType="Expression"}};import{Texture as uP}from"three";var Tt=class extends Ne{constructor(e=new uP,t,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new Zn,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 mt(new _e("",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 J=class extends Ne{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 rs=class extends le{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 Sd=class extends le{constructor(e,t,o=Sd.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)}},Pt=Sd;Pt.ADD="+",Pt.SUB="-",Pt.MUL="*",Pt.DIV="/";var Ae=class extends le{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 Qn=class extends le{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 rs(Qn.Nodes.bilinearCubeUV,[t,o,i]);this.colorSpaceTL=this.colorSpaceTL??new mt(new _e("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new mt(new _e("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new mt(new _e("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new mt(new _e("","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 _e(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new _e(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new _e(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new _e(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let c=new _e("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 rs(Qn.Nodes.roughnessToMip,[i]),l=new pe(s,Qn.Nodes.m0,Qn.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 Pt(c,new J(1).setReadonly(!0),Pt.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)}},Jn=Qn;Jn.Nodes=function(){let e=new Kn(`struct TextureCubeUVData {
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 yu,BufferAttribute as ly,Uint32BufferAttribute as gu,Float32BufferAttribute as xu,Matrix4 as HT,Vector3 as gs,Sphere as WT,Box3 as qT,BoxGeometry as $T}from"three";var sy,Kn=new Promise(n=>{sy=n}),iy=!1;async function ay(){if(iy)return;let r=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.347/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});sy(i),iy=!0}import{BufferGeometryLoader as jT}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 jT().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=hu(t)}catch(i){console.error(i)}if(!o){let i=Se.createFromState(on.defaultData(),100,100);t.shape=i,o=hu(t)}return o}import{Matrix4 as kT}from"three";var UT=new kT;function ys(n,r,e,t){let o=n.position.array,i=n.normal.array,s=UT.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 hl=new qT,Zn=new gs,ue;Kn.then(n=>{ue=n});var cy=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),uy=new Uint32Array([0,1,2,3]),dy=new Uint8Array([4]),ke=class extends yu{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&&ys(this.subdividedGeometry.attributes,...i),this.originalGeometry&&ys(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 $T(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 WT,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;hl.setFromBufferAttribute(t),hl.getCenter(o),e.boundingSphere.radius=o.distanceTo(hl.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),hl.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:cy,indexWASM:uy,verticesPerFaceWASM:dy},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}=wu(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}=_u(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=cy,i=uy,s=dy);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 HT().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 yu;if(w.setIndex(new gu(b,1)),w.setAttribute("position",new xu(f,3)),w.setAttribute("normal",new xu(h,3)),t){w.setAttribute("faceMap",new gu(g,1));let S=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new ly(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 yu;m.setAttribute("position",new xu(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 ly(h,3)),m.setIndex(new gu(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 py=["getX","getY","getZ"];function wu(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[py[p]](a)*l)},`;if(u in e)i.push(e[u]);else{for(let p=0;p<3;p++)s.push(n[py[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 yl=new gs,vu=new gs,bu=new gs,Su=new gs;function _u(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]){yl.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),vu.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),bu.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),Su.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),vu.sub(yl).normalize(),bu.sub(yl).normalize(),Su.sub(yl).normalize();let c=vu.cross(bu).dot(Su);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={};r0(or,{calcBoolean:()=>QT,calcBooleanTopological:()=>ZT,freeMeshSet:()=>tP,getMeshSet:()=>JT,transformMeshSet:()=>eP});var XT,fy=new Promise(n=>{XT=n});import{Float32BufferAttribute as my,Sphere as YT}from"three";var ge,Qn;fy.then(n=>ge=n);function KT(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}=wu(n.getAttribute("position"),o),l;if(r&&e){let{indices:c,verticesPerFace:d}=_u(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 hy(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 yy(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 ZT(n,r){Qn===void 0&&(Qn=ge.init_csg());let e=hy(n),t=ge.csg_calc_topological(Qn,e,n.length,yy(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 QT(n,r,e,t){Qn===void 0&&(Qn=ge.init_csg());let o=hy(n),i=ge.csg_calc(Qn,o,n.length,t,yy(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 my(u,3)),e.setAttribute("normal",new my(f,3));let h=ge.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new YT),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 JT(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}=KT(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 eP(n,r){ge.transform_csg_mesh(n,r.elements)}function tP(n){ge.free_csg_mesh(n)}var rP={ConeGeometry:Jm,CubeGeometry:eh,CylinderGeometry:Qm,DodecahedronGeometry:th,EllipseGeometry:Hn,HelixGeometry:Eh,IcosahedronGeometry:Lh,LatheGeometry:Bh,NonParametricGeometry:Hh,PolygonGeometry:pl,PyramidGeometry:Wh,RectangleGeometry:fl,SphereGeometry:qh,PlaneGeometry:$h,BackdropGeometry:Xh,StarGeometry:ml,TextFrameGeometry:Yh,TorusGeometry:Kh,TorusKnotGeometry:Zh,TriangleGeometry:Qh,PathGeometry:ry,VectorGeometry:Tt},hu=n=>rP[n.type].create(n);function xs(n){return n!==null&&"booleanOp"in n}var Jn=class extends Ka(nP){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new oP}updateVisible(){super.updateVisible(),this.visible=!xs(this.parent)&&this.visible,xs(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(),xs(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Jn&&(e.freeBooleanPointer(),xs(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e){let t=super.updateTransformState(e);return t&&xs(this.parent)&&this.invalidateDownstreamBooleanData(!0),t}};var gl=new iP;function vs(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)}gl.min.set(i,s,l),gl.max.set(c,d,a),gl.getCenter(t),gl.getSize(o).multiplyScalar(.5)}var lP=new sP,cP=new aP,lt=class extends Jn{constructor(r,e){super(lP,cP),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?vs(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 xO,Matrix4 as vO,Sphere as ky,Vector3 as bO}from"three";import{BufferAttribute as hO,Float32BufferAttribute as jy,MathUtils as Yu,Vector3 as Ku}from"three";import{ShaderMaterial as rO}from"three";import{CubeReflectionMapping as SP,CubeRefractionMapping as wP,CubeUVReflectionMapping as _P,LinearEncoding as by,sRGBEncoding as TP}from"three";var bs=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 uP}from"three";var tt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=uP.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 Tu=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 Tu;import{Vector2 as gy}from"three";import{MathUtils as dP}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=dP.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 gy?e:new gy(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 xy}from"three";var ct=class extends Ie{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof xy?e:new xy(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 pP}from"three";var Xe=class extends pP{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 fP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,vy=/[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=vy.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=fP.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let l=s[3].match(vy);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 mP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Pu=class extends ae{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Pu.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=mP.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=Pu;be.PI="PI",be.PI2="PI2",be.RECIPROCAL_PI="RECIPROCAL_PI",be.RECIPROCAL_PI2="RECIPROCAL_PI2",be.LOG2="LOG2",be.EPSILON="EPSILON";var hP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
4
+ )*?)}`,"gim"),yP=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=hP.exec(e);if(t){let o=t[2],i;for(;i=yP.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 gP,sRGBEncoding as xP}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 gP:return["Linear"];case xP: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
+ `)),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
+ `)),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 vP}from"three";var Ot=class extends Ie{constructor(e=new vP,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 Ss=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 Ou=class extends ae{constructor(e,t,o=Ou.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=Ou;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 Ss(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 Ss(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 {
8
8
  vec4 tl;
9
9
  vec4 tr;
10
10
  vec4 br;
11
11
  vec4 bl;
12
12
  vec2 f;
13
- }`),t=new be("float cubeUV_maxMipLevel 8.0",!0),o=new be("float cubeUV_minMipLevel 4.0",!0),i=new be("float cubeUV_maxTileSize 256.0",!0),s=new be("float cubeUV_minTileSize 16.0",!0),l=new Q(`float getFace(vec3 direction) {
13
+ }`),t=new be("float cubeUV_maxMipLevel 8.0",!0),o=new be("float cubeUV_minMipLevel 4.0",!0),i=new be("float cubeUV_maxTileSize 256.0",!0),s=new be("float cubeUV_minTileSize 16.0",!0),l=new U(`float getFace(vec3 direction) {
14
14
  vec3 absDirection = abs(direction);
15
15
  float face = -1.0;
16
16
  if (absDirection.x > absDirection.z) {
@@ -25,7 +25,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
25
25
  face = direction.y > 0.0 ? 1.0 : 4.0;
26
26
  }
27
27
  return face;
28
- }`);l.useKeywords=!1;let c=new Q(`vec2 getUV(vec3 direction, float face) {
28
+ }`);l.useKeywords=!1;let c=new U(`vec2 getUV(vec3 direction, float face) {
29
29
  vec2 uv;
30
30
  if (face == 0.0) {
31
31
  uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
@@ -41,7 +41,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=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 u=new Q(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
44
+ }`);c.useKeywords=!1;let d=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 Hg=Object.create;var kl=Object.defineProperty;var Wg=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]);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),C=[a,d,p,f,m,h,y,g,v,b,w,S,T,_,x],P=new Q(`float roughnessToMip(float roughness) {
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) {
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 Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
83
83
  mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
84
84
  }
85
85
  return mip;
86
- }`,C);return{bilinearCubeUV:u,roughnessToMip:P,m0:p,cubeUV_maxMipLevel:t}}();var No=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??No.VIEW}getShared(){return this.scope===No.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 No.VIEW:e.isShader("vertex")?l="transformedNormal":l="geometryNormal";break;case No.LOCAL:e.isShader("vertex")?l="objectNormal":(e.requires.normal=!0,l="vObjectNormal");break;case No.WORLD:e.isShader("vertex")?l="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,l="vWNormal");break}return e.format(l,this.getType(e),t)}},tt=No;tt.LOCAL="local",tt.WORLD="world",tt.VIEW="view",tt.NORMAL="normal";qe.addKeyword("viewNormal",function(){return new tt(tt.VIEW)});qe.addKeyword("localNormal",function(){return new tt(tt.NORMAL)});qe.addKeyword("worldNormal",function(){return new tt(tt.WORLD)});var vr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??vr.LOCAL}getType(){switch(this.scope){case vr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case vr.LOCAL:case vr.WORLD:return!1}return!0}generate(e,t,o,i,s){let l;switch(this.scope){case vr.LOCAL:e.isShader("vertex")?l="transformed":(e.requires.position=!0,l="vPosition");break;case vr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,l="vWPosition";break;case vr.VIEW:l=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case vr.PROJECTION:l=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(l,this.getType(),t)}},Ot=vr;Ot.LOCAL="local",Ot.WORLD="world",Ot.VIEW="view",Ot.PROJECTION="projection";qe.addKeyword("position",function(){return new Ot});qe.addKeyword("worldPosition",function(){return new Ot(Ot.WORLD)});qe.addKeyword("viewPosition",function(){return new Ot(Ot.VIEW)});var rr=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??rr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case rr.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case rr.VECTOR:{let s=new tt(tt.VIEW),l=e.context.roughness,c=s.build(e,"v3"),u=new Ot(Ot.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 rr.CUBE:{let s=new rr(rr.VECTOR).build(e,"v3"),l="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${l};`),i="reflectCubeVec"):i=l;break}case rr.SPHERE:{let l="normalize( ( viewMatrix * vec4( "+new rr(rr.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)}},br=rr;br.CUBE="cube",br.SPHERE="sphere",br.VECTOR="vector";var fl=class extends le{constructor(e=new Tt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Jn(this.value,t??new br(br.VECTOR),o),this.irradianceNode=new Jn(this.value,new tt(tt.WORLD),new J(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 pP}from"three";var ml=class extends Ne{constructor(e=new pP,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new br,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 mt(new _e("",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 my=["x","y","z","w"],gP=["float","vec2","vec3","vec4"],xP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},vP={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[]"},hl=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: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 xl=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 bP}from"three";var vl=class extends Ie{constructor(e=new bP,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 Sy=["x","y","z","w"],PP=["float","vec2","vec3","vec4"],OP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},AP={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[]"},bl=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 Hg=Object.create;var kl=Object.defineProperty;var Wg=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 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}];
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}];
130
130
  `:t+=e+" "+a+" "+c+`;
131
- `}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof Je?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 ts({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 ts({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"?qe.get(r):r,this.context.include===!1)return r.name;r instanceof Q?o=this.includes.functions:r instanceof be?o=this.includes.consts:r instanceof Kn&&(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 Q&&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 gP[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 fP:case mP:return new ml(t);case hP:return new fl(new Tt(t));default:return new Tt(t)}else{if(t.isVector2)return new et(t);if(t.isVector3)return new st(t);if(t.isVector4)return new Ft(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 xP[r]||r}getFormatByType(r){return vP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return my[r]}getIndexByElement(r){return my.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=fy,e===fy&&this.context.gamma&&(e=yP),e}};import{Vector2 as Lo,Vector3 as _r,Vector4 as oi}from"three";var Pe=class extends Ne{constructor(e=0,t,o,i){super("c");this.nodeType="Color";this.value=e instanceof $e?e:new $e(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 Ne{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 bP,UniformsUtils as SP}from"three";var Eo=class extends Je{constructor(){super("basic");this.nodeType="Basic";this.color=new Pe(5526619),this.shadingAlpha=new J(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(SP.merge([bP.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,d=new bs({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 bs({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 PP[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 SP:case wP:return new vl(t);case _P:return new xl(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 OP[r]||r}getFormatByType(r){return AP[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return Sy[r]}getIndexByElement(r){return Sy.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=by,e===by&&this.context.gamma&&(e=TP),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 CP,UniformsUtils as NP}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(NP.merge([CP.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>
@@ -147,237 +147,308 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
147
147
  #endif /* !USE_LAYER_DISPLACE */
148
148
  `];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),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
- `));let l=["#include <normal_fragment_begin>",o.code];i&&l.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?l.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):l.push(`vec3 finalColor = ${o.result};`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),l.push("#include <fog_fragment>","#include <dithering_fragment>"),t=l.join(`
151
- `)}return t}};import{UniformsLib as hy,UniformsUtils as wP}from"three";var or=class extends Ne{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 at={normalRenderTarget:new Tt,normalRenderTargetDepth:new Tt,transmissionRenderTarget:new Tt,transmissionSize:new et(2048,2048),transmissionRenderTargetDepth:new Tt,pixelRatioNode:new J(1),resolution:new et,penumbraSize:new or(5,.5)};for(let n of Object.values(at))n.isRenderGlobal=!0;var os=class extends Je{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Pe(5526619),this.emissive=new Pe(0),this.emissiveIntensity=new J(1),this.shadingAlpha=new J(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(wP.merge([hy.fog,hy.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(`
152
- `));let i=["#include <beginnormal_vertex>",`
153
- #ifndef USE_LAYER_DISPLACE
154
- #include <defaultnormal_vertex>
155
- #endif
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 Ty,UniformsUtils as LP}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 IP}from"three";var ho=class extends Ie{};var Sl=class extends ho{constructor(e){super("v3");this.image=e;this._value=new IP}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 MP}from"three";var ni=class extends Ie{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new MP}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 EP}from"three";function wy(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var wl=class extends ni{constructor(e,t){super(new EP);this.repeat=e;this.offset=t;wy(this.value,e,t)}updateMatrix(){wy(this.value,this.repeat,this.offset)}};import{Vector4 as _y}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 _y?new Array(e).fill(t):new Array(e).fill(new _y(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 Au=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(Au.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=Au;Ro.Nodes=function(){return{customColor:new U(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
152
+ float lalpha = alpha * mask;
153
+ calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
154
+ accumAlpha += (1.0 - accumAlpha) * lalpha;
156
155
 
157
- vec3 displaced_position = position;
158
- vec3 displaced_normal = normal;
156
+ return color;
157
+ }`)}}();var Cu=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(Cu.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=Cu;si.Nodes=function(){return{customNormal:new U(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
158
+ vec3 normal = packNormalToRGB( norm ).rgb;
159
+ normal *= step( vec3(0.5), cnormal );
159
160
 
160
- #ifdef USE_LAYER_DISPLACE
161
- vec3 transformed;
162
- vec3 transformedNormal;
163
- #endif
164
- `,"#include <normal_vertex>",`
165
- #ifndef USE_LAYER_DISPLACE
166
- #include <begin_vertex>
167
- #endif
168
- `];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>",`
169
- vec3 diffuse = vec3( 1.0 );
170
- GeometricContext geometry;
171
- geometry.position = mvPosition.xyz;
172
- geometry.normal = normalize( transformedNormal );
173
- geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
174
- GeometricContext backGeometry;
175
- backGeometry.position = geometry.position;
176
- backGeometry.normal = -geometry.normal;
177
- backGeometry.viewDir = geometry.viewDir;
178
- vLightFront = vec3( 0.0 );
179
- vIndirectFront = vec3( 0.0 );
180
- #ifdef DOUBLE_SIDED
181
- vLightBack = vec3( 0.0 );
182
- vIndirectBack = vec3( 0.0 );
183
- #endif
184
- IncidentLight directLight;
185
- float dotNL;
186
- vec3 directLightColor_Diffuse;
187
- vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
188
- vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
189
- #ifdef DOUBLE_SIDED
190
- vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
191
- vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
192
- #endif
193
- #if NUM_POINT_LIGHTS > 0
194
- #pragma unroll_loop_start
195
- for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
196
- getPointLightInfo( pointLights[ i ], geometry, directLight );
197
- dotNL = dot( geometry.normal, directLight.direction );
198
- directLightColor_Diffuse = directLight.color;
199
- vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
200
- #ifdef DOUBLE_SIDED
201
- vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
202
- #endif
203
- }
204
- #pragma unroll_loop_end
205
- #endif
206
- #if NUM_SPOT_LIGHTS > 0
207
- #pragma unroll_loop_start
208
- for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
209
- getSpotLightInfo( spotLights[ i ], geometry, directLight );
210
- dotNL = dot( geometry.normal, directLight.direction );
211
- directLightColor_Diffuse = directLight.color;
212
- vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
213
- #ifdef DOUBLE_SIDED
214
- vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
215
- #endif
216
- }
217
- #pragma unroll_loop_end
218
- #endif
219
- #if NUM_DIR_LIGHTS > 0
220
- #pragma unroll_loop_start
221
- for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
222
- getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
223
- dotNL = dot( geometry.normal, directLight.direction );
224
- directLightColor_Diffuse = directLight.color;
225
- vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
226
- #ifdef DOUBLE_SIDED
227
- vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
228
- #endif
229
- }
230
- #pragma unroll_loop_end
231
- #endif
232
- #if NUM_HEMI_LIGHTS > 0
233
- #pragma unroll_loop_start
234
- for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
235
- vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
236
- #ifdef DOUBLE_SIDED
237
- vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
238
- #endif
239
- }
240
- #pragma unroll_loop_end
241
- #endif
242
- `," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=i.join(`
243
- `)}else{e.mergeUniform({penumbraSize:at.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(`
244
- `));let d=["#include <normal_fragment_begin>",`
245
- // NOTE: gl_FrontFacing alternative using face normal estimation.
246
- vec3 viewdx = dFdx(vViewPosition);
247
- vec3 viewdy = dFdy(vViewPosition);
248
- vec3 faceNormal = normalize(cross(viewdx, viewdy));
249
- bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
250
- `,"#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;"),d.push(`
251
- if (outgoingLight != diffuseColor) {
252
- float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
253
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
254
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
161
+ float lalpha = alpha * mask;
162
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
163
+ accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
164
+
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(`
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
+
169
+ vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
170
+
171
+ vec4 tmp = texture2D( tex, uvs );
172
+
173
+ vec3 col = tmp.rgb;
174
+ float lalpha = alpha * tmp.a;
175
+ ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${l}));`}
176
+
177
+ if ( crop > 0.5 ) {
178
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
179
+ lalpha = 0.0;
180
+ }
255
181
  }
256
- `),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(`
257
- `)}return t}};import{UniformsLib as yy,UniformsUtils as _P}from"three";var yl=class extends Je{constructor(){super("phong");this.nodeType="Phong";this.color=new Pe(5526619),this.specular=new Pe(1118481),this.shininess=new J(30),this.shadingAlpha=new J(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(_P.merge([yy.fog,yy.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(`
258
- `));let i=["#include <beginnormal_vertex>",`
259
- #ifndef USE_LAYER_DISPLACE
260
- #include <defaultnormal_vertex>
261
- #endif
182
+
183
+ lalpha *= mask;
262
184
 
185
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
186
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
263
187
 
264
- vec3 displaced_position = position;
265
- vec3 displaced_normal = normal;
188
+ return col;
189
+ }`);i=e.include(c);break;case 4:i=e.include(ai.Nodes.triplanar);break;default:i=e.include(ai.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let l=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${l})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push("normal"),s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.blending.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),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}},li=ai;li.Nodes=function(){let e=new U(`
190
+ vec3 cylindricalTexture(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) {
191
+ vec3 posN = normalize(position);
192
+ float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
193
+ float scaledHeight = position.y / (size.y * 0.5);
194
+ float v = (scaledHeight / 2.) + .5;
266
195
 
267
- #ifdef USE_LAYER_DISPLACE
268
- vec3 transformed;
269
- vec3 transformedNormal;
270
- #endif
271
- `,"#include <normal_vertex>",`
272
- #ifndef USE_LAYER_DISPLACE
273
- #include <begin_vertex>
196
+ vec2 calculatedUv = vec2(u,v);
197
+ vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
198
+
199
+ vec2 df = fwidth(uvs);
200
+ if(df.x > 0.5) df.x = 0.;
201
+
202
+ #ifdef GL_EXT_shader_texture_lod
203
+ vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
204
+ #else
205
+ vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
274
206
  #endif
275
- `];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(`
276
- `)}else{e.mergeUniform({penumbraSize:at.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(`
277
- `));let d=["#include <normal_fragment_begin>",`
278
- // NOTE: gl_FrontFacing alternative using face normal estimation.
279
- vec3 viewdx = dFdx(vViewPosition);
280
- vec3 viewdy = dFdy(vViewPosition);
281
- vec3 faceNormal = normalize(cross(viewdx,viewdy));
282
- if (dot(normal, faceNormal) < 0.0) {
283
- normal *= -1.0;
284
- }
285
- `," 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;"),d.push(`
286
- if (outgoingLight != diffuseColor) {
287
- float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
288
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
289
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
207
+
208
+ vec3 col = tmp.rgb;
209
+ float lalpha = alpha * tmp.a;
210
+ if ( crop > 0.5 ) {
211
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
212
+ lalpha = 0.0;
213
+ }
290
214
  }
291
- `),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(`
292
- `)}return t}};import{UniformsLib as wd,UniformsUtils as TP}from"three";var ns=class extends Je{constructor(){super("standard");this.nodeType="Standard";this.color=new Pe(5526619),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.shadingAlpha=new J(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(TP.merge([wd.fog,wd.lights])),wd.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(`
293
- `));let i=["#include <beginnormal_vertex>",`
294
- #if !defined( USE_LAYER_DISPLACE )
295
- #include <defaultnormal_vertex>
296
- #endif
297
215
 
298
- vec3 displaced_position = position;
299
- vec3 displaced_normal = normal;
216
+ lalpha *= mask;
217
+
218
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
219
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
300
220
 
301
- #if defined( USE_LAYER_DISPLACE )
302
- vec3 transformed;
303
- vec3 transformedNormal;
221
+ return col;
222
+ }
223
+ `),t=new U(`
224
+ vec3 sphericalTexture(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) {
225
+ vec3 posN = normalize(vPosition);
226
+ float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
227
+ float v = 0.5 + asin(posN.y) / 3.1415;
228
+
229
+ vec2 calculatedUv = vec2(u,v);
230
+ vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
231
+
232
+ vec2 df = fwidth(uvs);
233
+ if(df.x > 0.5) df.x = 0.;
234
+ #ifdef GL_EXT_shader_texture_lod
235
+ vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
236
+ #else
237
+ vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
304
238
  #endif
305
- `,"#include <normal_vertex>",`
306
- #if !defined( USE_LAYER_DISPLACE )
307
- #include <begin_vertex>
308
- #endif /* !USE_LAYER_DISPLACE */
309
- `];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(`
310
- `)}else{e.mergeUniform({penumbraSize:at.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(`
311
- `));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
312
- // NOTE: gl_FrontFacing alternative using face normal estimation.
313
- vec3 viewdx = dFdx(vViewPosition);
314
- vec3 viewdy = dFdy(vViewPosition);
315
- vec3 faceNormal = normalize(cross(viewdx,viewdy));
316
- if (dot(normal, faceNormal) < 0.0) {
317
- normal *= -1.0;
239
+
240
+ vec3 col = tmp.rgb;
241
+ float lalpha = alpha * tmp.a;
242
+ if ( crop > 0.5 ) {
243
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
244
+ lalpha = 0.0;
245
+ }
318
246
  }
319
- `," 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;"),f.push(`
320
- if (outgoingLight != diffuseColor) {
321
- float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
322
- accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * lightAccu;
323
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result}, ${u.result} );
247
+
248
+ lalpha *= mask;
249
+
250
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
251
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
252
+
253
+ return col;
254
+ }
255
+ `),o=new U(`vec3 uvTexture(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) {
256
+
257
+ vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
258
+ vec4 tmp = texture2D( tex, uvs );
259
+
260
+ vec3 col = tmp.rgb;
261
+
262
+ float lalpha = alpha * tmp.a;
263
+ if ( crop > 0.5 ) {
264
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
265
+ lalpha = 0.0;
266
+ }
324
267
  }
325
- `),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(`
326
- `)}return t}};import{UniformsLib as gy,UniformsUtils as PP}from"three";var is=class extends Je{constructor(){super("toon");this.nodeType="Toon";this.color=new Pe(5526619),this.specular=new Pe(1118481),this.shininess=new J(30),this.shadingAlpha=new J(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(PP.merge([gy.fog,gy.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(`
327
- `));let i=["#include <beginnormal_vertex>",`
328
- #ifndef USE_LAYER_DISPLACE
329
- #include <defaultnormal_vertex>
330
- #endif
268
+
269
+ lalpha *= mask;
331
270
 
332
- vec3 displaced_position = position;
333
- vec3 displaced_normal = normal;
271
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
272
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
334
273
 
335
- #ifdef USE_LAYER_DISPLACE
336
- vec3 transformed;
337
- vec3 transformedNormal;
338
- #endif
339
- `,"#include <normal_vertex>",`
340
- #ifndef USE_LAYER_DISPLACE
341
- #include <begin_vertex>
274
+ return col;
275
+ }`),i=new U(`vec3 triplanarTexture(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) {
276
+ vec3 p = position;
277
+ vec2 uv0 = (1.0 + p.xy) / 2.0;
278
+ vec2 uv1 = (1.0 + p.zy) / 2.0;
279
+ vec2 uv2 = (1.0 + p.xz) / 2.0;
280
+
281
+ uv0 = (mat * vec3((uv0 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
282
+ uv1 = (mat * vec3((uv1 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
283
+ uv2 = (mat * vec3((uv2 * 2.0 - 1.0) / (size * 0.5), 1.0) / 2.0 + 0.5).xy;
284
+
285
+ // Range from 3 to 128 seems to be good
286
+ float exponent = (1.0 - blending) * 125.0 + 3.0;
287
+
288
+ vec3 n = vObjectNormal;
289
+ vec3 weights = abs(normalize(n));
290
+ weights = pow(weights, vec3(exponent));
291
+ weights /= dot(weights, vec3(1.0));
292
+
293
+ // Derivatives for LOD
294
+ vec2 df0 = fwidth(uv0);
295
+ vec2 df1 = fwidth(uv1);
296
+ vec2 df2 = fwidth(uv2);
297
+ if (df0.x > 0.5) df0.x = 0.0;
298
+ if (df1.x > 0.5) df1.x = 0.0;
299
+ if (df2.x > 0.5) df2.x = 0.0;
300
+
301
+ #ifdef GL_EXT_shader_texture_lod
302
+ vec4 tmp =
303
+ texture2DLodEXT(tex, uv0, log2(max(df0.x, df0.y)*min(textureSize.x, textureSize.y))) * weights.z +
304
+ texture2DLodEXT(tex, uv1, log2(max(df1.x, df1.y)*min(textureSize.x, textureSize.y))) * weights.x +
305
+ texture2DLodEXT(tex, uv2, log2(max(df2.x, df2.y)*min(textureSize.x, textureSize.y))) * weights.y;
306
+ #else
307
+ vec4 tmp =
308
+ textureLod(tex, uv0, log2(max(df0.x, df0.y)*min(textureSize.x, textureSize.y))) * weights.z +
309
+ textureLod(tex, uv1, log2(max(df1.x, df1.y)*min(textureSize.x, textureSize.y))) * weights.x +
310
+ textureLod(tex, uv2, log2(max(df2.x, df2.y)*min(textureSize.x, textureSize.y))) * weights.y;
342
311
  #endif
343
- `];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(`
344
- `)}else{e.mergeUniform({penumbraSize:at.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>",`
345
- varying vec3 vViewPosition;
346
- struct ToonMaterial {
347
- vec3 diffuseColor;
348
- vec3 specularColor;
349
- float specularShininess;
350
- float specularStrength;
351
- };
352
- void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
353
- vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
354
-
355
- reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
356
- reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
312
+
313
+ vec3 col = tmp.rgb;
314
+ float lalpha = alpha * tmp.a;
315
+
316
+ // Apply cropping across all 3 planes
317
+ if ( crop > 0.5 ) {
318
+ if ( uv0.x < 0.0 || uv0.x > 1.0 || uv0.y < 0.0 || uv0.y > 1.0 ) {
319
+ lalpha = 0.0;
357
320
  }
358
- void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
359
- reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
321
+ if ( uv1.x < 0.0 || uv1.x > 1.0 || uv1.y < 0.0 || uv1.y > 1.0 ) {
322
+ lalpha = 0.0;
323
+ }
324
+ if ( uv2.x < 0.0 || uv2.x > 1.0 || uv2.y < 0.0 || uv2.y > 1.0 ) {
325
+ lalpha = 0.0;
360
326
  }
361
- #define RE_Direct RE_Direct_Toon
362
- #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
363
- #define Material_LightProbeLOD( material ) (0)
364
- `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
365
- `));let d=["#include <normal_fragment_begin>",`
366
- // NOTE: gl_FrontFacing alternative using face normal estimation.
367
- vec3 viewdx = dFdx(vViewPosition);
368
- vec3 viewdy = dFdy(vViewPosition);
369
- vec3 faceNormal = normalize(cross(viewdx,viewdy));
370
- if (dot(normal, faceNormal) < 0.0) {
371
- normal *= -1.0;
372
327
  }
373
- `," 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;"),d.push(`
374
- if (outgoingLight != diffuseColor) {
375
- float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
376
- accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
377
- outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
328
+
329
+ lalpha *= mask;
330
+ calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
331
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
332
+
333
+ return col;//n * 0.5 + 0.5;
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) {
336
+ vec4 color = colors[0];
337
+ #ifdef ${o}_IS_VECTOR
338
+ #ifdef ${o}_LINEAR
339
+ #ifdef ${o}_WORLDSPACE
340
+ float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
341
+ #else
342
+ float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
343
+ #endif
344
+ #else
345
+ #ifdef ${o}_WORLDSPACE
346
+ float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
347
+ #else
348
+ float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
349
+ #endif
350
+ #endif
351
+ #else
352
+ float dist = length(vWPosition - cameraPosition);
353
+ float depth = ( dist - near ) / ( far - near );
354
+ #endif
355
+
356
+
357
+ float p;
358
+ #ifdef ${o}_SMOOTH
359
+ for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
360
+ p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
361
+ color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
362
+ }
363
+ #else
364
+ for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
365
+ p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
366
+ color = mix(color, colors[i], p);
367
+ }
368
+ #endif
369
+
370
+ float lalpha = alpha * color.a * mask;
371
+ calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
372
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
373
+
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) {
376
+ vec3 n = normalize(direction);
377
+ float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
378
+ return ( dist - near ) / ( far - near );
379
+ }`),t=new U(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
380
+ vec3 n = normalize(direction);
381
+ float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
382
+ return ( dist - near ) / ( far - near );
383
+ }`),o=new U(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
384
+ float dist = length(vWPosition - origin);
385
+ return ( dist - near ) / ( far - near );
386
+ }`),i=new U(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
387
+ float dist = length(position - origin);
388
+ return ( dist - near ) / ( far - near );
389
+ }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var ws=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) {
390
+ float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
391
+
392
+ float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
393
+ calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
394
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
395
+
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 Nu=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(Nu.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=Nu;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) {
398
+ vec4 color = colors[0];
399
+ vec2 m = morph / vUv.xy;
400
+ vec2 rot = vec2( 0.5 + m.x, m.y );
401
+ vec2 dt = vec2(
402
+ cos( angle ) * rot.x - sin( angle ) * rot.y,
403
+ sin( angle ) * rot.x + cos( angle ) * rot.y
404
+ );
405
+ vec2 pt = ( vUv - 0.5 + offset ) / 2.0 + dt / 2.0;
406
+ float t = dot( pt, dt ) / dot( dt, dt );
407
+ if ( gradientType == 1 ) {
408
+ t = distance (
409
+ ( vUv + morph ) * 3.0,
410
+ ( vUv + offset ) + 1.0
411
+ ) + angle;
412
+ } else if ( gradientType == 2 ) {
413
+ float polar = atan(
414
+ vUv.x + morph.x - 0.5 + offset.x,
415
+ vUv.y + morph.y - 0.5 + offset.y
416
+ ) * -1.0;
417
+ t = fract( ( angle / PI / -2.0 ) + 0.5 * ( polar / PI ) );
418
+ }
419
+
420
+ float p;
421
+ if (smoothed) {
422
+ for ( int i = 1; i < GRAD_MAX; i++ ) {
423
+ p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
424
+ color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
425
+ }
426
+
427
+ } else {
428
+ for ( int i = 1; i < GRAD_MAX; i++ ) {
429
+ p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
430
+ color = mix(color, colors[i], p);
431
+ }
378
432
  }
379
- `),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(`
380
- `)}return t}};var co=class extends Ne{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{Matrix3 as OP}from"three";var ei=class extends Ne{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new OP}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{Vector4 as xy}from"three";var nr=class extends Ne{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof xy?new Array(e).fill(t):new Array(e).fill(new xy(0))}};var ss=(i=>(i.SIMPLEX="simplex3d",i.SIMPLEX_FRACTAL="simplex3dFractal",i.ASHIMA="simplexAshima",i.FBM="fbm",i.PERLIN="perlin",i))(ss||{}),dt=function(){let r=new Q(`vec3 random3(vec3 c) {
433
+
434
+ float lalpha = alpha * color.a * mask;
435
+ calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
436
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
437
+
438
+ return color.xyz;
439
+ }`)}}();var Iu=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(Iu.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=Iu;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
+ vec3 viewDir = normalize( vViewPosition );
441
+ vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
442
+ vec3 y = cross( viewDir, x );
443
+ vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
444
+ vec4 matcapColor = texture2D( matcapTex, uv );
445
+
446
+ float lalpha = alpha * mask;
447
+ calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
448
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
449
+
450
+ return matcapColor.rgb;
451
+ }`)}}();var _s=(s=>(s.SIMPLEX="simplex3d",s.SIMPLEX_FRACTAL="simplex3dFractal",s.ASHIMA="simplexAshima",s.FBM="fbm",s.PERLIN="perlin",s.VORONOI="voronoi",s))(_s||{}),nt=function(){let r=new U(`vec3 random3(vec3 c) {
381
452
  float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
382
453
  vec3 r;
383
454
  r.z = fract(512.0*j);
@@ -386,7 +457,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
386
457
  j *= .125;
387
458
  r.y = fract(512.0*j);
388
459
  return r-0.5;
389
- }`),e=new Q(`float simplex3d(vec3 p) {
460
+ }`),e=new U(`float simplex3d(vec3 p) {
390
461
  vec3 s = floor(p + dot(p, vec3(F3)));
391
462
  vec3 x = p - s + dot(s, vec3(G3));
392
463
 
@@ -417,7 +488,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
417
488
  d *= w;
418
489
 
419
490
  return dot(d, vec4(52.0));
420
- }`,[r]);e.keywords.F3=new be("float F3 0.3333333"),e.keywords.G3=new be("float G3 0.1666667");let t=new Q(`float simplex3dFractal(vec3 m) {
491
+ }`,[r]);e.keywords.F3=new be("float F3 0.3333333"),e.keywords.G3=new be("float G3 0.1666667");let t=new U(`float simplex3dFractal(vec3 m) {
421
492
  mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
422
493
  mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
423
494
  mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
@@ -425,7 +496,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
425
496
  + 0.2666667 * simplex3d(2.0 * m * rot2)
426
497
  + 0.1333333 * simplex3d(4.0 * m * rot3)
427
498
  + 0.0666667 * simplex3d(8.0 * m);
428
- }`,[e]),o=new Q("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new Q("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new Q(`float simplexAshima(vec3 v) {
499
+ }`,[e]),o=new U("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new U("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new U(`float simplexAshima(vec3 v) {
429
500
  const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
430
501
  const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
431
502
  vec3 i = floor(v + dot(v, C.yyy) );
@@ -470,7 +541,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
470
541
  m = m * m;
471
542
  return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
472
543
  dot(p2,x2), dot(p3,x3) ) );
473
- }`,[o,i]),l=new Q("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),c=new Q("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[l]),u=new Q(`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]),d=new U(`float noise(vec3 p){
474
545
  vec3 a = floor(p);
475
546
  vec3 d = p - a;
476
547
  d = d * d * (3.0 - 2.0 * d);
@@ -485,7 +556,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
485
556
  vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
486
557
  vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
487
558
  return o4.y * d.y + o4.x * (1.0 - d.y);
488
- }`,[c]),a=new Q(`float fbm(vec3 x) {
559
+ }`,[c]),a=new U(`float fbm(vec3 x) {
489
560
  float v = 0.0;
490
561
  float a = 0.5;
491
562
  vec3 shift = vec3(100);
@@ -495,7 +566,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
495
566
  a *= 0.5;
496
567
  }
497
568
  return v;
498
- }`,[u]);a.keywords.NUM_OCTAVES=new be(`int NUM_OCTAVES ${5}`);let d=new Q("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new Q(`float perlin(vec3 P){
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){
499
570
  vec3 Pi0 = floor(P);
500
571
  vec3 Pi1 = Pi0 + vec3(1.0);
501
572
  Pi0 = mod(Pi0, 289.0);
@@ -554,56 +625,220 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
554
625
  vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
555
626
  float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
556
627
  return 2.2 * n_xyz;
557
- }`,[o,i,d]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:a,perlin:p}}();var as=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p,f){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.alpha=p,this.noiseType=f,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(ss)[this.noiseType.value],c=new Q(`vec3 ${l}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
558
- vec3 st = position / size;
559
- st /= scale;
560
- vec3 q = vec3(${l}(st),
561
- ${l}(st + vec3(1.0)),
562
- ${l}(st + vec3(1.0)));
563
- vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
564
- ${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
565
- ${l}(st * q));
566
- float f = ${l}(st + r);
567
- vec4 color;
568
- color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
569
- color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
570
- color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
571
-
572
- float lalpha = alpha * color.a;
573
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
574
-
575
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
576
- return clamp(color, 0.0, 1.0).rgb;
577
- }`,[dt.simplex,dt.simplexFractal,dt.simplexAshima,dt.fbm,dt.perlin]),u=e.include(c),a=[];return a.push(this.scale.build(e,"f")),a.push(this.size.build(e,"v3")),a.push(this.move.build(e,"f")),a.push(this.fA.build(e,"v2")),a.push(this.fB.build(e,"v2")),a.push(this.distortion.build(e,"v2")),a.push(this.colorA.build(e,"v4")),a.push(this.colorB.build(e,"v4")),a.push(this.colorC.build(e,"v4")),a.push(this.colorD.build(e,"v4")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(u+"("+a.join(",")+")",this.getType(e),t)}};as.numOctaves=5;var _d=class extends le{constructor(e,t,o,i,s,l,c){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=i,this.factor=s,this.alpha=l,this.mode=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(_d.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ls=_d;ls.Nodes=function(){return{fresnel:new Q(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
578
- float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
628
+ }`,[o,i,u]),f=new U(`float hashwithoutsine13(vec3 p3)
629
+ {
630
+ p3 = fract(p3 * .1031);
631
+ p3 += dot(p3, p3.yzx + 33.33);
632
+ return fract((p3.x + p3.y) * p3.z);
633
+ }`),m=new U(`vec3 hashwithoutsine33(vec3 p3)
634
+ {
635
+ p3 = fract(p3 * vec3(.1031, .1030, .0973));
636
+ p3 += dot(p3, p3.yxz+33.33);
637
+ return fract((p3.xxy + p3.yxx)*p3.zyx);
638
+ }`),h=new U(`float metric(in vec3 p)
639
+ {
640
+ // L2
641
+ return length(p);
642
+
643
+ // Chebyshev
644
+ // vec3 a = abs(p);
645
+ // return max(a.x, max(a.y, a.z));
646
+ }`),y=new U(`float smin( float a, float b, float k )
647
+ {
648
+ float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
649
+ float correction = k * h * (1.0 - h);
650
+ return mix(b, a, h) - correction;
651
+ }`),g=new U(`float smax( float a, float b, float k )
652
+ {
653
+ float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
654
+ float correction = k * h * (1.0 - h);
655
+ return mix(a, b, h) + correction;
656
+ }`),v=new U(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
657
+ // Compute width of each interval
658
+ float input_width = input_max - input_min;
659
+ float output_width = output_max - output_min;
660
+
661
+ // Convert input range into a 0-1 range
662
+ float scaled = (value - input_min) / input_width;
663
+
664
+ // Convert the 0-1 range into a value in output range
665
+ return output_min + (scaled * output_width);
666
+ }`),b=new U(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
667
+ {
668
+ // Integer and fractional parts of this point's coordinates
669
+ ivec3 p = ivec3(floor(x));
670
+ vec3 f = fract(x);
671
+
672
+ // Different variables that we will use to construct noise:
673
+ //
674
+ // f1: distance to the closest feature point
675
+ // f2: distance to the second closest feature point
676
+ // e: distance to the closest edge (cell boundary)
677
+ //
678
+ // We also compute "smooth" versions of all of the above quantites, essentially
679
+ // replacing "hard" minimums with "smooth" minimums (described by IQ)
680
+ float f1_smooth = 8.0;
681
+ float f1 = 8.0;
682
+ float f2_smooth = 8.0;
683
+ float f2 = 8.0;
684
+ float e_smooth = 8.0;
685
+ float e = 8.0;
686
+
687
+ // Variables stored from closest cell
688
+ ivec3 mb;
689
+ vec3 mr;
690
+
691
+ int steps = quality;
692
+
693
+ for (int x = -steps; x <= steps; x++)
694
+ for (int y = -steps; y <= steps; y++)
695
+ for (int z = -steps; z <= steps; z++)
696
+ {
697
+ ivec3 b = ivec3(x, y, z);
698
+ vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
699
+ float d = length(r);
700
+
701
+ f1_smooth = smin(d, f1_smooth, smoothness);
579
702
 
580
- float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
581
- calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
582
- accumAlpha += (1.0 - accumAlpha) * lalpha;
583
- return color;
584
- }`)}}();var Td=class extends le{constructor(e,t,o,i,s,l,c){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,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(Td.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},cs=Td;cs.Nodes=function(){let e=new Q(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
585
- vec3 st = position / noiseScale;
586
- vec3 q = vec3(simplex3d(st),
587
- simplex3d(st + vec3(1.0)),
588
- simplex3d(st + vec3(1.0)));
703
+ // Store un-smoothed distances too
704
+ if (d < f1)
705
+ {
706
+ f2 = f1;
707
+ f1 = d;
589
708
 
590
- vec3 r = vec3(simplex3d(st + vec3(1.4, 1.3, 1.0) * q + vec3(1.7, 9.2, 1.0)),
591
- simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
592
- simplex3d(st * q));
709
+ mb = ivec3(x, y, z);
710
+ mr = r;
711
+ }
712
+ else if (d < f2)
713
+ {
714
+ f2 = d;
715
+ }
716
+ }
717
+
718
+ float id = hashwithoutsine13(vec3(p + mb) + seed);
593
719
 
594
- float noise = simplex3d(st + r);
720
+ // Second pass for edge distance
721
+ for (int x = -steps; x <= steps; x++)
722
+ for (int y = -steps; y <= steps; y++)
723
+ for (int z = -steps; z <= steps; z++)
724
+ {
725
+ // Start search at the cell that contains the closest point to "x" (found in 1st pass)
726
+ ivec3 b = mb + ivec3(x, y, z);
727
+ vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
728
+ float d1 = dot(0.5 * (mr + r), (r - mr)); // IQ normalizes "r - mr" but that breaks things for the smooth version?
729
+ float d2 = dot(0.5 * (mr + r), normalize(r - mr));
595
730
 
596
- return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
597
- }`,[dt.simplex]);return{rainbow:new Q(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
598
- vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
731
+ e_smooth = smin(d1, e_smooth, smoothness);
599
732
 
600
- float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
601
- float lalpha = alpha * rainbowContribution;
602
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
603
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
733
+ e = min(e, d2);
734
+
735
+ // Also compute a smooth version of F2 in this pass
736
+ {
737
+ ivec3 b = ivec3(x, y, z);
738
+ if (b != mb)
739
+ {
740
+ vec3 r = vec3(b) + hashwithoutsine33(vec3(p + b) + seed) - f;
741
+ float d = length(r);
742
+
743
+ f2_smooth = smin(d, f2_smooth, smoothness);
744
+ }
745
+ }
746
+ }
747
+
748
+ // Different visualization modes
749
+ if (style == 0)
750
+ {
751
+ return f1_smooth;
752
+ }
753
+ if (style == 1)
754
+ {
755
+ return f2_smooth;
756
+ }
757
+ if (style == 2)
758
+ {
759
+ return f2_smooth - f1_smooth;
760
+
761
+ // "Pebbles" also cool
762
+ //return step(0.2, f2_smooth - f1_smooth);
763
+ }
764
+ if (style == 3)
765
+ {
766
+ // This one is really good for rock / stone effects
767
+ float a = f1;
768
+ float b = f2;
769
+ float k = 3.0;
770
+ float h = max(k - abs(a - b), 0.0) / k;
771
+ float final = min(a, b) - h * h * k * (1.0 / 4.0);
772
+ return final;
773
+ }
774
+ if (style == 4)
775
+ {
776
+ // Some random adjustments to make this style stand out more
777
+ return exp(5.0 * e_smooth);
778
+ }
779
+ if (style == 5)
780
+ {
781
+ return pow(f1_smooth, 3.0);
782
+ }
783
+ if (style == 6)
784
+ {
785
+ const float eps = 0.0125;
786
+
787
+ // Thicker lines as the user increases the smoothness slider
788
+ float thickness = smoothness * 0.25 + eps;
789
+
790
+ // Blurrier lines as the user increases the smoothness slider
791
+ float blur = pow(smoothness, 3.0) * 0.25 + eps;
792
+
793
+ return smoothstep(
794
+ thickness - thickness * blur,
795
+ thickness + thickness * blur,
796
+ e
797
+ );
798
+ }
799
+ if (style == 7)
800
+ {
801
+ return hashwithoutsine13(vec3(p + mb) + seed);
802
+ }
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(_s)[this.noiseType.value],c=l=="voronoi"?`
805
+ float v = ${l}(st + move, voronoiStyle, smoothness, seed, quality);
806
+
807
+ // Apply clipping to colors
808
+ v = remap(v, lowCut, highCut, 0.0, 1.0);
809
+ v = smax(v, 0.0, smoothness * 0.25);
810
+ v = smin(v, 1.0, smoothness * 0.25);
811
+
812
+ // Note that the voronoi mode only uses colors "A" and "C" from the UI
813
+ vec4 color = mix(colorA, colorC, v);
814
+ `:`
815
+ vec3 q = vec3(${l}(st),
816
+ ${l}(st + vec3(1.0)),
817
+ ${l}(st + vec3(1.0)));
818
+ vec3 r = vec3(${l}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
819
+ ${l}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
820
+ ${l}(st * q));
821
+ float f = ${l}(st + r);
822
+ vec4 color;
823
+ color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
824
+ color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
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)
827
+ {
828
+ // Prevent scale of zero
829
+ scale = max(abs(scale), 0.001);
830
+
831
+ vec3 st = position / size;
832
+ st /= scale;
604
833
 
605
- return res;
606
- }`,[e])}}();var Pd=class extends le{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(`
834
+ ${c}
835
+
836
+ float lalpha = alpha * color.a * mask;
837
+ calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
838
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
839
+
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 Mu=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(`
607
842
  vID = randomColor.r;
608
843
  if (${s}) {
609
844
  vec4 ${c}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
@@ -617,7 +852,7 @@ var Hg=Object.create;var kl=Object.defineProperty;var Wg=Object.getOwnPropertyDe
617
852
  // if this offset is the biggest of all the potential offsets
618
853
  gl_Position = ${c}_clipPosition;
619
854
  }
620
- `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Pd.Nodes.outline),i=[];return i.push(this.outlineColor.build(e,"c")),i.push(this.contourColor.build(e,"c")),i.push(this.outlineWidth.build(e,"f")),i.push(this.contourWidth.build(e,"f")),i.push(this.contourThreshold.build(e,"f")),i.push(this.outlineThreshold.build(e,"f")),i.push(this.contourFrequency.build(e,"f")),i.push(this.outlineSmoothing.build(e,"f")),i.push(this.contourDirection.build(e,"v3")),i.push(this.positionalLines.build(e,"b")),i.push(this.resolution.build(e,"v2")),i.push(this.normalMap.getTexture(e,"t")),i.push(this.depthMap.getTexture(e,"t")),i.push(this.pixelRatio.build(e,"f")),i.push(this.compensation.build(e,"b")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},ds=Pd;ds.Nodes=function(){let e=new Q(`
855
+ `)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Mu.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=Mu;mi.Nodes=function(){let e=new U(`
621
856
  float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
622
857
  {
623
858
  vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
@@ -718,7 +953,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
718
953
  float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
719
954
  return edgeNormal;
720
955
  }
721
- `);return{outline:new Q(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
956
+ `);return{outline:new U(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float mask, float alpha, out float calpha) {
722
957
  vec3 result = outlineColor;
723
958
  float resultAlpha = 0.0;
724
959
 
@@ -753,356 +988,293 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
753
988
  }
754
989
  }
755
990
 
756
- float lalpha = alpha * resultAlpha;
991
+ float lalpha = alpha * resultAlpha * mask;
757
992
  calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
758
993
  accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
994
+
759
995
  return result;
760
- }`,[e])}}();var Od=class extends le{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.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Od.Nodes.transmission),i=[];return i.push(this.thickness.build(e,"f")),i.push(this.ior.build(e,"f")),i.push(this.roughness.build(e,"f")),i.push(this.transmissionSamplerSize.build(e,"v2")),i.push(this.transmissionSamplerMap.getTexture(e,"t")),i.push(this.transmissionDepthMap.getTexture(e,"t")),i.push(this.aspectRatio.build(e,"v2")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},us=Od;us.Nodes=function(){let e=new Q(`
761
- float gaussian(vec2 i) {
762
- const float sigma = float(NUM_SAMPLES) * .25;
763
- return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
764
- }`),t=new Q(`
765
- vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
766
- // Slightly modified version of this:
767
- // https://www.shadertoy.com/view/ltScRG
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)
997
+ {
998
+ vec3 p3 = fract(vec3(p.xyx) * .1031);
999
+ p3 += dot(p3, p3.yzx + 33.33);
1000
+ return fract((p3.x + p3.y) * p3.z);
1001
+ }`),l=new U(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
1002
+ {
1003
+ const float mid = 0.5;
1004
+ float radians = a * (PI / 180.0);
1005
+ vec2 rotated = vec2(
1006
+ cos(radians) * (uv.x - mid) + sin(radians) * (uv.y - mid) + mid,
1007
+ cos(radians) * (uv.y - mid) - sin(radians) * (uv.x - mid) + mid
1008
+ );
1009
+ return repeat ? fract(rotated): rotated;
1010
+ }`),c="";if(this.projection.value===4){let p=this.style.value===2?`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv0, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f=this.style.value===2?`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv1, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,m=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;c=`
1011
+ vec3 p = position;
1012
+ float factor = 0.0125;
1013
+ vec2 uv0 = fract(p.xy * factor);
1014
+ vec2 uv1 = fract(p.zy * factor);
1015
+ vec2 uv2 = fract(p.xz * factor);
1016
+
1017
+ uv0 = rotate_uv(uv0 + offset, rotation, true);
1018
+ uv1 = rotate_uv(uv1 + offset, rotation, true);
1019
+ uv2 = rotate_uv(uv2 + offset, rotation, true);
1020
+
1021
+ float d0 = ${p};
1022
+ float d1 = ${f};
1023
+ float d2 = ${m};
1024
+
1025
+ // Range from 3 to 128 seems to be good
1026
+ float exponent = (1.0 - blending) * 125.0 + 3.0;
1027
+
1028
+ vec3 n = vObjectNormal;
1029
+ vec3 weights = abs(normalize(n));
1030
+ weights = pow(weights, vec3(exponent));
1031
+ weights /= dot(weights, vec3(1.0));
1032
+ d0 *= weights.z;
1033
+ d1 *= weights.x;
1034
+ d2 *= weights.y;
1035
+ float draw = d0 + d1 + d2;
1036
+
1037
+ vec2 custom_uv = uv0 * weights.z + uv1 * weights.x + uv2 * weights.y;
1038
+ `}else{let p=this.style.value===2?`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(custom_uv, frequency, size, variation, smoothness_remapped, zigzag, rotation)`,f="";this.axis.value===0?f=`float radius = length(p);
1039
+ float theta = atan(p.y, p.z);
1040
+ float phi = acos(p.x / radius);`:this.axis.value===1?f=`float radius = length(p);
1041
+ float theta = atan(p.x, p.z);
1042
+ float phi = acos(p.y / radius);`:(this.axis.value,f=`float radius = length(p);
1043
+ float theta = atan(p.y, p.x);
1044
+ float phi = acos(p.z / radius);`);let m="";switch(this.projection.value){case 0:m="custom_uv = vUv.st;";break;case 1:break;case 2:m=`
1045
+ vec3 p = position;
1046
+ ${f}
1047
+ custom_uv = vec2(theta, phi);
1048
+ custom_uv /= PI;
1049
+ `;break;case 3:break;default:break}c=`
1050
+ vec2 custom_uv;
1051
+ ${m}
1052
+
1053
+ custom_uv += offset;
1054
+ custom_uv = fract(custom_uv);
1055
+ custom_uv = rotate_uv(custom_uv, rotation, true);
1056
+
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) {
1059
+ const float TWO_PI = PI * 2.0;
1060
+ float smoothness_remapped = pow(smoothness, 5.0);
1061
+
1062
+ ${c}
1063
+
1064
+ // Construct final output color
1065
+ vec4 color = mix(colorA, colorB, draw);
1066
+ color.a = clamp(color.a, 0.0, 1.0);
1067
+
1068
+ // Apply cuts
1069
+ color.a *=
1070
+ step(vertical.x, custom_uv.y) *
1071
+ step(custom_uv.y, vertical.y);
1072
+ color.a *=
1073
+ step(horizontal.x, abs(custom_uv.x)) *
1074
+ step(abs(custom_uv.x), horizontal.y);
1075
+
1076
+ // Accumulate alpha
1077
+ float lalpha = alpha * clamp(color.a, 0.0, 1.0) * mask;
1078
+ calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
1079
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1080
+
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) {
1083
+ vec3 p3 = fract(vec3(p.xyx) * 0.1031);
1084
+ p3 += dot(p3, p3.yzx + 33.33);
1085
+ return fract((p3.x + p3.y) * p3.z);
1086
+ }`),t=new U(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
1087
+ // Create tiles in UV-space
1088
+ uv *= frequency;
1089
+
1090
+ // Integer coords
1091
+ vec2 i = floor(uv);
1092
+
1093
+ // Offset every other row based on zigzag param, then compute fractional coords
1094
+ float row_offset = mod(i.y, 2.0);
1095
+ uv.x += row_offset * zigzag;
1096
+ vec2 f = fract(uv);
1097
+
1098
+ // Rotate the tile itself:
1099
+ // const float mid = 0.5;
1100
+ // f = vec2(
1101
+ // cos(rotation) * (f.x - mid) + sin(rotation) * (f.y - mid) + mid,
1102
+ // cos(rotation) * (f.y - mid) - sin(rotation) * (f.x - mid) + mid
1103
+ // );
1104
+ // f = fract(f);
1105
+
1106
+ f = f * 2.0 - 1.0;
1107
+
1108
+ // Recompute integer coords after shifting - then, random value per tile
1109
+ i = floor(uv);
1110
+ float rand = (hashwithoutsine12(i) * 5.0 + 1.0);
1111
+ float jitter = mix(1.0, rand, variation);
1112
+ f *= jitter;
1113
+
1114
+ return f;
1115
+ }`,[e]),o=new U(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1116
+ vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1117
+ return smoothstep(
1118
+ -smoothness,
1119
+ smoothness,
1120
+ length(f) - size
1121
+ );
1122
+ }`,[t]),i=new U(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1123
+ vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1124
+
1125
+ float d = length(f);
1126
+ const float inner_width = 0.5;
1127
+
1128
+ float outer = smoothstep(-smoothness, smoothness, d - size);
1129
+ float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
1130
+ return outer + (1.0 - inner);
1131
+ }`,[t]),s=new U(`float sdf_ngon(in vec2 p, in float r, in int n) {
1132
+ float an = (PI * 2.0) / float(n);
1133
+ float he = r * tan(0.5 * an);
1134
+
1135
+ // Rotate to first sector
1136
+ p = -p.yx;
1137
+ float bn = an * floor((atan(p.y, p.x) + 0.5 * an) / an);
1138
+ vec2 cs = vec2(cos(bn), sin(bn));
1139
+ p = mat2(cs.x, -cs.y, cs.y, cs.x)*p;
1140
+
1141
+ // Side of polygon
1142
+ return length(p - vec2(r, clamp(p.y, -he, he))) * sign(p.x - r);
1143
+ }
1144
+
1145
+ float polygon(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation, in int sides) {
1146
+ vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1147
+ return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
1148
+ }`,[t]),l=new U(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
1149
+ p = abs(p);
1150
+ p = (p.y > p.x) ? p.yx : p.xy;
1151
+ vec2 q = p - b;
1152
+ float k = max(q.y, q.x);
1153
+ vec2 w = (k > 0.0) ? q : vec2(b.y - p.x, -k);
1154
+ return sign(k) * length(max(w, 0.0)) + r;
1155
+ }
1156
+
1157
+ // Avoid namespace conflicts
1158
+ float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1159
+ vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
1160
+ return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
1161
+ }`,[t]),c=new U(`float ndot(vec2 a, vec2 b) {
1162
+ return a.x*b.x - a.y*b.y;
1163
+ }
1164
+
1165
+ float sdf_diamond(in vec2 p, in vec2 b) {
1166
+ p = abs(p);
1167
+ float h = clamp(ndot(b - 2.0 * p, b) / dot(b, b), -1.0, 1.0);
1168
+ float d = length(p - 0.5 * b * vec2(1.0 - h, 1.0 + h));
1169
+ return d * sign(p.x * b.y + p.y * b.x - b.x * b.y);
1170
+ }
768
1171
 
769
- const int LOD = 2;
770
- const int sLOD = 4; // tile size = 2^LOD
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
+ vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
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) {
1176
+ uv *= frequency;
1177
+ vec2 i = floor(uv);
771
1178
 
772
- vec3 O = vec3(0);
773
- float a = 0.0;
774
- const int s = NUM_SAMPLES/sLOD;
775
- for ( int i = 0; i < s*s; i++ ) {
776
- int modulo = (i)-((i)/(s))*(s);
777
- vec2 d = vec2(float(modulo), float(i/s))*float(sLOD) - float(NUM_SAMPLES)/2.;
778
- vec2 uv = U + (scale * aspectRatio) * d;
779
- // What is the depth of the opaque object we're trying to sample
780
- float opaqueDepth = unpackRGBAToDepth(texture2D(dm, uv));
781
- if (opaqueDepth != 0.0 && opaqueDepth < gl_FragCoord.z) {
782
- uv = unrefractedU + ((scale * min(lod / 2., 1.)) * aspectRatio) * d;
783
- lod = lod > 4.0 ? lod : lod / 2.0;
784
- }
785
- float gaussian = gaussian(d);
786
- #ifdef TEXTURE_LOD_EXT
787
- O += gaussian * texture2DLodEXT( sp, uv, lod).rgb;
788
- #else
789
- O += gaussian * textureLod( sp, uv, lod).rgb;
790
- #endif
791
- a += gaussian;
792
- }
793
- return O / a;
794
- }`,[e]),o=new Q(`
795
- vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
796
- // Direction of refracted light.
797
- vec3 refractionVector = refract( -v, n, 1.0 / ior );
798
- // Compute rotation-independant scaling of the model matrix.
799
- vec3 modelScale;
800
- modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
801
- modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
802
- modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
803
- // The thickness is specified in local space.
804
- return normalize( refractionVector ) * thickness * modelScale;
805
- }`),i=new Q(`
806
- float applyIorToRoughness( float roughness, float ior ) {
807
- // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
808
- // an IOR of 1.5 results in the default amount of microfacet refraction.
809
- return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
810
- } `),s=new Q(`
811
- vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
812
- float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
813
- float lod = applyIorToRoughness(roughness, ior);
1179
+ float offset = mod(i.y, 2.0);
814
1180
 
815
- return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
816
- }`,[i,t]),l=new Q(`
817
- vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
818
- vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
819
- vec3 refractedRayExit = position + transmissionRay;
1181
+ uv.x += offset + zigzag * offset;
1182
+ float x = floor(uv.x);
1183
+
1184
+ return mod(x, 2.0);
1185
+ }`),a=new U(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1186
+ vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
1187
+
1188
+ // Different approach for variation param here
1189
+ float row = floor(uv * frequency).y;
1190
+ float rand = hashwithoutsine12(vec2(row));
1191
+ float s = mix(size, size * rand, variation);
1192
+
1193
+ return smoothstep(
1194
+ s - smoothness,
1195
+ s + smoothness,
1196
+ abs(f.y)
1197
+ );
1198
+ }`,[t]),u=new U(`// Uses bisection
1199
+ float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
1200
+ // Convert all data to a primitive cosine wave
1201
+ p = c * (p - vec2(d, a));
1202
+
1203
+ const float TWO_PI = PI * 2.0;
820
1204
 
821
- // Project refracted vector on the framebuffer, while mapping to normalized device coordinates.
822
- vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
823
- vec2 refractionCoords = ndcPos.xy / ndcPos.w;
824
- refractionCoords += 1.0;
825
- refractionCoords /= 2.0;
1205
+ // Reduce to principal half cycle
1206
+ p.x = mod(p.x, TWO_PI);
1207
+ if (p.x > PI) {
1208
+ p.x = TWO_PI - p.x;
1209
+ }
1210
+
1211
+ // Find zero of derivative (minimize distance)
1212
+ float xa = 0.0;
1213
+ float xb = TWO_PI;
1214
+
1215
+ // 24 bit precision
1216
+ for (int i = 0; i < 24; i++) {
1217
+ float x = 0.5 * (xa + xb);
1218
+ float y = x - p.x + b * c * sin(x) * (p.y - b * c * cos(x));
1219
+ if (y < 0.0) xa = x;
1220
+ else xb = x;
1221
+ }
1222
+ float x = 0.5 * (xa + xb);
1223
+
1224
+ // Compute distance
1225
+ vec2 q = vec2(x, b * c * cos(x));
1226
+ return length(p - q) / c;
1227
+ }
826
1228
 
827
- vec4 ndcPosUnrefracted = projMatrix * viewMatrix * vec4(position, 1.0 );
828
- vec2 unrefractedCoords = ndcPosUnrefracted.xy / ndcPosUnrefracted.w;
829
- unrefractedCoords += 1.0;
830
- unrefractedCoords /= 2.0;
1229
+ float wave(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
1230
+ float repeat = frequency.x;
1231
+ uv *= repeat;
1232
+ vec2 i = floor(uv);
1233
+ float row_offset = mod(i.y, 2.0);
1234
+ uv.x += row_offset * zigzag;
1235
+ vec2 f = vec2(uv.x, fract(uv.y));
1236
+
1237
+ // Generalized cosine: y(x) = a + b * cos(cx + d)
1238
+ const float amplitude = 0.125;
1239
+ float wave_frequency = frequency.y * 0.1;
1240
+ float distance_estimate = udf_cos(f, 0.50, amplitude, wave_frequency * (2.0 * PI), 0.0);
1241
+
1242
+ // Different approach for variation param here
1243
+ float rand = hashwithoutsine12(vec2(i.y));
1244
+ float s = mix(size, size * rand, variation);
1245
+
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 Eu=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(Eu.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=Eu;yi.Nodes=function(){let e=new U(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
1248
+ vec3 st = position / noiseScale;
1249
+ vec3 q = vec3(simplex3d(st),
1250
+ simplex3d(st + vec3(1.0)),
1251
+ simplex3d(st + vec3(1.0)));
831
1252
 
832
- // Sample framebuffer to get pixel the refracted ray hits.
833
- return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
834
- }`,[s,o]);return{transmission:new Q(`
835
- vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
836
- vec3 v = vec3(0.);
837
- if (isOrthographic) {
838
- v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
839
- } else {
840
- v = normalize(vWPosition - cameraPosition);
841
- }
842
- vec3 transmission = getIBLVolumeRefraction(vWNormal, -v, roughness, vWPosition, modelMatrix, viewMatrix, projectionMatrix, ior, thickness, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, aspectRatio );
843
- float lalpha = alpha;
844
-
845
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
846
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
847
- return transmission;
848
- }`,[l])}}();var ti=class extends le{constructor(e,t,o,i,s,l,c,u,a,d,p){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.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new Q(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
849
- vec4 color = colors[0];
850
- #ifdef ${o}_IS_VECTOR
851
- #ifdef ${o}_LINEAR
852
- #ifdef ${o}_WORLDSPACE
853
- float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
854
- #else
855
- float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
856
- #endif
857
- #else
858
- #ifdef ${o}_WORLDSPACE
859
- float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
860
- #else
861
- float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
862
- #endif
863
- #endif
864
- #else
865
- float dist = length(vWPosition - cameraPosition);
866
- float depth = ( dist - near ) / ( far - near );
867
- #endif
868
-
869
-
870
- float p;
871
- #ifdef ${o}_SMOOTH
872
- for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
873
- p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
874
- color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
875
- }
876
- #else
877
- for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
878
- p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
879
- color = mix(color, colors[i], p);
880
- }
881
- #endif
882
-
883
- float lalpha = alpha * color.a;
884
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
885
-
886
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
887
- return color.rgb;
888
- }`,[ti.Nodes.vectorLinearWorldSpaceDepth,ti.Nodes.vectorLinearObjectSpaceDepth,ti.Nodes.vectorSphericalObjectSpaceDepth,ti.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.colors.value.length),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(i),l=[];return l.push(this.near.build(e,"f")),l.push(this.far.build(e,"f")),l.push(this.origin.build(e,"v3")),l.push(this.direction.build(e,"v3")),l.push(this.colors.build(e,"v4[]")),l.push(this.steps.build(e,"f[]")),l.push(this.alpha.build(e,"f")),l.push(this.calpha),e.format(s+"("+l.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ps=ti;ps.Nodes=function(){let e=new Q(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
889
- vec3 n = normalize(direction);
890
- float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
891
- return ( dist - near ) / ( far - near );
892
- }`),t=new Q(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
893
- vec3 n = normalize(direction);
894
- float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
895
- return ( dist - near ) / ( far - near );
896
- }`),o=new Q(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
897
- float dist = length(vWPosition - origin);
898
- return ( dist - near ) / ( far - near );
899
- }`),i=new Q(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
900
- float dist = length(position - origin);
901
- return ( dist - near ) / ( far - near );
902
- }`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var fs=class extends le{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 Ad=(e=>(e.NOISE="noise",e.MAP="map",e))(Ad||{}),Id=class extends le{constructor(e,t,o,i,s){super("v3");this.displacementTypeIndex=new xe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Ad)[this.displacementTypeIndex.value]==="map"&&(this.mat=new ei(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=i,this.noiseFunctionIndex=s}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(Ad)[this.displacementTypeIndex.value]){case"map":{o=e.include(Id.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(ss)[this.noiseFunctionIndex.value],c=new Q(`vec3 orthogonal(vec3 v) {
903
- return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
904
- }`),u=new Q(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
905
- return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
906
- }`,[dt.simplex,dt.simplexFractal,dt.simplexAshima,dt.fbm,dt.perlin]),a=new Q(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
907
- vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
908
- vec3 tangent1 = orthogonal(normal);
909
- vec3 tangent2 = normalize(cross(normal, tangent1));
910
-
911
- // TODO(Max): The distance to the neighbors was originally scaled by 0.1.
912
- // This caused some small oval/circular visual artifacts in the lighting.
913
- // For now, simply using neighbors further away betters the problem,
914
- // but we should figure out the underlying cause when we have some time.
915
- // Maybe its related to how we calculate the tangent and bitangent?
916
- vec3 nearby1 = position + tangent1;
917
- vec3 nearby2 = position + tangent2;
918
- vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement);
919
- vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
920
- displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
921
- return displaced_position;
922
- }`,[u,c]);o=e.include(a),i.push(this.scale.build(e,"f")),i.push(this.cropOrOffset.build(e,"v3")),i.push(this.movementOrTexture.build(e,"f"));break}}return i.push(this.intensity.build(e,"f")),i.push("displaced_normal"),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},ms=Id;ms.Nodes=function(){let e=new Q(`vec3 orthogonal(vec3 v) {
923
- return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
924
- }`),t=new Q(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
925
- vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
926
- vec4 tmp = texture2D(tex, uvs);
927
- vec3 col = tmp.rgb;
928
- if (crop > 0.5) {
929
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
930
- return 0.0;
931
- }
932
- }
933
- return col.r;
934
- }`);return{map:new Q(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
935
- vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
936
- vec3 tangent1 = normalize(orthogonal(normal));
937
- vec3 tangent2 = normalize(cross(normal, tangent1));
938
- vec3 nearby1 = position + tangent1 * 0.1;
939
- vec3 nearby2 = position + tangent2 * 0.1;
940
- vec3 distorted1 = nearby1 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
941
- vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
942
- displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
943
- return displaced_position;
944
- }`,[e,t])}}();var Cd=class extends le{constructor(e,t,o,i,s,l,c,u){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.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(Cd.Nodes.gradient),i=[];return i.push(this.gradientType.build(e,"i")),i.push(this.smooth.build(e,"b")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.offset.build(e,"v2")),i.push(this.morph.build(e,"v2")),i.push(this.angle.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},hs=Cd;hs.Nodes=function(){return{gradient:new Q(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
945
- vec4 color = colors[0];
946
- vec2 m = morph / vUv.xy;
947
- vec2 rot = vec2( 0.5 + m.x, m.y );
948
- vec2 dt = vec2(
949
- cos( angle ) * rot.x - sin( angle ) * rot.y,
950
- sin( angle ) * rot.x + cos( angle ) * rot.y
951
- );
952
- vec2 pt = ( vUv - 0.5 + offset ) / 2.0 + dt / 2.0;
953
- float t = dot( pt, dt ) / dot( dt, dt );
954
- if ( gradientType == 1 ) {
955
- t = distance (
956
- ( vUv + morph ) * 3.0,
957
- ( vUv + offset ) + 1.0
958
- ) + angle;
959
- } else if ( gradientType == 2 ) {
960
- float polar = atan(
961
- vUv.x + morph.x - 0.5 + offset.x,
962
- vUv.y + morph.y - 0.5 + offset.y
963
- ) * -1.0;
964
- t = fract( ( angle / PI / -2.0 ) + 0.5 * ( polar / PI ) );
965
- }
966
-
967
- float p;
968
- if (smoothed) {
969
- for ( int i = 1; i < GRAD_MAX; i++ ) {
970
- p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
971
- color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
972
- }
973
-
974
- } else {
975
- for ( int i = 1; i < GRAD_MAX; i++ ) {
976
- p = clamp( ( t - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
977
- color = mix(color, colors[i], p);
978
- }
979
- }
980
-
981
- float lalpha = alpha * color.a;
982
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
983
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
984
-
985
- return color.xyz;
986
- }`)}}();var gs=class extends le{constructor(e,t,o,i,s,l,c,u,a,d){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.mat=u,this.alpha=a,this.mode=d,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(gs.Nodes.cylindrical);break;case 2:i=e.include(gs.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 Q(`
987
- vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
988
-
989
- vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
990
-
991
- vec4 tmp = texture2D( tex, uvs );
992
-
993
- vec3 col = tmp.rgb;
994
- float lalpha = alpha * tmp.a;
995
- ${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${l}));`}
996
-
997
- if ( crop > 0.5 ) {
998
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
999
- lalpha = 0.0;
1000
- }
1001
- }
1002
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1003
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1004
- return col;
1005
- }`);i=e.include(c);break;default:i=e.include(gs.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let l=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${l})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),t)}},ys=gs;ys.Nodes=function(){let e=new Q(`
1006
- vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1007
- vec3 posN = normalize(position);
1008
- float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
1009
- float scaledHeight = position.y / (size.y * 0.5);
1010
- float v = (scaledHeight / 2.) + .5;
1011
-
1012
- vec2 calculatedUv = vec2(u,v);
1013
- vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
1014
-
1015
- vec2 df = fwidth(uvs);
1016
- if(df.x > 0.5) df.x = 0.;
1017
-
1018
- #ifdef GL_EXT_shader_texture_lod
1019
- vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
1020
- #else
1021
- vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
1022
- #endif
1023
-
1024
- vec3 col = tmp.rgb;
1025
- float lalpha = alpha * tmp.a;
1026
- if ( crop > 0.5 ) {
1027
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
1028
- lalpha = 0.0;
1029
- }
1030
- }
1031
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1032
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1033
- return col;
1034
- }
1035
- `),t=new Q(`
1036
- vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1037
- vec3 posN = normalize(vPosition);
1038
- float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
1039
- float v = 0.5 + asin(posN.y) / 3.1415;
1040
-
1041
- vec2 calculatedUv = vec2(u,v);
1042
- vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
1043
-
1044
- vec2 df = fwidth(uvs);
1045
- if(df.x > 0.5) df.x = 0.;
1046
- #ifdef GL_EXT_shader_texture_lod
1047
- vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
1048
- #else
1049
- vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
1050
- #endif
1051
-
1052
- vec3 col = tmp.rgb;
1053
- float lalpha = alpha * tmp.a;
1054
- if ( crop > 0.5 ) {
1055
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
1056
- lalpha = 0.0;
1057
- }
1058
- }
1059
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1060
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1061
- return col;
1062
- }
1063
- `),o=new Q(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
1253
+ vec3 r = vec3(simplex3d(st + vec3(1.4, 1.3, 1.0) * q + vec3(1.7, 9.2, 1.0)),
1254
+ simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
1255
+ simplex3d(st * q));
1064
1256
 
1065
- vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
1066
- vec4 tmp = texture2D( tex, uvs );
1257
+ float noise = simplex3d(st + r);
1067
1258
 
1068
- vec3 col = tmp.rgb;
1259
+ return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
1260
+ }`,[nt.simplex]);return{rainbow:new U(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
1261
+ vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
1069
1262
 
1070
- float lalpha = alpha * tmp.a;
1071
- if ( crop > 0.5 ) {
1072
- if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
1073
- lalpha = 0.0;
1074
- }
1075
- }
1076
- calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1077
- accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
1078
- return col;
1079
- }`);return{cylindrical:e,spherical:t,uv:o}}();var Nd=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t}generate(e,t){if(e.isShader("fragment")){let o=e.include(Nd.Nodes.customNormal),i=[];return i.push(this.cnormal.build(e,"v3")),i.push("normal"),i.push(this.alpha.build(e,"f")),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},xs=Nd;xs.Nodes=function(){return{customNormal:new Q(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
1080
- vec3 normal = packNormalToRGB( norm ).rgb;
1081
- normal *= step( vec3(0.5), cnormal );
1263
+ float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
1082
1264
 
1083
- accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1265
+ float lalpha = alpha * rainbowContribution * mask;
1266
+ calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
1267
+ accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
1084
1268
 
1085
- return normal;
1086
- }`)}}();import{Vector2 as vs,Vector3 as Sr,Vector4 as gl}from"three";function ht(n,r){return r.color(n)}function vy(n,r){switch(n.type){case"fresnel":return CP(n,r);case"gradient":return NP(n);case"depth":return EP(n);case"normal":return MP(n);case"noise":return LP(n,r);case"rainbow":return BP(n);case"toon":return DP(n,r);case"outline":return GP(n,r);case"transmission":return RP(n,r);case"color":return IP(n,r)}}function AP(n){return{type:n.type}}function wr(n){let{alpha:r,mode:e}=n;return{...AP(n),alpha:r,mode:e}}function IP(n,r){return{...wr(n),color:ht(n.color,r)}}function CP(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:s}=n;return{...wr(n),color:ht(s,r),bias:e,scale:t,intensity:o,factor:i}}function NP(n){let{gradientType:r,smooth:e,colors:t,steps:o,angle:i,offset:s,morph:l}=n;return{...wr(n),gradientType:r,smooth:e,colors:t.map(c=>new gl(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new vs(...s),morph:new vs(...l),angle:i}}function EP(n){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:s,direction:l,colors:c,steps:u,smooth:a}=n;return{...wr(n),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:i,origin:new Sr(...s),direction:l?new Sr(...l):new Sr(1,0,0),colors:c.map(d=>d!==void 0?new gl(d[0],d[1],d[2],d[3]):new gl(0,0,0,0)),steps:u.slice(0,c.length),smooth:a}}function MP(n){let{cnormal:r}=n;return{...wr(n),cnormal:new Sr(r[0],r[1],r[2])}}function LP(n,r){return{...wr(n),scale:n.scale,move:n.move,fA:new vs(...n.fA),fB:new vs(...n.fB),size:new Sr(...n.size),distortion:new vs(...n.distortion),colorA:ht(n.colorA,r),colorB:ht(n.colorB,r),colorC:ht(n.colorC,r),colorD:ht(n.colorD,r),noiseType:n.noiseType}}function BP(n){return{...wr(n),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new Sr(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new Sr(...n.offset)}}function DP(n,r){return{...wr(n),positioning:n.positioning,colors:n.colors.map(e=>new gl(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new Sr(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:ht(n.shadowColor,r),offset:new Sr(...n.offset)}}function GP(n,r){return{...wr(n),outlineColor:ht(n.outlineColor,r),contourColor:ht(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new Sr(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function RP(n,r){return{...wr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}var uo=class extends $e{};import{Vector4 as FP}from"three";import{VideoTexture as VP,Texture as jP}from"three";var xl=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 Md=class extends xl{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Ed;function by(n){return typeof n=="string"?n:(Ed||(Ed=new Md),Ed.load(n))}var vl=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")}},bl=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 ri=class extends vl{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=by(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 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 zt=class extends ri{};var po=class extends Ne{};var Ld={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"]},Bd={depth:["colors"]};function zP(n,r,e){let t=Ld[n.type],o=Bd[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 Dd(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 zt||c.image.deref(),c.image=l}if("video"in i){let s=i.video,l=r.video(s),c=t;c.image instanceof zt||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 Sy(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Gd(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 po))switch(o=o||zP(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 uo?l.value=new $e(c.r,c.g,c.b,c.a):l.setRGBA(c);break}case Ft:if(typeof s=="string"){let c=r.getColor(s);c&&(l.value=c);break}else{let c=s;l.value instanceof uo?l.value=new $e(c.r,c.g,c.b,c.a):l.value.setRGBA(c.r,c.g,c.b,c.a);break}case et:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]);break}case st:{let c=s;l.value.setX(c[0]),l.value.setY(c[1]),l.value.setZ(c[2]);break}case Tt:{Dd(s,r,e);break}case nr:{l.value=s.map(c=>new FP(...c));break}default:{l.value=s;break}}}return o}var Rd=class extends le{constructor(e,t,o){super("v3");this.nodeType="Matcap";this.texture=e,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(Rd.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let i=[];return i.push(this.texture.generate(e,"t")),i.push("normal"),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},bs=Rd;bs.Nodes=function(){return{matcap:new Q(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
1087
- vec3 viewDir = normalize( vViewPosition );
1088
- vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
1089
- vec3 y = cross( viewDir, x );
1090
- vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
1091
- vec4 matcapColor = texture2D( matcapTex, uv );
1092
-
1093
- calpha = alpha / clamp( alpha + accumAlpha, 0.00001, 1.0 );
1094
- accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1095
-
1096
- return matcapColor.rgb;
1097
- }
1098
- `)}}();var Mo=class extends po{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};import{Vector3 as UP}from"three";var Sl=class extends po{constructor(e){super("v3");this.image=e;this._value=new UP}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 Vd=class extends le{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(Vd.Nodes.toon),i=[];return i.push(this.positioning.build(e,"i")),i.push(this.colors.build(e,"v4[]")),i.push(this.steps.build(e,"f[]")),i.push(this.source.build(e,"v3")),i.push(this.isWorldSpace.build(e,"b")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.shadowColor.build(e,"v4")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ss=Vd;Ss.Nodes=function(){let e=new Q(`float rand(float n) {
1269
+ return res;
1270
+ }`,[e])}}();var Lu=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(Lu.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=Lu;gi.Nodes=function(){let e=new U(`float rand(float n) {
1099
1271
  return fract(sin(n) * 43758.5453123);
1100
- }`),t=new Q(`float hash1(float p) {
1272
+ }`),t=new U(`float hash1(float p) {
1101
1273
  p = fract(p * 0.011);
1102
1274
  p *= p + 7.5;
1103
1275
  p *= p + p;
1104
1276
  return fract(p);
1105
- }`),o=new Q(`float valueNoise(vec3 x) {
1277
+ }`),o=new U(`float valueNoise(vec3 x) {
1106
1278
  const vec3 step = vec3(110, 241, 171);
1107
1279
 
1108
1280
  vec3 i = floor(x);
@@ -1117,13 +1289,13 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1117
1289
  mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
1118
1290
  mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
1119
1291
  mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
1120
- }`,[t]),i=new Q(`vec3 hash3(vec3 x) {
1292
+ }`,[t]),i=new U(`vec3 hash3(vec3 x) {
1121
1293
  x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
1122
1294
  dot(x,vec3(269.5, 183.3, 246.1)),
1123
1295
  dot(x,vec3(113.5, 271.9, 124.6)));
1124
1296
 
1125
1297
  return fract(sin(x)*43758.5453123);
1126
- }`),s=new Q(`vec3 voronoiNoise(in vec3 x)
1298
+ }`),s=new U(`vec3 voronoiNoise(in vec3 x)
1127
1299
  {
1128
1300
  vec3 p = floor(x);
1129
1301
  vec3 f = fract(x);
@@ -1154,7 +1326,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1154
1326
 
1155
1327
  return vec3(sqrt(res), abs(id));
1156
1328
  }
1157
- `,[i]);return{toon:new Q(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
1329
+ `,[i]);return{toon:new U(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float mask, float alpha, out float calpha) {
1158
1330
  float t = 0.0;
1159
1331
  float shadow = 1.0;
1160
1332
 
@@ -1325,14 +1497,391 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
1325
1497
  }
1326
1498
 
1327
1499
  // Accumulate alpha as usual
1328
- float lalpha = alpha * color.a;
1500
+ float lalpha = alpha * color.a * mask;
1329
1501
  calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
1330
1502
  accumAlpha += (1.0 - accumAlpha) * lalpha;
1331
1503
 
1332
1504
  return color.xyz;
1333
1505
 
1334
- }`,[dt.simplex,e,o,s])}}();import{Matrix3 as kP}from"three";function wy(n,r,e){n.setUvTransform(e[0],e[1],r[0],r[1],0,0,0)}var wl=class extends ei{constructor(e,t){super(new kP);this.repeat=e;this.offset=t;wy(this.value,e,t)}updateMatrix(){wy(this.value,this.repeat,this.offset)}};var Tr=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)Gd(i,this,t)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return Pr.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 Mo(i,t.texture.wrapping),l=new Sl(i),c=new wl(t.texture.repeat,t.texture.offset),u=new J(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 et(t.size?new Lo(t.size[0],t.size[1]):new Lo(100,100)),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new ys(s,l,u,a,d,p,f,c,m,h),g=new _e(y.calpha,"f");return new He(r,e,t,{texture:s,textureSize:l,crop:u,projection:a,axis:d,side:p,size:f,mat:c,alpha:m,mode:h},y,h,g)}else if(t.type==="matcap"){let i=o.image(t.texture.image),s=new Mo(i,t.texture.wrapping),l=new J(t.alpha??1),c=new xe(t.mode??0),u=new bs(s,l,c),a=new _e(u.calpha,"f");return new He(r,e,t,{texture:s,alpha:l,mode:c},u,c,a)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new st(new _r(...t.offset)),s=new J(t.scale??10),l=new J(t.intensity??8),c=new J(t.movement??1),u=new xe(t.noiseType??0),a=new ms(l,c,i,s,u);return new ws(r,e,t,{offset:i,scale:s,intensity:l,movement:c,noiseType:u},a)}else throw new Error;else return qP(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):Sy(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Dd(o.props,t.shared,this):!0;return!1}dispose(){if(HP(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof zt||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}},He=class extends Tr{constructor(e,t,o,i,s,l,c){super(e,t,o,i);this.params=i;this.color=s;this.mode=l;this.alpha=c}},ws=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,i);this.position=s}},Pr=class extends Tr{constructor(e,t,o,i,s){super(e,t,o,s);this.node=i}static createLigherLayer(e,t,o,i){let s,l=new J(o.alpha),c=new xe(o.mode),u;if(!o.visible)s=new Eo,u={};else if(o.category==="lambert"){s=new os;let a=new Pe(i.color(o.emissive)??0);u={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new is;let a=new J(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 ns;let a=new J(o.roughness??.3),d=new J(o.metalness??0),p=new J(o.reflectivity??.5);u={roughness:a,metalness:d,reflectivity:p},s.roughness=a,s.metalness=d,s.reflectivity=p}else{s=new yl;let a=new J(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 J(1),s.shadingAlpha=l,s.shadingBlend=c,u.alpha=s.shadingAlpha,u.mode=s.shadingBlend,new Pr(e,t,o,s,u)}get category(){return this.node.category}};function HP(n){let r=n instanceof Tr?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function WP(n,r,e,t){switch(n.type){case"color":{let o=new Pe(t.color??5526619),i=new J(t.alpha??1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(t.mode??0);return o.alpha=i,new He(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}case"fresnel":{let o=new Pe(t.color??16777215),i=new J(t.bias??.1),s=new J(t.scale??1),l=new J(t.intensity??2),c=new J(t.factor??1),u=new J(t.alpha??1),a=new xe(t.mode??0),d=new ls(o,i,s,l,c,u,a),p=new _e(d.calpha,"f");return new He(r,e,n,{color:o,bias:i,scale:s,intensity:l,factor:c,alpha:u,mode:a},d,a,p)}case"rainbow":{let o=new J(t.filmThickness??30),i=new J(t.movement??0),s=new st(t.wavelengths??new _r(0,0,0)),l=new J(t.noiseStrength??0),c=new J(t.noiseScale??1),u=new st(t.offset??new _r(0,0,0)),a=new J(t.alpha??1),d=new cs(o,i,s,l,c,u,a),p=new _e(d.calpha,"f"),f=new xe(t.mode??0);return new He(r,e,n,{filmThickness:o,movement:i,wavelengths:s,noiseStrength:l,noiseScale:c,offset:u,alpha:a,mode:f},d,f,p)}case"transmission":{let o=new J(t.thickness??10),i=new J(t.ior??1.5),s=new J(t.roughness??.5),l=at.transmissionSize,c=at.transmissionRenderTarget,u=at.transmissionRenderTargetDepth,a=window.innerWidth,d=window.innerHeight,p=a>=d?new et(d/a,1):new et(1,a/d),f=new J(t.alpha??1),m=new us(o,i,s,l,c,u,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new He(r,e,n,{thickness:o,ior:i,roughness:s,aspectRatio:p,alpha:f,mode:y},m,y,h)}case"toon":{let o=new xe(t.positioning??0),i;t.colors?i=new nr(t.colors.length,t.colors):(i=new nr(10,new oi(0,0,0,1)),i.value[1]=new oi(1,1,1,1));let s;t.steps?s=new or(t.steps.length,t.steps):(s=new or(10,1),s.value[0]=0);let l=new st(t.source??new _r(0,0,0)),c=new co(t.isWorldSpace??!0),u=new J(t.noiseStrength??0),a=new J(t.noiseScale??1),d=new Ft(t.shadowColor),p=new st(t.offset??new _r(0,0,0)),f=new J(t.alpha??1),m=new Ss(o,i,s,l,c,u,a,d,p,f),h=new _e(m.calpha,"f"),y=new xe(t.mode??0);return new He(r,e,n,{positioning:o,colors:i,steps:s,source:l,isWorldSpace:c,noiseStrength:u,noiseScale:a,shadowColor:d,offset:p,alpha:f,mode:y},m,y,h)}case"outline":{let o=new Pe(t.outlineColor??16777215),i=new Pe(t.contourColor??16777215),s=new J(t.outlineWidth??.1),l=new J(t.contourWidth??.1),c=new J(t.outlineThreshold??.1),u=new J(t.contourThreshold??.1),a=new J(t.outlineSmoothing??.1),d=new J(t.contourFrequency??.1),p=new st(t.contourDirection??new _r(0,1,0)),f=new co(t.positionalLines??!1),m=new co(t.compensation??!0),h=at.normalRenderTarget,y=at.normalRenderTargetDepth,g=at.pixelRatioNode,v=at.resolution,b=new J(t.alpha??1),w=new ds(o,i,s,l,c,u,a,d,p,f,m,v,h,y,g,b),S=new _e(w.calpha,"f"),T=new xe(t.mode??0);return new He(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,alpha:b,mode:T},w,T,S)}case"depth":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s=new J(t.near??50),l=new J(t.far??200),c=new J(t.isVector??1),u=new J(t.isWorldSpace??0),a=new st(t.origin??new _r),d=new st(t.direction??new _r),p;t.colors?p=new nr(t.colors.length,t.colors):(p=new nr(2,new oi(0,0,0,1)),p.value[1]=new oi(1,1,1,1));let f;t.steps?f=new or(t.steps.length,t.steps):(f=new or(2,1),f.value[0]=0);let m=new J(t.alpha??1),h=new xe(t.mode??0),y=new ps(o,i,s,l,c,u,a,d,p,f,m),g=new _e(y.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,near:s,far:l,isVector:c,isWorldSpace:u,origin:a,direction:d,colors:p,steps:f,alpha:m,mode:h},y,h,g)}case"noise":{let o=new J(t.scale??1),i=new st(t.size??new _r(100,100,100)),s=new J(t.move??1),l=new et(t.fA??new Lo(1.7,9.2)),c=new et(t.fB??new Lo(8.3,2.8)),u=new et(t.distortion??new Lo(1,1)),a=new Ft(t.colorA),d=new Ft(t.colorB),p=new Ft(t.colorC),f=new Ft(t.colorD),m=new J(t.alpha??1),h=new xe(t.mode??0),y=new xe(t.noiseType??0),g=new as(o,i,s,l,c,u,a,d,p,f,m,y),v=new _e(g.calpha,"f");return new He(r,e,n,{scale:o,size:i,move:s,fA:l,fB:c,distortion:u,colorA:a,colorB:d,colorC:p,colorD:f,alpha:m,mode:h,noiseType:y},g,h,v)}case"normal":{let o=new st(t.cnormal??new _r(1,1,1)),i=new J(t.alpha??1),s=new xe(t.mode??0),l=new xs(o,i),c=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return c.keywords.alpha=i,new He(r,e,n,{cnormal:o,alpha:i,mode:s},l,s,c)}case"gradient":{let o=new xe(t.gradientType??0),i=new co(t.smooth??!1),s;t.colors?s=new nr(t.colors.length,t.colors):(s=new nr(10,new oi(0,0,0,1)),s.value[1]=new oi(1,1,1,1));let l;t.steps?l=new or(t.steps.length,t.steps):(l=new or(10,1),l.value[0]=0);let c=new et(t.offset??new Lo(0,0)),u=new et(t.morph??new Lo(0,0)),a=new J(t.angle??0),d=new J(t.alpha??1),p=new xe(t.mode??0),f=new hs(o,i,s,l,c,u,a,d),m=new _e(f.calpha,"f");return new He(r,e,n,{gradientType:o,smooth:i,colors:s,steps:l,offset:c,morph:u,angle:a,alpha:d,mode:p},f,p,m)}default:{let o=new Pe(1,0,0,1),i=new J(1),s=new _e("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=i;let l=new xe(0);return o.alpha=i,new He(r,e,n,{color:o,alpha:i,mode:l},o,l,s)}}}function qP(n,r,e,t){let o=vy(e,t);return WP(e,n,r,o)}function Gd(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 _y(n,r){let e=0;for(let t of n.layers)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"){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 At=class extends $P{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}},jd=class extends At{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()}},ni=class extends At{constructor(e,t){super();this.data=e;this.layerIdGen=0;this.flavors=[];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 jd(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??St.defaultTwoLayerData("phong").layers;this.layers=o.map(i=>Tr.create(this.layerIdGen++,i.id,i.data,t.shared)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(),this.transparent=_y(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 Pr),this.lightLayer===void 0&&(this.lightLayer=new Pr(0,"",{...ft.defaultData("light","phong"),visible:!1},new Eo,{})),this.dispose();for(let e of this.flavors)e&&e.dispose();this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=_y(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=Tr.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=Tr.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)}blendColors(){let e=this.layers.findIndex(o=>o instanceof He),t=this.layers.findIndex(o=>o instanceof Pr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let s=this.layers[i];s instanceof He&&(o=new fs(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new _e("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof Pr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];i instanceof He&&(e=new fs(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 ws);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new Pt(t,e[o].position,Pt.ADD),t=new Pt(t,new J(.5).setReadonly(!0),Pt.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=(Ld[t.type]??[]).map(l=>t[l]),i=(Bd[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 hl;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 He){let t=e.params.texture;if(t instanceof Mo&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(At.prototype,{properties:{get:function(){return this.fragment.properties}}});var Bo=class extends ni{};var Ay=Rs(Ty());var Py=new Map;function Oy(n){if(typeof n=="string")return n;let r=Py.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Py.set(n,r)),r.url}var Do=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:Oy(r),format:"wav"},this.sound=new Ay.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 YP,Vector2 as Go,Path as Iy,Shape as XP,ShapeUtils as KP,Color as ZP}from"three";var Tl=class{constructor(){this.type="ShapePath";this.color=new ZP;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Iy,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,C=g.y,P=v.y,I=(T-S)*(_-C)-(P-C)*(b-S),O=(w-b)*(_-C)-(x-_)*(b-S),A=(P-C)*(w-b)-(T-S)*(x-_),R=I/A,U=O/A;if(A===0&&I!==0||R<=0||R>=1||U<0||U>1)return null;if(I===0&&A===0){for(let q=0;q<2;q++)if(i(q===0?g:v,h,y),t.loc===e.ORIGIN){let te=q===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),$=+(_+t.t*(x-_)).toPrecision(10);return{x:te,y:$,t:t.t}}return null}else{for(let $=0;$<2;$++)if(i($===0?g:v,h,y),t.loc===e.ORIGIN){let W=$===0?g:v;return{x:W.x,y:W.y,t:t.t}}let q=+(b+R*(w-b)).toPrecision(10),te=+(_+R*(x-_)).toPrecision(10);return{x:q,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],C=o(w,S,_,x);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),v.push(new Go(C.x,C.y)))}}return v}function l(h,y,g){let v=new Go;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 Go;h.boundingBox.getCenter(w);let S=[new Go(g,w.y),new Go(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 C=_[0].point.x,P=[],I=0;for(;I<x.length&&x[I].point.x<C;)P.length>0&&P[P.length-1]===x[I].identifier?P.pop():P.push(x[I].identifier),I++;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 U=0;U<P.length;U++){let q=P[U];y[q]&&(O?(R=y[q].isCW,O=!1,A=q):R!==y[q].isCW&&(R=y[q].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:KP.isClockWise(y),identifier:u++,boundingBox:new YP(new Go(w,v),new Go(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 XP;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new Iy;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Ny,Fd=new Promise(n=>{Ny=n}),Cy=!1;async function Ey(){if(Cy)return;let n=await import("./opentype.js");Ny(n),Cy=!0}var _s=class{async load(r,e,t=()=>{}){let{load:o}=await Fd;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Fd;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 QP(n){return await(await fetch(n)).arrayBuffer()}var JP=new _s;async function zd(n){let r,e,t=!1;if(n.url?(r=await QP(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await JP.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as eO,LineCurve as tO,QuadraticBezierCurve as rO}from"three";function oO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Pl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=zd(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=zd(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(oO(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(`
1335
- `,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[_],C=x.index===0?`
1336
- `:x.unicode?String.fromCharCode(x.unicode):void 0,P=T[_],I=0,O=0;_===0&&e.horizontalAlign===2&&x.leftSideBearing!==void 0&&(O=-x.leftSideBearing*o),y&&(I=t.getKerningValue(x,y)*o),d+=O+I;let A=0;if(C===`
1337
- `)A=u;else if(C===" ")A=a;else{let R=this.createPath(x,o,d,p,e);R&&(A=R.offsetX-(I+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($=>(t.glyphs.get($).advanceWidth??0)*o),U=R.reduce(($,W)=>$+=W,0),q=R.map($=>$/U),te=d;for(let $=0;$<q.length;$++){let W=A*q[$];h[v].push([te,p]),m[v].push(W),te+=W}}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(`
1338
- `)>=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 Tl,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=nO(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 nO(n){if(n.length){let r=n[0];if(r instanceof tO)return r.v1;if(r instanceof eO||r instanceof rO)return r.v0}}var Ud=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()}},Ts=class extends Ud{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t){let o=Io(e,t,this.flatShading);return o.computeBoundingSphere(),o}};var My={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var kd=class extends bl{constructor(e){super();this.shared=e}create(e){return new ri(e,this.shared)}},Ro=class{constructor(r,e={}){this.geometryCache=new Ts(!0);this.geometryCache2=new Ts(!1);this.imageHolderCache=new kd(this);this.thisContext={scene:My,shared:this};this.deletedMaterial=new Bo(St.defaultTwoLayerData("phong"),this.thisContext);this.deletedImage=new zt(Cn.emptyImage,this);this.deletedVideo=new zt(Qo.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 Bo(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]=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 ni(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 zt(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 zt(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 uo(e.r,e.g,e.b,e.a):this.colors[r]=new uo(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 $e(0,0,0,0))}else return"a"in r?new $e(r.r,r.g,r.b,r.a):new $e(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 Do)return e;{let t=new Do({src:e});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Do&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Pl(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 Do&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}},Ly=new Ro(Ga.emptyData());var ir=class extends it{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),xu(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(Wt(e.path,["material"])&&this.material instanceof At)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(rt.drop(e,1),t.material,o);else if(Wt(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(rt.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&&da(this.material).forEach(e=>{e instanceof At&&(e instanceof Bo||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as iO}from"three";var lt=class extends ir{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof iO&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Ro){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 Oi.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Oi.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Wt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(rt.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=Io(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&&Zi(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=Io(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&&Ni(["scaleBaked"],Object.keys(e.props))&&this.geometryCreateDeleyed instanceof Fe&&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 aO(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 Wd(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new Wd})}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 By(i,3))}function lO(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 Wd;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 By(t,3))}function ii(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof At)||n.material.getLayersOfType("outline").length===0)return;n instanceof lt&&n.is2DAndNoDepth?lO(n):aO(n)}function si(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=[Hd.seededRandom(o),Hd.seededRandom(o+1e4),Hd.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new sO(t,3))}var pO;qn.then(n=>{pO=n});var Or=new cO,Ps=new uO;function Gy(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Vo=class extends lt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new dO;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}=Fe.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,ii(this),si(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){Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&Fe.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Fe.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Fe.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,it.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 Dy,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;Or.setFromBufferAttribute(t),Or.getCenter(o),e.boundingSphere.radius=o.distanceTo(Or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),Or.getSize(Ps),this.hasNonUniformScale&&Ps.divide(this.scale);let i={width:Ps.x,height:Ps.y,depth:Ps.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let t=this.originalGeometry;Or.min.set(e[0],e[2],e[4]),Or.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(Or.min.applyMatrix4(this.shearScaleInv),Or.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Dy);let o=t.boundingSphere.center;Or.getCenter(o),t.boundingSphere.radius=o.distanceTo(Or.max)}freeSubdivPointer(){this.subdivPointer&&(Fe.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 fO,Vector3 as Fo}from"three";var Ry=-1,mO=1,Vy={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},jy={polygon_center:0,edge:1,vertex:2},Os=(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-Ry)*(e-t)/(mO-Ry)+t};function Fy(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 hO=new Fo,Ol=new Fo,yO=new Fo,gO=new Fo;function ai(n,r){let e=yO.fromArray(n),t=gO.fromArray(r);Ol.copy(t).sub(e);let o=Ol.length();return Ol.normalize().multiplyScalar(o*.5),hO.copy(e).add(Ol).toArray()}var Ut=new fO,Al=new Fo,Il=new Fo,jo=new Fo;function zy(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Al.fromArray(n.index.array,e*3),Ut.setFromAttributeAndIndices(n.attributes.position,Al.x,Al.y,Al.z),Ut.getNormal(Il),Ut.getMidpoint(jo),!(isNaN(jo.x)||isNaN(jo.y)||isNaN(jo.z))){let{a:t,b:o,c:i}=Ut,s=t.toArray(),l=o.toArray(),c=i.toArray(),u=t.distanceTo(o),a=o.distanceTo(i),d=i.distanceTo(t),p=ai(s,l),f=ai(l,c),m=ai(c,s),h=[u,a,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,v=[],b=Ut.getMidpoint(jo).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:Ut.getNormal(Il).toArray()})}return r}function Uy(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){Ut.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),Ut.getNormal(Il),Ut.getMidpoint(jo);let o=Ut.a.toArray(),i=Ut.b.toArray(),s=Ut.c.toArray();r.push({vertices:[o,i,s],faceCenters:[ai(o,i),ai(i,s),ai(s,o)],midpoint:jo.toArray(),norm:Il.toArray()})}return r}var xO=4,vO=.5,qd=n=>.5*(1-Math.cos(n*Math.PI)),$d=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<xO;g++){let v=o+(i<<4)+(s<<8);a=qd(l),d=qd(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+=qd(u)*(h-m),p+=m*f,f*=vO,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()}},ky=$d;import{Vector3 as bO,Matrix4 as SO,Ray as wO}from"three";var Hy=new bO,Wy=new SO,qy=new wO;function $y(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var li=class extends lt{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)&&(Wy.copy(o).invert(),qy.copy(e.ray).applyMatrix4(Wy),qy.intersectBox(this.singleBBox,Hy))){let i=Hy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var yt=1e-4,Ar,Zy,Qy,Jy,Xy=new Gt,Ky=new Gt;qn.then(n=>{Ar=n,Zy=[Ar.get_face_center,Ar.get_edge_midpoint,Ar.get_vertex_position],Qy=[Ar.get_face_normal,Ar.get_edge_normal,Ar.get_vertex_normal],Jy=[Ar.face_count,Ar.edge_count,Ar.vertex_count]});var TO=new Uo,PO=new Uo,fo=new Gt,zo=new Gt,As=new Gt,Xd=new Gt,OO=new Gt,AO=new Gt;var Hr=new ky,di=class extends Nn(_O){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 zr&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof zr&&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 zr(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 zr(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*Yy.DEG2RAD,i=t.end*Yy.DEG2RAD,s=o-i,l=new Yd(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Gt(0,0,1);break;case"y":c=new Gt(0,1,0);break;default:case"x":c=new Gt(1,0,0);break}let u=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,a=u.noiseType==="perlin";Hr.noiseSeed(u.seed);let d=Fa((0,ci.default)(u.seed)),p=Os(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=a?Hr.noise(h):d(h,h);m.scale.x=t.scale[0]+p(f,me(y,u.scale[0]))||yt,m.scale.y=t.scale[1]+p(f,me(y,u.scale[1]))||yt,m.scale.z=t.scale[2]+p(f,me(y,u.scale[2]))||yt,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 Yd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let l=Fa((0,ci.default)(i.seed)),c=Os(i.strength,this.parameters.randomness);for(let[u,a]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=s?Hr.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]))||yt,a.scale.y=1+(t.scale[1]-1)*u+c(u,me(p,i.scale[1]))||yt,a.scale.z=1+(t.scale[2]-1)*u+c(u,me(p,i.scale[2]))||yt,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??mr.defaultData([1,1,1]).randomnessObject,s=Os(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let c=Rm((0,ci.default)(i.seed));if(o.useCenter===!0){let u={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},a=new Gt(o.size[0]*(o.count[0]-u.x)*.5,o.size[1]*(o.count[1]-u.y)*.5,o.size[2]*(o.count[2]-u.z)*.5);for(let 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?Hr.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+s(t,me(h,i.scale[0]))||yt,y.scale.y=1+s(t,me(h,i.scale[1]))||yt,y.scale.z=1+s(t,me(h,i.scale[2]))||yt;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?Hr.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+s(t,me(f,i.scale[0]))||yt,m.scale.y=1+s(t,me(f,i.scale[1]))||yt,m.scale.z=1+s(t,me(f,i.scale[2]))||yt;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 Yd(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??mr.defaultData([1,1,1]).randomnessObject,s=i.noiseType==="perlin";Hr.noiseSeed(i.seed);let l=Fa((0,ci.default)(i.seed)),c=Os(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 li)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=Fy(a);if(u.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new za(this.objectForSample).build(),h=Vy[t.axis],y=this.children;m.setRandomGenerator((0,ci.default)(this.object.uuid+t.seed));for(let[g,v]of y.entries()){let b=g*(i.freqScale/10)+i.movement,w=s?Hr.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(As,Xd):(f.length&&(As.fromArray(f[g].pos),Xd.fromArray(f[g].norm)),this.objectForSample instanceof Vo&&As.applyMatrix4(TO.copy(this.objectForSample.matrixWorld).invert())),As.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(As),fo.fromArray(h);let x=t.align==="normal"?Xd:this.object.getWorldDirection(AO),C=zo.fromArray(t.position);zo.x+=zo.x+c(g,me(w,i.position[0])),zo.y+=zo.y+c(g,me(w,i.position[1])),zo.z+=zo.z+c(g,me(w,i.position[2]));let P=Math.acos(x.dot(fo)),I=OO.crossVectors(fo,x).normalize(),O=PO.makeRotationAxis(I,P),A=x.clone().cross(this.object.up).normalize(),R=A.clone().cross(x).normalize(),U=new Uo().makeBasis(A,x,R),q=new Gt(fo.y,fo.z,fo.x).normalize(),te=q.clone().cross(fo).normalize(),$=new Uo().makeBasis(q,fo,te).invert(),W=new Uo().multiplyMatrices(U,$);v.rotation.setFromRotationMatrix(W),C.applyMatrix4(O),v.position.add(C),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]))||yt,v.scale.y=v.scale.y+t.scale[1]+c(g,me(w,i.scale[1]))||yt,v.scale.z=v.scale.z+t.scale[2]+c(g,me(w,i.scale[2]))||yt,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 Vo){let t=this.objectForSample,o=jy[e],i=Jy[o],s=Zy[o],l=Qy[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);Xy.fromArray(d).applyMatrix4(t.matrixWorld),Ky.fromArray(p),c.push({pos:Xy.toArray(),norm:Ky.toArray()})}return c}else return(this.objectForSample.geometry.index?zy(this.objectForSample.geometry):Uy(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 it?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Uo,this.hiddenMatrix=new Uo,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};import{HemisphereLight as hA,Scene as yA,Vector3 as gA,Fog as xA,Box3 as vA,MeshBasicMaterial as bA}from"three";import{Camera as jO,OrthographicCamera as og,PerspectiveCamera as FO,Vector3 as ar,Object3D as ng,Quaternion as zO}from"three";import{Camera as LO,LineSegments as BO,BufferGeometry as DO,LineBasicMaterial as GO,Color as Zd,Vector3 as RO,Float32BufferAttribute as tg}from"three";import{BoxGeometry as IO}from"three";var Ir=n=>{var r;return r=class extends n{},r.geometryHelper=new IO(30,30,30),r};import{Ray as CO,Sphere as NO,Matrix4 as EO,Vector3 as Wr}from"three";var Cl=new CO,Kd=new NO,eg=new EO,Cr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Kd.copy(i.boundingSphere),Kd.applyMatrix4(s),e.ray.intersectsSphere(Kd)===!1||(eg.copy(s).invert(),Cl.copy(e.ray).applyMatrix4(eg),i.boundingBox!==null&&Cl.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,Cl,p,c,u,a),l){l.faceIndex=Math.floor(m/3),t.push(l);return}}else{let v=i.attributes.position,b=new Wr,w=new Wr,S=new Wr,T=new Wr,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,I=Math.max(0,f.start),O=Math.min(v.count,f.start+f.count);for(let A=I,R=O-1;A<R;A+=_){if(b.fromBufferAttribute(v,A),w.fromBufferAttribute(v,A+1),Cl.distanceSqToSegment(b,w,T,S)>P)continue;T.applyMatrix4(n.matrixWorld);let q=e.ray.origin.distanceTo(T);q<e.near||q>e.far||t.push({distance:q,point:S.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,v,b,w,S,T,_){let x=new Wr,C=new Wr,P=new Wr,I=new Wr,O=new Wr;if(x.fromBufferAttribute(w,S),C.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),b.intersectTriangle(x,C,P,!1,I)===null)return null;O.copy(I),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 Nl=new RO,kt=new LO,Qd=class extends BO{constructor(e){let t=new DO,o=new GO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new Zd(15711266),u=new Zd(15711266),a=new Zd(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 tg(i,3)),t.setAttribute("color",new tg(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;kt.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;sr("n1",t,e,kt,-i,-s,l),sr("n2",t,e,kt,i,-s,l),sr("n3",t,e,kt,-i,s,l),sr("n4",t,e,kt,i,s,l);let c=l;sr("f1",t,e,kt,-i,-s,c),sr("f2",t,e,kt,i,-s,c),sr("f3",t,e,kt,-i,s,c),sr("f4",t,e,kt,i,s,c);let u=c,a=.5;sr("u1",t,e,kt,i*.7*a,s*1.1,u),sr("u2",t,e,kt,-i*.7*a,s*1.1,u),sr("u3",t,e,kt,0,s*(1.1+.9*a),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(n,r,e,t,o,i,s){Nl.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],Nl.x,Nl.y,Nl.z)}}var El=class extends Ir(Qd){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){Cr(this.object,this.geometry,e,t,!0)}};import{Box3Helper as rg,BoxGeometry as VO}from"three";var Ml;(r=>r.is=e=>"objectHelper"in e)(Ml||(Ml={}));var mo=(n,r)=>class extends Wa(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 rg&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof VO?(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 rg&&(i.visible=!1)}}};var Jd=790,ui=new ar,eu=new ar,tu=new zO,ru=new ar,Is=new ar,ou=new ar,Nr=class extends mo(jO,El){constructor(e="",t={...On.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=bo.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??Jd,l=o/i,c=o>i?l:1,u=o>i?1:l;this.orthoCamera=new og(-s*.5*c,s*.5*c,s*.5*(1/u),-s*.5*(1/u),-5e4,1e4)}else this.orthoCamera=new og(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new FO(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 ar(e,t,o)),super.lookAt(e),this.getWorldPosition(ui),this.targetOffset=ui.distanceTo(e)}getTarget(e=new ar){return this.getWorldDirection(eu),this.getWorldPosition(ui),eu.multiplyScalar(this.targetOffset),e.copy(ui).add(eu),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(ui),ui.distanceTo(e)}updateUp(){this.getWorldQuaternion(tu),ru.set(0,0,1).applyQuaternion(tu),Is.copy(ng.DEFAULT_UP),this.isUpVectorFlipped&&Is.negate(),Is.applyQuaternion(tu),ou.copy(ng.DEFAULT_UP).projectOnPlane(ru),this.angleOffsetFromUp=ou.angleTo(Is),this.angleOffsetFromUp*=ou.cross(Is).dot(ru)>=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 ar),i=e.getWorldDirection(new ar).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToObject(e){let t=e.getWorldPosition(new ar),i=this.getWorldDirection(new ar).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??Jd,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:Jd},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return _n(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 ig,Float32BufferAttribute as UO,Matrix4 as kO}from"three";var sg=new kO;var Ht=class extends ir{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new ig;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 Ht&&s.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let s=this.children[i];if(s instanceof it&&s.dataPatched.visible===!0&&s.geometry.attributes.position?.count>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if((s.geometry.index??s.geometry.getAttribute("position")).count/3<15e5&&(s.booleanMeshSetAddress=tr.getMeshSet(s.geometry,e===!0,t)),s.booleanMeshSetAddress===-1)return;tr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof Ht&&s.needsTransformForDownstream===!0?(tr.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(sg.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),tr.transformMeshSet(s.booleanMeshSetAddress,sg),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new UO([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return tr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new ig,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=tr.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,ii(this),si(this)}dispose(){super.dispose(),this.geometry.dispose()}};import{Light as HO}from"three";var ag;(r=>{function n(e){return Ie.is(e)&&e instanceof HO}r.is=n})(ag||(ag={}));var pi=(n,r)=>class extends mo(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 fi=n=>n instanceof it,Cs=n=>n!==null&&n instanceof Ht,lg=n=>n instanceof Nr;var nu=n=>Ml.is(n);import{Group as qO}from"three";import{AxesHelper as WO}from"three";var ho=class extends Ir(WO){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){Cr(this.object,ho.geometryHelper,e,t)}update(){}};var Ns=class extends mo(qO,ho){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as ZO,CameraHelper as cg}from"three";import{DirectionalLightHelper as $O}from"three";var mi=class extends Ir($O){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,mi.geometryHelper,e,t)}};import{PointLightHelper as YO}from"three";var hi=class extends Ir(YO){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,hi.geometryHelper,e,t)}};import{SpotLightHelper as XO,Vector3 as KO}from"three";var Ll=class extends Ir(XO){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Cr(this.object,Ll.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Ll._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)}}},Es=Ll;Es._vector=new KO;function QO(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 Bl=class extends pi(ZO,mi){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 cg(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 cg&&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&&QO(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 JO,Vector3 as Dl,Box3 as eA,Box3Helper as dg,Color as tA}from"three";var Gl=class extends pi(JO,hi){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 Dl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new Dl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new eA(s,l),u=new dg(c,new tA(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 dg){let t=this.shadow.camera,o=new Dl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new Dl(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 rA,CameraHelper as ug,MathUtils as oA,Vector3 as hg,Quaternion as nA}from"three";var pg=new hg,fg=new hg,mg=new nA,Rl=class extends pi(rA,Es){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=oA.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new ug(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 ug&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),fg.setFromMatrixPosition(this.matrixWorld),mg.setFromRotationMatrix(this.matrixWorld),pg.copy(this.up).applyQuaternion(mg).negate().multiplyScalar(this.distance),this.target.position.copy(fg).add(pg),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 Vl=class extends lt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?es(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var yi=class extends lt{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=ll;break;case"Ellipse":i=Fn;break;case"Polygon":i=al;break;case"Star":i=cl;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?es(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 iA}from"three";var qr=class extends mo(iA,ho){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 no.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 no.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(Ie.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),jl(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&gg(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function jl(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)Ie.is(e)&&jl(e)}}function yg(n,r,e,t){return n.component===r&&Ni(n.identity,t)?n.overrideData===e?2:1:0}function gg(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 qr&&o.isInstanceRoot&&o.expandInstanceChildren(n);let c=0;for(let u of o.children)if(Ie.is(u)){let a=[...r,...typeof u.identity=="string"?[u.identity]:u.identity],d=An.resolve(e,a,1),p=null,f;if(!l){let m=t.children[c];if(p=Ie.is(m)?m:null,p!==null){let h=yg(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=yg(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?Mr.apply(u.data,d):u.data;$t.is(m.type)&&(m={...m,type:"Empty"}),p=Kt.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,gg(n,r,e,p,u,i,s+1,l)}if(!l){let u=c;for(;;){let a=t.children[c];if(Ie.is(a))n.pendingDeletes.add(a);else break;c+=1}t.children.splice(u,c-u)}return!0}function sA(n,r,e){let t;return r.geometry.type==="TextGeometry"?new li(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Vo(n,r,e):r.geometry.type==="PathGeometry"?t=new yi(n,r,e):r.geometry.type==="VectorGeometry"?t=new Vl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new Ht(n,r,e):t=new lt(n,r,e),t)}function Fl(n,r,e){return r.type==="Mesh"?sA(n,r,e):r.type==="Empty"?new Ns(n,r):r.type==="PointLight"?new Gl(n,r,e):r.type==="SpotLight"?new Rl(n,r,e):r.type==="DirectionalLight"?new Bl(n,r,e):r.type==="Component"||r.type==="Instance"?new qr(n,r,e):$t.is(r.type)?new Nr(n,r):(console.error(r),new Ns(n,r))}Kt.createEntity=Fl;function aA(n,r,e){let t=Fl(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()}Kt.changeEntityProptotype=aA;Kt.Cloner=di;function xg(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as cA,Ray as dA,Raycaster as uA}from"three";function vg(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,si(n),ii(n)),t.length===0&&o.length===0&&n.layers.set(0),e}function bg(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 Sg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)vg(e,e.material[t])&&(r=!0);else vg(e,e.material)&&(r=!0)}),r}function wg(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof ir)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)bg(e,e.material[t])&&(r=!0);else bg(e,e.material)&&(r=!0)}),r}var pA=new uA,fA=new cA,mA=new dA;function iu(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=fA.copy(i.matrixWorld).invert(),l=mA.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let u=pA;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 zl=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 SA=new bA;SA.wireframe=!0;var _g=new gA,su=class extends yA{constructor(e,t){super();this.data=e;this.backupFog=new xA(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 $e(1,1,1,1);this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new zl;this.needsRecomputeInstances=!1;this.ambientLight=new hA(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=wg(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Sg(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(),fi(i)&&Cs(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),Cs(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),fi(o)&&(o.freeBooleanPointer(),i instanceof Ht&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof yi&&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()),fi(o)&&(o.invalidateUpstreamBooleanData(),Cs(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Ht&&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{xg(s,t,o,{scene:this,shared:i}),s instanceof lt&&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(ht(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 Nr&&this.switchActiveCamera(o)}this.expandInstances(t,!0),this.traverseEntity(o=>{Cs(o)&&o.recomputeBoolean(),o instanceof Nr&&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){Ie.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Ie.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=Ko(a.data,d=>{let p=d.events.data(c.id),f=a.goUp(l);if(f){let m=[...da(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid;ut.zoom(p,t)[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof qr&&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=Ko(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 qr&&i.isInstanceRoot)return i.expandInstanceChildren({scene:this,shared:e,pendingDeletes:o}),t||i.resetBBoxNeedsUpdate(),!0});for(let i of o)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(i),jl(i)}recomputeInstances(e){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(t=>{t instanceof qr&&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)Ie.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=new Nr(su.PERSONAL_CAMERA_ID,{...On.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;Ie.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((fi(s)||nu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),iu(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;Ie.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible)&&((fi(s)||nu(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),iu(s,e,t,!0)),o(s))}};return o(this),t}forEachEntity(e){for(let t of this.children)Ie.is(t)&&e(t)}traverseEntity(e){for(let t of this.children)Ie.is(t)&&t.traverseEntity(e)}traverseObject(e){for(let t of this.children)Di.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Ie.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=ht(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=ht(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.groundColor!==void 0&&(this.ambientLight.groundColor=ht(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=Fl(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 lt&&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 vA;return o.setFromPoints(t),o.getCenter(_g),_g}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 it)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof At&&e(t.material[o]);else t.material instanceof At&&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=su;gi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",gi.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";import{DRACOLoader as wA}from"three/examples/jsm/loaders/DRACOLoader.js";var yo;function _A(){return yo||(yo=new wA,yo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),yo.decoderPending}async function TA(n){if(yo){let r={attributeIDs:yo.defaultAttributeIDs,attributeTypes:yo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await yo.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 Tg(n,r){let[e,t]=Kl(ta.deserialize(new Uint8Array(n)));Lm(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 _A();for(let i of o){let s=await TA(Ye(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 OX}from"three";import{mergeBufferGeometries as CX}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Pg(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 Og,ShaderLib as PA}from"three";function Ag(n){let r=new Set;return n.traverse(e=>{if(e instanceof ir)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(OA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Og,specularColor:new Og});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},PA.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 AA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function OA(n){return n.getLayersOfType("transmission").length>0}function AA(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 Ig(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Cg(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 IA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Ng(n){let r=[];return n.traverse(e=>{e instanceof di&&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&&Pg(c),c}),s=IA(e.parameters.hideBase?i:[t instanceof it?t.geometry:[],...i]);t instanceof it&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Ly})}),n}function Eg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function Mg(n){Object.values(n.shared.materials).forEach(r=>{au(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?au(e.material):"materials"in e&&e.materials.forEach(t=>{au(t)})})}function au(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 Gg=Rs(Bg(),1),Dg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",lu=class extends NA{load(r,e,t,o=console.error){let i=new CA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(Dg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(Dg),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 Tg(r,Mg);e.version&&(0,Gg.default)(e.version,"0.9.345")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Gy(e)&&ey(),$y(e)&&Ey()].filter(Boolean));let t=new Ro(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&&lg(s)&&Object.assign(s,{makeDefault:!0})}return o=Ng(o),o=Ag(o),o=Ig(o),o=Cg(o),o=Eg(o),o}};export{lu as default};
1506
+ }`,[nt.simplex,e,o,s])}}();var Bu=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(Bu.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=Bu;xi.Nodes=function(){let e=new U(`
1507
+ float gaussian(vec2 i) {
1508
+ const float sigma = float(NUM_SAMPLES) * .25;
1509
+ return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
1510
+ }`),t=new U(`
1511
+ vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
1512
+ // Slightly modified version of this:
1513
+ // https://www.shadertoy.com/view/ltScRG
1514
+
1515
+ // Special case for blur == 0.0
1516
+ if (lod == 0.0) {
1517
+ #ifdef TEXTURE_LOD_EXT
1518
+ return texture2DLodEXT( sp, U, 0.0).rgb;
1519
+ #else
1520
+ return textureLod( sp, U, 0.0).rgb;
1521
+ #endif
1522
+ }
1523
+
1524
+ const int sLOD = BLUR_SLOD; // tile size = 2^LOD
1525
+
1526
+ vec3 O = vec3(0);
1527
+ float a = 0.0;
1528
+ const int s = NUM_SAMPLES/sLOD;
1529
+ for ( int i = 0; i < s*s; i++ ) {
1530
+ int modulo = (i)-((i)/(s))*(s);
1531
+ vec2 d = vec2(float(modulo), float(i/s))*float(sLOD) - float(NUM_SAMPLES)/2.;
1532
+ vec2 uv = U + (scale * aspectRatio) * d;
1533
+ // What is the depth of the opaque object we're trying to sample
1534
+ float opaqueDepth = unpackRGBAToDepth(texture2D(dm, uv));
1535
+ if (opaqueDepth != 0.0 && opaqueDepth < gl_FragCoord.z) {
1536
+ uv = unrefractedU + ((scale * min(lod / 2., 1.)) * aspectRatio) * d;
1537
+ lod = lod > 4.0 ? lod : lod / 2.0;
1538
+ }
1539
+ float gaussian = gaussian(d);
1540
+ #ifdef TEXTURE_LOD_EXT
1541
+ O += gaussian * texture2DLodEXT( sp, uv, lod).rgb;
1542
+ #else
1543
+ O += gaussian * textureLod( sp, uv, lod).rgb;
1544
+ #endif
1545
+ a += gaussian;
1546
+ }
1547
+ return O / a;
1548
+ }`,[e]),o=new U(`
1549
+ vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
1550
+ // Direction of refracted light.
1551
+ vec3 refractionVector = refract( -v, n, 1.0 / ior );
1552
+ // Compute rotation-independant scaling of the model matrix.
1553
+ vec3 modelScale;
1554
+ modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
1555
+ modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
1556
+ modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
1557
+ // The thickness is specified in local space.
1558
+ return normalize( refractionVector ) * thickness * modelScale;
1559
+ }`),i=new U(`
1560
+ float applyIorToRoughness( float roughness, float ior ) {
1561
+ // Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
1562
+ // an IOR of 1.5 results in the default amount of microfacet refraction.
1563
+ return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
1564
+ } `),s=new U(`
1565
+ vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
1566
+ float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
1567
+ float lod = applyIorToRoughness(roughness, ior);
1568
+
1569
+ return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
1570
+ }`,[i,t]),l=new U(`
1571
+ vec3 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
1572
+ vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
1573
+ vec3 refractedRayExit = position + transmissionRay;
1574
+
1575
+ // Project refracted vector on the framebuffer, while mapping to normalized device coordinates.
1576
+ vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
1577
+ vec2 refractionCoords = ndcPos.xy / ndcPos.w;
1578
+ refractionCoords += 1.0;
1579
+ refractionCoords /= 2.0;
1580
+
1581
+ vec4 ndcPosUnrefracted = projMatrix * viewMatrix * vec4(position, 1.0 );
1582
+ vec2 unrefractedCoords = ndcPosUnrefracted.xy / ndcPosUnrefracted.w;
1583
+ unrefractedCoords += 1.0;
1584
+ unrefractedCoords /= 2.0;
1585
+
1586
+ // Sample framebuffer to get pixel the refracted ray hits.
1587
+ return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
1588
+ }`,[s,o]);return{transmission:new U(`
1589
+ vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float mask, float alpha, out float calpha) {
1590
+ vec3 v = vec3(0.);
1591
+ if (isOrthographic) {
1592
+ v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
1593
+ } else {
1594
+ v = normalize(vWPosition - cameraPosition);
1595
+ }
1596
+ vec3 transmission = getIBLVolumeRefraction(vWNormal, -v, roughness, vWPosition, modelMatrix, viewMatrix, projectionMatrix, ior, thickness, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, aspectRatio );
1597
+
1598
+ float lalpha = alpha * mask;
1599
+ calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
1600
+ accumAlpha += ( 1.0 - accumAlpha ) * alpha;
1601
+
1602
+ return transmission;
1603
+ }`,[l])}}();var Du=(e=>(e.NOISE="noise",e.MAP="map",e))(Du||{}),Gu=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(Du)[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(Du)[this.displacementTypeIndex.value]){case"map":{o=e.include(Gu.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(_s)[this.noiseFunctionIndex.value],c=new U(`vec3 orthogonal(vec3 v) {
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"?`
1606
+ float v = ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
1607
+ v = remap(v, lowCut, highCut, 0.0, 1.0);
1608
+ v = smax(v, 0.0, smoothness * 0.25);
1609
+ v = smin(v, 1.0, smoothness * 0.25);
1610
+
1611
+ return p + n * v * intensity;
1612
+ `:`
1613
+ return p + n * ${l}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
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) {
1617
+ vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1618
+ vec3 tangent1 = orthogonal(normal);
1619
+ vec3 tangent2 = normalize(cross(normal, tangent1));
1620
+
1621
+ // TODO(Max): The distance to the neighbors was originally scaled by 0.1.
1622
+ // This caused some small oval/circular visual artifacts in the lighting.
1623
+ // For now, simply using neighbors further away betters the problem,
1624
+ // but we should figure out the underlying cause when we have some time.
1625
+ // Maybe its related to how we calculate the tangent and bitangent?
1626
+ vec3 nearby1 = position + tangent1;
1627
+ vec3 nearby2 = position + tangent2;
1628
+ vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1629
+ vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
1630
+ displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
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=Gu;vi.Nodes=function(){let e=new U(`vec3 orthogonal(vec3 v) {
1633
+ return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
1634
+ }`),t=new U(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
1635
+ vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
1636
+ vec4 tmp = texture2D(tex, uvs);
1637
+ vec3 col = tmp.rgb;
1638
+ if (crop > 0.5) {
1639
+ if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
1640
+ return 0.0;
1641
+ }
1642
+ }
1643
+ return col.r;
1644
+ }`);return{map:new U(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
1645
+ vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
1646
+ vec3 tangent1 = normalize(orthogonal(normal));
1647
+ vec3 tangent2 = normalize(cross(normal, tangent1));
1648
+ vec3 nearby1 = position + tangent1 * 0.1;
1649
+ vec3 nearby2 = position + tangent2 * 0.1;
1650
+ vec3 distorted1 = nearby1 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1651
+ vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
1652
+ displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
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 Ts=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(LP.merge([Ty.fog,Ty.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
+ `));let i=["#include <beginnormal_vertex>",`
1656
+ #ifndef USE_LAYER_DISPLACE
1657
+ #include <defaultnormal_vertex>
1658
+ #endif
1659
+
1660
+ vec3 displaced_position = position;
1661
+ vec3 displaced_normal = normal;
1662
+
1663
+ #ifdef USE_LAYER_DISPLACE
1664
+ vec3 transformed;
1665
+ vec3 transformedNormal;
1666
+ #endif
1667
+ `,"#include <normal_vertex>",`
1668
+ #ifndef USE_LAYER_DISPLACE
1669
+ #include <begin_vertex>
1670
+ #endif
1671
+ `];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>",`
1672
+ vec3 diffuse = vec3( 1.0 );
1673
+ GeometricContext geometry;
1674
+ geometry.position = mvPosition.xyz;
1675
+ geometry.normal = normalize( transformedNormal );
1676
+ geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
1677
+ GeometricContext backGeometry;
1678
+ backGeometry.position = geometry.position;
1679
+ backGeometry.normal = -geometry.normal;
1680
+ backGeometry.viewDir = geometry.viewDir;
1681
+ vLightFront = vec3( 0.0 );
1682
+ vIndirectFront = vec3( 0.0 );
1683
+ #ifdef DOUBLE_SIDED
1684
+ vLightBack = vec3( 0.0 );
1685
+ vIndirectBack = vec3( 0.0 );
1686
+ #endif
1687
+ IncidentLight directLight;
1688
+ float dotNL;
1689
+ vec3 directLightColor_Diffuse;
1690
+ vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
1691
+ vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
1692
+ #ifdef DOUBLE_SIDED
1693
+ vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
1694
+ vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
1695
+ #endif
1696
+ #if NUM_POINT_LIGHTS > 0
1697
+ #pragma unroll_loop_start
1698
+ for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
1699
+ getPointLightInfo( pointLights[ i ], geometry, directLight );
1700
+ dotNL = dot( geometry.normal, directLight.direction );
1701
+ directLightColor_Diffuse = directLight.color;
1702
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1703
+ #ifdef DOUBLE_SIDED
1704
+ vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
1705
+ #endif
1706
+ }
1707
+ #pragma unroll_loop_end
1708
+ #endif
1709
+ #if NUM_SPOT_LIGHTS > 0
1710
+ #pragma unroll_loop_start
1711
+ for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
1712
+ getSpotLightInfo( spotLights[ i ], geometry, directLight );
1713
+ dotNL = dot( geometry.normal, directLight.direction );
1714
+ directLightColor_Diffuse = directLight.color;
1715
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1716
+ #ifdef DOUBLE_SIDED
1717
+ vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
1718
+ #endif
1719
+ }
1720
+ #pragma unroll_loop_end
1721
+ #endif
1722
+ #if NUM_DIR_LIGHTS > 0
1723
+ #pragma unroll_loop_start
1724
+ for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
1725
+ getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
1726
+ dotNL = dot( geometry.normal, directLight.direction );
1727
+ directLightColor_Diffuse = directLight.color;
1728
+ vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
1729
+ #ifdef DOUBLE_SIDED
1730
+ vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
1731
+ #endif
1732
+ }
1733
+ #pragma unroll_loop_end
1734
+ #endif
1735
+ #if NUM_HEMI_LIGHTS > 0
1736
+ #pragma unroll_loop_start
1737
+ for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
1738
+ vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
1739
+ #ifdef DOUBLE_SIDED
1740
+ vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
1741
+ #endif
1742
+ }
1743
+ #pragma unroll_loop_end
1744
+ #endif
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>",`
1748
+ // NOTE: gl_FrontFacing alternative using face normal estimation.
1749
+ vec3 viewdx = dFdx(vViewPosition);
1750
+ vec3 viewdy = dFdy(vViewPosition);
1751
+ vec3 faceNormal = normalize(cross(viewdx, viewdy));
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(`
1754
+ if (outgoingLight != diffuseColor) {
1755
+ float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1756
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
1757
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
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 Py,UniformsUtils as BP}from"three";var Ps=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(BP.merge([Py.fog,Py.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
+ `));let i=["#include <beginnormal_vertex>",`
1762
+ #ifndef USE_LAYER_DISPLACE
1763
+ #include <defaultnormal_vertex>
1764
+ #endif
1765
+
1766
+
1767
+ vec3 displaced_position = position;
1768
+ vec3 displaced_normal = normal;
1769
+
1770
+ #ifdef USE_LAYER_DISPLACE
1771
+ vec3 transformed;
1772
+ vec3 transformedNormal;
1773
+ #endif
1774
+ `,"#include <normal_vertex>",`
1775
+ #ifndef USE_LAYER_DISPLACE
1776
+ #include <begin_vertex>
1777
+ #endif
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>",`
1781
+ // NOTE: gl_FrontFacing alternative using face normal estimation.
1782
+ vec3 viewdx = dFdx(vViewPosition);
1783
+ vec3 viewdy = dFdy(vViewPosition);
1784
+ vec3 faceNormal = normalize(cross(viewdx,viewdy));
1785
+ if (dot(normal, faceNormal) < 0.0) {
1786
+ normal *= -1.0;
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(`
1789
+ if (outgoingLight != diffuseColor) {
1790
+ float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1791
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
1792
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
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 Ru,UniformsUtils as DP}from"three";var Os=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(DP.merge([Ru.fog,Ru.lights])),Ru.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
+ `));let i=["#include <beginnormal_vertex>",`
1797
+ #if !defined( USE_LAYER_DISPLACE )
1798
+ #include <defaultnormal_vertex>
1799
+ #endif
1800
+
1801
+ vec3 displaced_position = position;
1802
+ vec3 displaced_normal = normal;
1803
+
1804
+ #if defined( USE_LAYER_DISPLACE )
1805
+ vec3 transformed;
1806
+ vec3 transformedNormal;
1807
+ #endif
1808
+ `,"#include <normal_vertex>",`
1809
+ #if !defined( USE_LAYER_DISPLACE )
1810
+ #include <begin_vertex>
1811
+ #endif /* !USE_LAYER_DISPLACE */
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(`
1814
+ `));let f=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
1815
+ // NOTE: gl_FrontFacing alternative using face normal estimation.
1816
+ vec3 viewdx = dFdx(vViewPosition);
1817
+ vec3 viewdy = dFdy(vViewPosition);
1818
+ vec3 faceNormal = normalize(cross(viewdx,viewdy));
1819
+ if (dot(normal, faceNormal) < 0.0) {
1820
+ normal *= -1.0;
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(`
1823
+ if (outgoingLight != diffuseColor) {
1824
+ float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1825
+ accumAlpha += ( 1.0 - accumAlpha ) * ${c.result} * ${m} * lightAccu;
1826
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${c.result} * ${m}, ${d.result} );
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 Oy,UniformsUtils as GP}from"three";var As=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(GP.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(`
1830
+ `));let i=["#include <beginnormal_vertex>",`
1831
+ #ifndef USE_LAYER_DISPLACE
1832
+ #include <defaultnormal_vertex>
1833
+ #endif
1834
+
1835
+ vec3 displaced_position = position;
1836
+ vec3 displaced_normal = normal;
1837
+
1838
+ #ifdef USE_LAYER_DISPLACE
1839
+ vec3 transformed;
1840
+ vec3 transformedNormal;
1841
+ #endif
1842
+ `,"#include <normal_vertex>",`
1843
+ #ifndef USE_LAYER_DISPLACE
1844
+ #include <begin_vertex>
1845
+ #endif
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>",`
1848
+ varying vec3 vViewPosition;
1849
+ struct ToonMaterial {
1850
+ vec3 diffuseColor;
1851
+ vec3 specularColor;
1852
+ float specularShininess;
1853
+ float specularStrength;
1854
+ };
1855
+ void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
1856
+ vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
1857
+
1858
+ reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
1859
+ reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
1860
+ }
1861
+ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
1862
+ reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
1863
+ }
1864
+ #define RE_Direct RE_Direct_Toon
1865
+ #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
1866
+ #define Material_LightProbeLOD( material ) (0)
1867
+ `,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
1868
+ `));let u=["#include <normal_fragment_begin>",`
1869
+ // NOTE: gl_FrontFacing alternative using face normal estimation.
1870
+ vec3 viewdx = dFdx(vViewPosition);
1871
+ vec3 viewdy = dFdy(vViewPosition);
1872
+ vec3 faceNormal = normalize(cross(viewdx,viewdy));
1873
+ if (dot(normal, faceNormal) < 0.0) {
1874
+ normal *= -1.0;
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(`
1877
+ if (outgoingLight != diffuseColor) {
1878
+ float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
1879
+ accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${p} * lightAccu;
1880
+ outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${p}, ${c.result} );
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 RP,Texture as VP}from"three";var _l=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 zu=class extends _l{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},Vu;function Ay(n){return typeof n=="string"?n:(Vu||(Vu=new zu),Vu.load(n))}var Tl=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")}},Pl=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 Tl{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=Ay(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new RP(this.img,void 0,e,e):o=new VP(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 Ol}from"three";function ut(n,r){return r.color(n)}function Cy(n,r){switch(n.type){case"fresnel":return jP(n,r);case"gradient":return kP(n);case"depth":return UP(n);case"normal":return HP(n);case"noise":return WP(n,r);case"rainbow":return qP(n);case"toon":return $P(n,r);case"outline":return XP(n,r);case"transmission":return YP(n,r);case"color":return FP(n,r);case"pattern":return KP(n,r)}}function zP(n){return{type:n.type}}function lr(n){let{alpha:r,mode:e,isMask:t}=n;return{...zP(n),alpha:r,mode:e,isMask:t}}function FP(n,r){return{...lr(n),color:ut(n.color,r)}}function jP(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 kP(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 Ol(c[0],c[1],c[2],c[3])),num:t.length,steps:o,offset:new Xr(...s),morph:new Xr(...l),angle:i}}function UP(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 Ol(u[0],u[1],u[2],u[3]):new Ol(0,0,0,0)),steps:d.slice(0,c.length),smooth:a}}function HP(n){let{cnormal:r}=n;return{...lr(n),cnormal:new Ar(r[0],r[1],r[2])}}function WP(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 qP(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 $P(n,r){return{...lr(n),positioning:n.positioning,colors:n.colors.map(e=>new Ol(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 XP(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 YP(n,r){return{...lr(n),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function KP(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 ZP}from"three";var Fu={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},ju={depth:["colors"]};function QP(n,r,e){if(r==="isMask")return!0;let t=Fu[n.type],o=ju[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 ku(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 Ny(n,r,e,t){let o=!1;for(let[i,s]of Object.entries(n)){if(!i||s===void 0)continue;if(Uu(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||QP(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:{ku(s,r,e);break}case ar:{l.value=s.map(c=>new ZP(...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)Uu(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 Sl(i),c=new wl(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 Cs(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 tO(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):Ny(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?ku(o.props,t.shared,this):!0;return!1}dispose(){if(JP(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}},Cs=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 Ts;let a=new Pe(i.color(o.emissive)??0);d={emissive:a},s.emissive=a}else if(o.category==="toon"){s=new As;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 Os;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 Ps;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 JP(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 eO(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 ws(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 tO(n,r,e,t){let o=Cy(e,t);return eO(e,n,r,o)}function Uu(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 Iy(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 rO{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}},Hu=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 Hu(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=Iy(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=Iy(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 Cs);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=(Fu[t.type]??[]).map(l=>t[l]),i=(ju[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 bl;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 By=Hs(My());var Ey=new Map;function Ly(n){if(typeof n=="string")return n;let r=Ey.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Ey.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:Ly(r),format:"wav"},this.sound=new By.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 oO,Vector2 as Fo,Path as Dy,Shape as nO,ShapeUtils as iO,Color as sO}from"three";var Cl=class{constructor(){this.type="ShapePath";this.color=new sO;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new Dy,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:iO.isClockWise(y),identifier:d++,boundingBox:new oO(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 nO;g.curves=h.curves,f.filter(b=>b?.isHole&&b.for===h.identifier).forEach(b=>{if(b){let w=p[b.identifier],S=new Dy;S.curves=w.curves,g.holes.push(S)}}),m.push(g)}}),m}};var Ry,Wu=new Promise(n=>{Ry=n}),Gy=!1;async function Vy(){if(Gy)return;let n=await import("./opentype.js");Ry(n),Gy=!0}var Ns=class{async load(r,e,t=()=>{}){let{load:o}=await Wu;o(r,(i,s)=>{i||!s?t(i??"Something went wrong"):e(s)})}async parse(r){let{parse:e,Bidi:t}=await Wu;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 aO(n){return await(await fetch(n)).arrayBuffer()}var lO=new Ns;async function qu(n){let r,e,t=!1;if(n.url?(r=await aO(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer),r){let o=await lO.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}import{CubicBezierCurve as cO,LineCurve as uO,QuadraticBezierCurve as dO}from"three";function pO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Nl=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=qu(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=qu(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(pO(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 Cl,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=fO(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 fO(n){if(n.length){let r=n[0];if(r instanceof uO)return r.v1;if(r instanceof cO||r instanceof dO)return r.v0}}var $u=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()}},Is=class extends $u{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 zy={find(n){},markNeedsUpdateRendererDirty:function(){},markGeometryCacheDirty:function(){},addPendingExpandCloner:function(n){},addPendingUpdateCloner(n){},addPendingCommand(n){}};var Xu=class extends Pl{constructor(e){super();this.shared=e}create(e){return new bi(e,this.shared)}},jo=class{constructor(r,e={}){this.geometryCache=new Is(!0);this.geometryCache2=new Is(!1);this.imageHolderCache=new Xu(this);this.thisContext={scene:zy,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 Nl(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()}},Fy=new jo(Ua.emptyData());var ur=class extends lt{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),_d(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&&ga(this.material).forEach(e=>{e instanceof Ct&&(e instanceof Vo||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};import{BufferGeometry as mO}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 mO&&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 Ui.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ui.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&&ys(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&&$i(["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 yO(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 Ku(o[s],o[s+1],o[s+2]);r.has(l)?r.get(l)?.normals.push(c):r.set(l,{normals:[c],result:new Ku})}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 jy(i,3))}function gO(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 Ku;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 jy(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?gO(n):yO(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=[Yu.seededRandom(o),Yu.seededRandom(o+1e4),Yu.seededRandom(o+2e4)];for(let s=0;s<e.length;s++)t[s]=i[s%3];n.geometry.setAttribute("randomColor",new hO(t,3))}var SO;Kn.then(n=>{SO=n});var Ir=new xO,Ms=new bO;function Uy(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 vO;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 ky,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(Ms),this.hasNonUniformScale&&Ms.divide(this.scale);let i={width:Ms.x,height:Ms.y,depth:Ms.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 ky);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 wO,Vector3 as Ho}from"three";var Hy=-1,_O=1,Wy={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},qy={polygon_center:0,edge:1,vertex:2},Es=(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-Hy)*(e-t)/(_O-Hy)+t};function $y(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 TO=new Ho,Il=new Ho,PO=new Ho,OO=new Ho;function Pi(n,r){let e=PO.fromArray(n),t=OO.fromArray(r);Il.copy(t).sub(e);let o=Il.length();return Il.normalize().multiplyScalar(o*.5),TO.copy(e).add(Il).toArray()}var Ht=new wO,Ml=new Ho,El=new Ho,Uo=new Ho;function Xy(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Ml.fromArray(n.index.array,e*3),Ht.setFromAttributeAndIndices(n.attributes.position,Ml.x,Ml.y,Ml.z),Ht.getNormal(El),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(El).toArray()})}return r}function Yy(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(El),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:El.toArray()})}return r}var AO=4,CO=.5,Zu=n=>.5*(1-Math.cos(n*Math.PI)),Qu=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<AO;g++){let v=o+(i<<4)+(s<<8);a=Zu(l),u=Zu(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+=Zu(d)*(h-m),p+=m*f,f*=CO,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()}},Ky=Qu;import{Vector3 as NO,Matrix4 as IO,Ray as MO}from"three";var Zy=new NO,Qy=new IO,Jy=new MO;function eg(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)&&(Qy.copy(o).invert(),Jy.copy(e.ray).applyMatrix4(Qy),Jy.intersectBox(this.singleBBox,Zy))){let i=Zy.applyMatrix4(o),s=e.ray.origin.distanceTo(i);t.push({distance:s,point:i.clone(),object:this})}}};var xt=1e-4,Mr,ng,ig,sg,rg=new Rt,og=new Rt;Kn.then(n=>{Mr=n,ng=[Mr.get_face_center,Mr.get_edge_midpoint,Mr.get_vertex_position],ig=[Mr.get_face_normal,Mr.get_edge_normal,Mr.get_vertex_normal],sg=[Mr.face_count,Mr.edge_count,Mr.vertex_count]});var LO=new qo,BO=new qo,go=new Rt,Wo=new Rt,Ls=new Rt,ed=new Rt,DO=new Rt,GO=new Rt;var Yr=new Ky,Ci=class extends Bn(EO){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*tg.DEG2RAD,i=t.end*tg.DEG2RAD,s=o-i,l=new Ju(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=Wa((0,Ai.default)(d.seed)),p=Es(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 Ju(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=Wa((0,Ai.default)(i.seed)),c=Es(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=Es(i.strength,this.parameters.randomness),l=i.noiseType==="perlin";Yr.noiseSeed(i.seed);let c=Hm((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 Ju(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=Wa((0,Ai.default)(i.seed)),c=Es(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=$y(a);if(d.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}this.objectForSample.updateMatrixWorld();let m=new qa(this.objectForSample).build(),h=Wy[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(Ls,ed):(f.length&&(Ls.fromArray(f[g].pos),ed.fromArray(f[g].norm)),this.objectForSample instanceof ko&&Ls.applyMatrix4(LO.copy(this.objectForSample.matrixWorld).invert())),Ls.applyMatrix4(this.object.hiddenMatrix.clone().invert()),v.position.copy(Ls),go.fromArray(h);let x=t.align==="normal"?ed:this.object.getWorldDirection(GO),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=DO.crossVectors(go,x).normalize(),O=BO.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=qy[e],i=sg[o],s=ng[o],l=ig[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);rg.fromArray(u).applyMatrix4(t.matrixWorld),og.fromArray(p),c.push({pos:rg.toArray(),norm:og.toArray()})}return c}else return(this.objectForSample.geometry.index?Xy(this.objectForSample.geometry):Yy(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 TA,Scene as PA,Vector3 as OA,Fog as AA,Box3 as CA,MeshBasicMaterial as NA}from"three";import{Camera as XO,OrthographicCamera as ug,PerspectiveCamera as YO,Vector3 as pr,Object3D as dg,Quaternion as KO}from"three";import{Camera as kO,LineSegments as UO,BufferGeometry as HO,LineBasicMaterial as WO,Color as rd,Vector3 as qO,Float32BufferAttribute as lg}from"three";import{BoxGeometry as RO}from"three";var Er=n=>{var r;return r=class extends n{},r.geometryHelper=new RO(30,30,30),r};import{Ray as VO,Sphere as zO,Matrix4 as FO,Vector3 as Kr}from"three";var Ll=new VO,td=new zO,ag=new FO,Lr=(n,r,e,t,o=!1)=>{let i=r,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),td.copy(i.boundingSphere),td.applyMatrix4(s),e.ray.intersectsSphere(td)===!1||(ag.copy(s).invert(),Ll.copy(e.ray).applyMatrix4(ag),i.boundingBox!==null&&Ll.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,Ll,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),Ll.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 Bl=new qO,Wt=new kO,od=class extends UO{constructor(e){let t=new HO,o=new WO({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],l={},c=new rd(15711266),d=new rd(15711266),a=new rd(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 lg(i,3)),t.setAttribute("color",new lg(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){Bl.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],Bl.x,Bl.y,Bl.z)}}var Dl=class extends Er(od){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 cg,BoxGeometry as $O}from"three";var Gl;(r=>r.is=e=>"objectHelper"in e)(Gl||(Gl={}));var xo=(n,r)=>class extends Ka(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 cg&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof $O?(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 cg&&(i.visible=!1)}}};var nd=790,Ni=new pr,id=new pr,sd=new KO,ad=new pr,Bs=new pr,ld=new pr,Br=class extends xo(XO,Dl){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??nd,l=o/i,c=o>i?l:1,d=o>i?1:l;this.orthoCamera=new ug(-s*.5*c,s*.5*c,s*.5*(1/d),-s*.5*(1/d),-5e4,1e4)}else this.orthoCamera=new ug(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4);this.perspCamera=new YO(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(id),this.getWorldPosition(Ni),id.multiplyScalar(this.targetOffset),e.copy(Ni).add(id),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Ni),Ni.distanceTo(e)}updateUp(){this.getWorldQuaternion(sd),ad.set(0,0,1).applyQuaternion(sd),Bs.copy(dg.DEFAULT_UP),this.isUpVectorFlipped&&Bs.negate(),Bs.applyQuaternion(sd),ld.copy(dg.DEFAULT_UP).projectOnPlane(ad),this.angleOffsetFromUp=ld.angleTo(Bs),this.angleOffsetFromUp*=ld.cross(Bs).dot(ad)>=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??nd,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:nd},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 pg,Float32BufferAttribute as ZO,Matrix4 as QO}from"three";var fg=new QO;var qt=class extends ur{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new pg;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(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,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else s instanceof qt&&s.needsTransformForDownstream===!0?(or.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(fg.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),or.transformMeshSet(s.booleanMeshSetAddress,fg),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new ZO([],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 pg,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 JO}from"three";var mg;(r=>{function n(e){return Ce.is(e)&&e instanceof JO}r.is=n})(mg||(mg={}));var Ii=(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 Mi=n=>n instanceof lt,Ds=n=>n!==null&&n instanceof qt,hg=n=>n instanceof Br;var cd=n=>Gl.is(n);import{Group as tA}from"three";import{AxesHelper as eA}from"three";var vo=class extends Er(eA){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 Gs=class extends xo(tA,vo){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};import{DirectionalLight as sA,CameraHelper as yg}from"three";import{DirectionalLightHelper as rA}from"three";var Ei=class extends Er(rA){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,Ei.geometryHelper,e,t)}};import{PointLightHelper as oA}from"three";var Li=class extends Er(oA){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Lr(this.object,Li.geometryHelper,e,t)}};import{SpotLightHelper as nA,Vector3 as iA}from"three";var Rl=class extends Er(nA){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Lr(this.object,Rl.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Rl._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)}}},Rs=Rl;Rs._vector=new iA;function aA(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 Vl=class extends Ii(sA,Ei){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 yg(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 yg&&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&&aA(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 lA,Vector3 as zl,Box3 as cA,Box3Helper as gg,Color as uA}from"three";var Fl=class extends Ii(lA,Li){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 zl(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),l=new zl(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new cA(s,l),d=new gg(c,new uA(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 gg){let t=this.shadow.camera,o=new zl(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new zl(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 dA,CameraHelper as xg,MathUtils as pA,Vector3 as wg,Quaternion as fA}from"three";var vg=new wg,bg=new wg,Sg=new fA,jl=class extends Ii(dA,Rs){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=pA.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let s=new xg(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 xg&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),bg.setFromMatrixPosition(this.matrixWorld),Sg.setFromRotationMatrix(this.matrixWorld),vg.copy(this.up).applyQuaternion(Sg).negate().multiplyScalar(this.distance),this.target.position.copy(bg).add(vg),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 kl=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?vs(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Bi=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=fl;break;case"Ellipse":i=Hn;break;case"Polygon":i=pl;break;case"Star":i=ml;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?vs(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 mA}from"three";var Zr=class extends xo(mA,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),Ul(s),i+=1;else break;this.children.splice(0,i)}o=!0}this.component&&Tg(e,[this.uuid],t.overrides,this,this.component,this.component,0,o),this.oldComponent=this.component}}};function Ul(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)&&Ul(e)}}function _g(n,r,e,t){return n.component===r&&$i(n.identity,t)?n.overrideData===e?2:1:0}function Tg(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=_g(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=_g(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,Tg(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 hA(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 Bi(n,r,e):r.geometry.type==="VectorGeometry"?t=new kl(n,r,e):r.geometry.type==="BooleanGeometry"?t=new qt(n,r,e):t=new dt(n,r,e),t)}function Hl(n,r,e){return r.type==="Mesh"?hA(n,r,e):r.type==="Empty"?new Gs(n,r):r.type==="PointLight"?new Fl(n,r,e):r.type==="SpotLight"?new jl(n,r,e):r.type==="DirectionalLight"?new Vl(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 Gs(n,r))}Qt.createEntity=Hl;function yA(n,r,e){let t=Hl(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=yA;Qt.Cloner=Ci;function Pg(n,r,e,t){n.updateByOp(r,e,t,!1)}import{Matrix4 as xA,Ray as vA,Raycaster as bA}from"three";function Og(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 Ag(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 Cg(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++)Og(e,e.material[t])&&(r=!0);else Og(e,e.material)&&(r=!0)}),r}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}var SA=new bA,wA=new xA,_A=new vA;function ud(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let s=wA.copy(i.matrixWorld).invert(),l=_A.copy(r.ray).applyMatrix4(s),c=n.matrixWorld;l.applyMatrix4(c);let d=SA;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 Wl=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 IA=new NA;IA.wireframe=!0;var Ig=new OA,dd=class extends PA{constructor(e,t){super();this.data=e;this.backupFog=new AA(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 Wl;this.needsRecomputeInstances=!1;this.ambientLight=new TA(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.postprocessing=e.postprocessing,this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Ng(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Cg(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)=>tp(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(),Mi(i)&&Ds(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),Ds(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Mi(o)&&(o.freeBooleanPointer(),i instanceof qt&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Bi&&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()),Mi(o)&&(o.invalidateUpstreamBooleanData(),Ds(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{Pg(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=>{Ds(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=[...ga(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),Ul(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(dd.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)&&((Mi(s)||cd(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ud(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)&&((Mi(s)||cd(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,t),ud(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)es.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=Hl(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 CA;return o.setFromPoints(t),o.getCenter(Ig),Ig}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})})}},Di=dd;Di.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera",Di.PERSONAL_CAMERA_EXPORT_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCameraExport";import{DRACOLoader as MA}from"three/examples/jsm/loaders/DRACOLoader.js";var bo;function EA(){return bo||(bo=new MA,bo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),bo.decoderPending}async function LA(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 Mg(n,r){let[e,t]=ec(la.deserialize(new Uint8Array(n)));Fm(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 EA();for(let i of o){let s=await LA(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 w7}from"three";import{mergeBufferGeometries as P7}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Eg(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 Lg,ShaderLib as BA}from"three";function Bg(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(DA(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Lg,specularColor:new Lg});let o=0;e.onBeforeCompile=(i,s)=>{t&&t(i,s),i.uniforms=Object.assign({},BA.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 GA(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function DA(n){return n.getLayersOfType("transmission").length>0}function GA(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 Dg(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function Gg(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 RA}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Rg(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&&Eg(c),c}),s=RA(e.parameters.hideBase?i:[t instanceof lt?t.geometry:[],...i]);t instanceof lt&&(t.geometry=s),e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Fy})}),n}function Vg(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function zg(n){Object.values(n.shared.materials).forEach(r=>{pd(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?pd(e.material):"materials"in e&&e.materials.forEach(t=>{pd(t)})})}function pd(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 Ug=Hs(jg(),1),kg="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",fd=class extends zA{load(r,e,t,o=console.error){let i=new VA(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(kg+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(kg),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 Mg(r,zg);e.version&&(0,Ug.default)(e.version,"0.9.347")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([Uy(e)&&ay(),eg(e)&&Vy()].filter(Boolean));let t=new jo(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Di(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&&hg(s)&&Object.assign(s,{makeDefault:!0})}return o=Rg(o),o=Bg(o),o=Dg(o),o=Gg(o),o=Vg(o),o}};export{fd as default};