@splinetool/loader 0.9.496 → 0.9.498
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SplineLoader.cjs +345 -158
- package/build/SplineLoader.js +345 -158
- package/package.json +1 -1
package/build/SplineLoader.cjs
CHANGED
|
@@ -1,16 +1,30 @@
|
|
|
1
|
-
"use strict";var px=Object.create;var Us=Object.defineProperty;var fx=Object.getOwnPropertyDescriptor;var mx=Object.getOwnPropertyNames;var hx=Object.getPrototypeOf,yx=Object.prototype.hasOwnProperty;var kn=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports),up=(n,r)=>{for(var e in r)Us(n,e,{get:r[e],enumerable:!0})},pp=(n,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of mx(r))!yx.call(n,o)&&o!==e&&Us(n,o,{get:()=>r[o],enumerable:!(t=fx(r,o))||t.enumerable});return n};var ja=(n,r,e)=>(e=n!=null?px(hx(n)):{},pp(r||!n||!n.__esModule?Us(e,"default",{value:n,enumerable:!0}):e,n)),gx=n=>pp(Us({},"__esModule",{value:!0}),n);var Yh=kn((zd,$h)=>{(function(n,r){typeof zd=="object"?$h.exports=r():typeof define=="function"&&define.amd?define(r):n.Alea=r()})(zd,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,a=1;e.length==0&&(e=[+new Date]);var s=r();t=s(" "),o=s(" "),i=s(" ");for(var c=0;c<e.length;c++)t-=s(e[c]),t<0&&(t+=1),o-=s(e[c]),o<0&&(o+=1),i-=s(e[c]),i<0&&(i+=1);s=null;var u=function(){var l=2091639*t+a*23283064365386963e-26;return t=o,o=i,i=l-(a=l|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,a]},u.importState=function(l){t=+l[0]||0,o=+l[1]||0,i=+l[2]||0,a=+l[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 a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var ey=kn((Jl,Jh)=>{(function(n,r){typeof Jl=="object"&&typeof Jh<"u"?r(Jl):typeof define=="function"&&define.amd?define(["exports"],r):r((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Jl,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 a,s,c,u,l,d,p,f,m,h,y,g,x=r[0].length,S=r.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],T=[],_=e==="f"?S:x,v=h=p=0;v<S;v++)b[v]=new Array(_).fill(0);for(v=0;v<x;v++)T[v]=new Array(x).fill(0);var C,P=new Array(x).fill(0);for(v=0;v<S;v++)for(a=0;a<x;a++)b[v][a]=r[v][a];for(v=0;v<x;v++){for(w[v]=p,m=0,c=v+1,a=v;a<S;a++)m+=Math.pow(b[a][v],2);if(m<i)p=0;else for(f=(d=b[v][v])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[v][v]=d-p,a=c;a<x;a++){for(m=0,s=v;s<S;s++)m+=b[s][v]*b[s][a];for(d=m/f,s=v;s<S;s++)b[s][a]=b[s][a]+d*b[s][v]}for(P[v]=p,m=0,a=c;a<x;a++)m+=Math.pow(b[v][a],2);if(m<i)p=0;else{for(f=(d=b[v][v+1])*(p=d<0?Math.sqrt(m):-Math.sqrt(m))-m,b[v][v+1]=d-p,a=c;a<x;a++)w[a]=b[v][a]/f;for(a=c;a<S;a++){for(m=0,s=c;s<x;s++)m+=b[a][s]*b[v][s];for(s=c;s<x;s++)b[a][s]=b[a][s]+m*w[s]}}h<(y=Math.abs(P[v])+Math.abs(w[v]))&&(h=y)}if(t)for(v=x-1;0<=v;v--){if(p!==0){for(f=b[v][v+1]*p,a=c;a<x;a++)T[a][v]=b[v][a]/f;for(a=c;a<x;a++){for(m=0,s=c;s<x;s++)m+=b[v][s]*T[s][a];for(s=c;s<x;s++)T[s][a]=T[s][a]+m*T[s][v]}}for(a=c;a<x;a++)T[v][a]=0,T[a][v]=0;T[v][v]=1,p=w[v],c=v}if(e){if(e==="f")for(v=x;v<S;v++){for(a=x;a<S;a++)b[v][a]=0;b[v][v]=1}for(v=x-1;0<=v;v--){for(c=v+1,p=P[v],a=c;a<_;a++)b[v][a]=0;if(p!==0){for(f=b[v][v]*p,a=c;a<_;a++){for(m=0,s=c;s<S;s++)m+=b[s][v]*b[s][a];for(d=m/f,s=v;s<S;s++)b[s][a]=b[s][a]+d*b[s][v]}for(a=v;a<S;a++)b[a][v]=b[a][v]/p}else for(a=v;a<S;a++)b[a][v]=0;b[v][v]=b[v][v]+1}}for(o*=h,s=x-1;0<=s;s--)for(var N=0;N<50;N++){for(C=!1,c=s;0<=c;c--){if(Math.abs(w[c])<=o){C=!0;break}if(Math.abs(P[c-1])<=o)break}if(!C){for(l=0,u=c-(m=1),v=c;v<s+1&&(d=m*w[v],w[v]=l*w[v],!(Math.abs(d)<=o));v++)if(p=P[v],P[v]=Math.sqrt(d*d+p*p),l=p/(f=P[v]),m=-d/f,e)for(a=0;a<S;a++)y=b[a][u],g=b[a][v],b[a][u]=y*l+g*m,b[a][v]=-y*m+g*l}if(g=P[s],c===s){if(g<0&&(P[s]=-g,t))for(a=0;a<x;a++)T[a][s]=-T[a][s];break}for(h=P[c],d=(((y=P[s-1])-g)*(y+g)+((p=w[s-1])-(f=w[s]))*(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,v=c+(m=l=1);v<s+1;v++){if(p=w[v],y=P[v],f=m*p,p*=l,g=Math.sqrt(d*d+f*f),d=h*(l=d/(w[v-1]=g))+p*(m=f/g),p=-h*m+p*l,f=y*m,y*=l,t)for(a=0;a<x;a++)h=T[a][v-1],g=T[a][v],T[a][v-1]=h*l+g*m,T[a][v]=-h*m+g*l;if(g=Math.sqrt(d*d+f*f),d=(l=d/(P[v-1]=g))*p+(m=f/g)*y,h=-m*p+l*y,e)for(a=0;a<S;a++)y=b[a][v-1],g=b[a][v],b[a][v-1]=y*l+g*m,b[a][v]=-y*m+g*l}w[c]=0,w[s]=d,P[s]=h}for(v=0;v<x;v++)P[v]<o&&(P[v]=0);return{u:b,q:P,v:T}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var Iy=kn((nu,iu)=>{(function(n,r){typeof nu=="object"&&typeof iu<"u"?iu.exports=r():typeof define=="function"&&define.amd?define(r):(n=n||self,n.TinyQueue=r())})(nu,function(){"use strict";var n=function(t,o){if(t===void 0&&(t=[]),o===void 0&&(o=r),this.data=t,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var t=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),t}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(t){for(var o=this,i=o.data,a=o.compare,s=i[t];t>0;){var c=t-1>>1,u=i[c];if(a(s,u)>=0)break;i[t]=u,t=c}i[t]=s},n.prototype._down=function(t){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,c=i[t];t<s;){var u=(t<<1)+1,l=i[u],d=u+1;if(d<this.length&&a(i[d],l)<0&&(u=d,l=i[d]),a(l,c)>=0)break;i[t]=l,t=u}i[t]=c};function r(e,t){return e<t?-1:e>t?1:0}return n})});var Ey=kn((Sz,au)=>{"use strict";var nc=Iy();nc.default&&(nc=nc.default);au.exports=My;au.exports.default=My;function My(n,r,e){r=r||1;for(var t,o,i,a,s=0;s<n[0].length;s++){var c=n[0][s];(!s||c[0]<t)&&(t=c[0]),(!s||c[1]<o)&&(o=c[1]),(!s||c[0]>i)&&(i=c[0]),(!s||c[1]>a)&&(a=c[1])}var u=i-t,l=a-o,d=Math.min(u,l),p=d/2;if(d===0){var f=[t,o];return f.distance=0,f}for(var m=new nc(void 0,aP),h=t;h<i;h+=d)for(var y=o;y<a;y+=d)m.push(new Jo(h+p,y+p,p,n));var g=lP(n),x=new Jo(t+u/2,o+l/2,0,n);x.d>g.d&&(g=x);for(var S=m.length;m.length;){var w=m.pop();w.d>g.d&&(g=w,e&&console.log("found best %d after %d probes",Math.round(1e4*w.d)/1e4,S)),!(w.max-g.d<=r)&&(p=w.h/2,m.push(new Jo(w.x-p,w.y-p,p,n)),m.push(new Jo(w.x+p,w.y-p,p,n)),m.push(new Jo(w.x-p,w.y+p,p,n)),m.push(new Jo(w.x+p,w.y+p,p,n)),S+=4)}e&&(console.log("num probes: "+S),console.log("best distance: "+g.d));var b=[g.x,g.y];return b.distance=g.d,b}function aP(n,r){return r.max-n.max}function Jo(n,r,e,t){this.x=n,this.y=r,this.h=e,this.d=sP(n,r,t),this.max=this.d+this.h*Math.SQRT2}function sP(n,r,e){for(var t=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,c=a.length,u=c-1;s<c;u=s++){var l=a[s],d=a[u];l[1]>r!=d[1]>r&&n<(d[0]-l[0])*(r-l[1])/(d[1]-l[1])+l[0]&&(t=!t),o=Math.min(o,cP(n,r,l,d))}return o===0?0:(t?1:-1)*Math.sqrt(o)}function lP(n){for(var r=0,e=0,t=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var c=o[i],u=o[s],l=c[0]*u[1]-u[0]*c[1];e+=(c[0]+u[0])*l,t+=(c[1]+u[1])*l,r+=l*3}return r===0?new Jo(o[0][0],o[0][1],0,n):new Jo(e/r,t/r,0,n)}function cP(n,r,e,t){var o=e[0],i=e[1],a=t[0]-o,s=t[1]-i;if(a!==0||s!==0){var c=((n-o)*a+(r-i)*s)/(a*a+s*s);c>1?(o=t[0],i=t[1]):c>0&&(o+=a*c,i+=s*c)}return a=n-o,s=r-i,a*a+s*s}});var Ug=kn(Lc=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var l=this||r;return l._counter=1e3,l._html5AudioPool=[],l.html5PoolSize=10,l._codecs={},l._howls=[],l._muted=!1,l._volume=1,l._canPlayEvent="canplaythrough",l._navigator=typeof window<"u"&&window.navigator?window.navigator:null,l.masterGain=null,l.noAudio=!1,l.usingWebAudio=!0,l.autoSuspend=!0,l.ctx=null,l.autoUnlock=!0,l._setup(),l},volume:function(l){var d=this||r;if(l=parseFloat(l),d.ctx||u(),typeof l<"u"&&l>=0&&l<=1){if(d._volume=l,d._muted)return d;d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l,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*l)}return d}return d._volume},mute:function(l){var d=this||r;d.ctx||u(),d._muted=l,d.usingWebAudio&&d.masterGain.gain.setValueAtTime(l?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=l?!0:h._muted)}return d},stop:function(){for(var l=this||r,d=0;d<l._howls.length;d++)l._howls[d].stop();return l},unload:function(){for(var l=this||r,d=l._howls.length-1;d>=0;d--)l._howls[d].unload();return l.usingWebAudio&&l.ctx&&typeof l.ctx.close<"u"&&(l.ctx.close(),l.ctx=null,u()),l},codecs:function(l){return(this||r)._codecs[l.replace(/^x-/,"")]},_setup:function(){var l=this||r;if(l.state=l.ctx&&l.ctx.state||"suspended",l._autoSuspend(),!l.usingWebAudio)if(typeof Audio<"u")try{var d=new Audio;typeof d.oncanplaythrough>"u"&&(l._canPlayEvent="canplay")}catch{l.noAudio=!0}else l.noAudio=!0;try{var d=new Audio;d.muted&&(l.noAudio=!0)}catch{}return l.noAudio||l._setupCodecs(),l},_setupCodecs:function(){var l=this||r,d=null;try{d=typeof Audio<"u"?new Audio:null}catch{return l}if(!d||typeof d.canPlayType!="function")return l;var p=d.canPlayType("audio/mpeg;").replace(/^no$/,""),f=l._navigator?l._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\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return l._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:!!(!x&&d.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&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$/,"")},l},_unlockAudio:function(){var l=this||r;if(!(l._audioUnlocked||!l.ctx)){l._audioUnlocked=!1,l.autoUnlock=!1,!l._mobileUnloaded&&l.ctx.sampleRate!==44100&&(l._mobileUnloaded=!0,l.unload()),l._scratchBuffer=l.ctx.createBuffer(1,1,22050);var d=function(p){for(;l._html5AudioPool.length<l.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,l._releaseHtml5Audio(f)}catch{l.noAudio=!0;break}for(var m=0;m<l._howls.length;m++)if(!l._howls[m]._webAudio)for(var h=l._howls[m]._getSoundIds(),y=0;y<h.length;y++){var g=l._howls[m]._soundById(h[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}l._autoResume();var x=l.ctx.createBufferSource();x.buffer=l._scratchBuffer,x.connect(l.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof l.ctx.resume=="function"&&l.ctx.resume(),x.onended=function(){x.disconnect(0),l._audioUnlocked=!0,document.removeEventListener("touchstart",d,!0),document.removeEventListener("touchend",d,!0),document.removeEventListener("click",d,!0),document.removeEventListener("keydown",d,!0);for(var S=0;S<l._howls.length;S++)l._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",d,!0),document.addEventListener("touchend",d,!0),document.addEventListener("click",d,!0),document.addEventListener("keydown",d,!0),l}},_obtainHtml5Audio:function(){var l=this||r;if(l._html5AudioPool.length)return l._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(l){var d=this||r;return l._unlocked&&d._html5AudioPool.push(l),d},_autoSuspend:function(){var l=this;if(!(!l.autoSuspend||!l.ctx||typeof l.ctx.suspend>"u"||!r.usingWebAudio)){for(var d=0;d<l._howls.length;d++)if(l._howls[d]._webAudio){for(var p=0;p<l._howls[d]._sounds.length;p++)if(!l._howls[d]._sounds[p]._paused)return l}return l._suspendTimer&&clearTimeout(l._suspendTimer),l._suspendTimer=setTimeout(function(){if(!!l.autoSuspend){l._suspendTimer=null,l.state="suspending";var f=function(){l.state="suspended",l._resumeAfterSuspend&&(delete l._resumeAfterSuspend,l._autoResume())};l.ctx.suspend().then(f,f)}},3e4),l}},_autoResume:function(){var l=this;if(!(!l.ctx||typeof l.ctx.resume>"u"||!r.usingWebAudio))return l.state==="running"&&l.ctx.state!=="interrupted"&&l._suspendTimer?(clearTimeout(l._suspendTimer),l._suspendTimer=null):l.state==="suspended"||l.state==="running"&&l.ctx.state==="interrupted"?(l.ctx.resume().then(function(){l.state="running";for(var d=0;d<l._howls.length;d++)l._howls[d]._emit("resume")}),l._suspendTimer&&(clearTimeout(l._suspendTimer),l._suspendTimer=null)):l.state==="suspending"&&(l._resumeAfterSuspend=!0),l}};var r=new n,e=function(l){var d=this;if(!l.src||l.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}d.init(l)};e.prototype={init:function(l){var d=this;return r.ctx||u(),d._autoplay=l.autoplay||!1,d._format=typeof l.format!="string"?l.format:[l.format],d._html5=l.html5||!1,d._muted=l.mute||!1,d._loop=l.loop||!1,d._pool=l.pool||5,d._preload=typeof l.preload=="boolean"||l.preload==="metadata"?l.preload:!0,d._rate=l.rate||1,d._sprite=l.sprite||{},d._src=typeof l.src!="string"?l.src:[l.src],d._volume=l.volume!==void 0?l.volume:1,d._xhr={method:l.xhr&&l.xhr.method?l.xhr.method:"GET",headers:l.xhr&&l.xhr.headers?l.xhr.headers:null,withCredentials:l.xhr&&l.xhr.withCredentials?l.xhr.withCredentials:!1},d._duration=0,d._state="unloaded",d._sounds=[],d._endTimers={},d._queue=[],d._playLock=!1,d._onend=l.onend?[{fn:l.onend}]:[],d._onfade=l.onfade?[{fn:l.onfade}]:[],d._onload=l.onload?[{fn:l.onload}]:[],d._onloaderror=l.onloaderror?[{fn:l.onloaderror}]:[],d._onplayerror=l.onplayerror?[{fn:l.onplayerror}]:[],d._onpause=l.onpause?[{fn:l.onpause}]:[],d._onplay=l.onplay?[{fn:l.onplay}]:[],d._onstop=l.onstop?[{fn:l.onstop}]:[],d._onmute=l.onmute?[{fn:l.onmute}]:[],d._onvolume=l.onvolume?[{fn:l.onvolume}]:[],d._onrate=l.onrate?[{fn:l.onrate}]:[],d._onseek=l.onseek?[{fn:l.onseek}]:[],d._onunlock=l.onunlock?[{fn:l.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 l=this,d=null;if(r.noAudio){l._emit("loaderror",null,"No audio support.");return}typeof l._src=="string"&&(l._src=[l._src]);for(var p=0;p<l._src.length;p++){var f,m;if(l._format&&l._format[p])f=l._format[p];else{if(m=l._src[p],typeof m!="string"){l._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=l._src[p];break}}if(!d){l._emit("loaderror",null,"No codec support for selected audio sources.");return}return l._src=d,l._state="loading",window.location.protocol==="https:"&&d.slice(0,5)==="http:"&&(l._html5=!0,l._webAudio=!1),new t(l),l._webAudio&&i(l),l},play:function(l,d){var p=this,f=null;if(typeof l=="number")f=l,l=null;else{if(typeof l=="string"&&p._state==="loaded"&&!p._sprite[l])return null;if(typeof l>"u"&&(l="__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?l=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!l&&(l=y._sprite||"__default"),p._state!=="loaded"){y._sprite=l,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 x=Math.max(0,y._seek>0?y._seek:p._sprite[l][0]/1e3),S=Math.max(0,(p._sprite[l][0]+p._sprite[l][1])/1e3-x),w=S*1e3/Math.abs(y._rate),b=p._sprite[l][0]/1e3,T=(p._sprite[l][0]+p._sprite[l][1])/1e3;y._sprite=l,y._ended=!1;var _=function(){y._paused=!1,y._seek=x,y._start=b,y._stop=T,y._loop=!!(y._loop||p._sprite[l][2])};if(x>=T){p._ended(y);return}var v=y._node;if(p._webAudio){var C=function(){p._playLock=!1,_(),p._refreshBuffer(y);var A=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(A,r.ctx.currentTime),y._playStart=r.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,S):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,S),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(){v.currentTime=x,v.muted=y._muted||p._muted||r._muted||v.muted,v.volume=y._volume*r.volume(),v.playbackRate=y._rate;try{var A=v.play();if(A&&typeof Promise<"u"&&(A instanceof Promise||typeof A.then=="function")?(p._playLock=!0,_(),A.then(function(){p._playLock=!1,v._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)),v.playbackRate=y._rate,v.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}l!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(M){p._emit("playerror",y._id,M)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var N=window&&window.ejecta||!v.readyState&&r._navigator.isCocoonJS;if(v.readyState>=3||N)P();else{p._playLock=!0,p._state="loading";var O=function(){p._state="loaded",P(),v.removeEventListener(r._canPlayEvent,O,!1)};v.addEventListener(r._canPlayEvent,O,!1),p._clearTimer(y._id)}}return y._id},pause:function(l){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"pause",action:function(){d.pause(l)}}),d;for(var p=d._getSoundIds(l),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(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(l)}}),p;for(var f=p._getSoundIds(l),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(l,d){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(l,d)}}),p;if(typeof d>"u")if(typeof l=="boolean")p._muted=l;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=l,h._interval&&p._stopFade(h._id),p._webAudio&&h._node?h._node.gain.setValueAtTime(l?0:h._volume,r.ctx.currentTime):h._node&&(h._node.muted=r._muted?!0:l),p._emit("mute",h._id))}return p},volume:function(){var l=this,d=arguments,p,f;if(d.length===0)return l._volume;if(d.length===1||d.length===2&&typeof d[1]>"u"){var m=l._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(l._state!=="loaded"||l._playLock)return l._queue.push({event:"volume",action:function(){l.volume.apply(l,d)}}),l;typeof f>"u"&&(l._volume=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)y=l._soundById(f[g]),y&&(y._volume=p,d[2]||l._stopFade(f[g]),l._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,r.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*r.volume()),l._emit("volume",y._id))}else return y=f?l._soundById(f):l._sounds[0],y?y._volume:0;return l},fade:function(l,d,p,f){var m=this;if(m._state!=="loaded"||m._playLock)return m._queue.push({event:"fade",action:function(){m.fade(l,d,p,f)}}),m;l=Math.min(Math.max(0,parseFloat(l)),1),d=Math.min(Math.max(0,parseFloat(d)),1),p=parseFloat(p),m.volume(l,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 x=r.ctx.currentTime,S=x+p/1e3;g._volume=l,g._node.gain.setValueAtTime(l,x),g._node.gain.linearRampToValueAtTime(d,S)}m._startFadeInterval(g,l,d,p,h[y],typeof f>"u")}}return m},_startFadeInterval:function(l,d,p,f,m,h){var y=this,g=d,x=p-d,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),b=Date.now();l._fadeTo=p,l._interval=setInterval(function(){var T=(Date.now()-b)/f;b=Date.now(),g+=x*T,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?l._volume=g:y.volume(g,l._id,!0),h&&(y._volume=g),(p<d&&g<=p||p>d&&g>=p)&&(clearInterval(l._interval),l._interval=null,l._fadeTo=null,y.volume(p,l._id),y._emit("fade",l._id))},w)},_stopFade:function(l){var d=this,p=d._soundById(l);return p&&p._interval&&(d._webAudio&&p._node.gain.cancelScheduledValues(r.ctx.currentTime),clearInterval(p._interval),p._interval=null,d.volume(p._fadeTo,l),p._fadeTo=null,d._emit("fade",l)),d},loop:function(){var l=this,d=arguments,p,f,m;if(d.length===0)return l._loop;if(d.length===1)if(typeof d[0]=="boolean")p=d[0],l._loop=p;else return m=l._soundById(parseInt(d[0],10)),m?m._loop:!1;else d.length===2&&(p=d[0],f=parseInt(d[1],10));for(var h=l._getSoundIds(f),y=0;y<h.length;y++)m=l._soundById(h[y]),m&&(m._loop=p,l._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,l.playing(h[y])&&(l.pause(h[y],!0),l.play(h[y],!0)))));return l},rate:function(){var l=this,d=arguments,p,f;if(d.length===0)f=l._sounds[0]._id;else if(d.length===1){var m=l._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(l._state!=="loaded"||l._playLock)return l._queue.push({event:"rate",action:function(){l.rate.apply(l,d)}}),l;typeof f>"u"&&(l._rate=p),f=l._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=l._soundById(f[g]),y){l.playing(f[g])&&(y._rateSeek=l.seek(f[g]),y._playStart=l._webAudio?r.ctx.currentTime:y._playStart),y._rate=p,l._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,r.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=l.seek(f[g]),S=(l._sprite[y._sprite][0]+l._sprite[y._sprite][1])/1e3-x,w=S*1e3/Math.abs(y._rate);(l._endTimers[f[g]]||!y._paused)&&(l._clearTimer(f[g]),l._endTimers[f[g]]=setTimeout(l._ended.bind(l,y),w)),l._emit("rate",y._id)}}else return y=l._soundById(f),y?y._rate:l._rate;return l},seek:function(){var l=this,d=arguments,p,f;if(d.length===0)l._sounds.length&&(f=l._sounds[0]._id);else if(d.length===1){var m=l._getSoundIds(),h=m.indexOf(d[0]);h>=0?f=parseInt(d[0],10):l._sounds.length&&(f=l._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"&&(l._state!=="loaded"||l._playLock))return l._queue.push({event:"seek",action:function(){l.seek.apply(l,d)}}),l;var y=l._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=l.playing(f);g&&l.pause(f,!0),y._seek=p,y._ended=!1,l._clearTimer(f),!l._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&l.play(f,!0),l._emit("seek",f)};if(g&&!l._webAudio){var S=function(){l._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(l._webAudio){var w=l.playing(f)?r.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+w*Math.abs(y._rate))}else return y._node.currentTime;return l},playing:function(l){var d=this;if(typeof l=="number"){var p=d._soundById(l);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(l){var d=this,p=d._duration,f=d._soundById(l);return f&&(p=d._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var l=this,d=l._sounds,p=0;p<d.length;p++)d[p]._paused||l.stop(d[p]._id),l._webAudio||(l._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,l._clearTimer(d[p]._id);var f=r._howls.indexOf(l);f>=0&&r._howls.splice(f,1);var m=!0;for(p=0;p<r._howls.length;p++)if(r._howls[p]._src===l._src||l._src.indexOf(r._howls[p]._src)>=0){m=!1;break}return o&&m&&delete o[l._src],r.noAudio=!1,l._state="unloaded",l._sounds=[],l=null,null},on:function(l,d,p,f){var m=this,h=m["_on"+l];return typeof d=="function"&&h.push(f?{id:p,fn:d,once:f}:{id:p,fn:d}),m},off:function(l,d,p){var f=this,m=f["_on"+l],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(l)f["_on"+l]=[];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(l,d,p){var f=this;return f.on(l,d,p,1),f},_emit:function(l,d,p){for(var f=this,m=f["_on"+l],h=m.length-1;h>=0;h--)(!m[h].id||m[h].id===d||l==="load")&&(setTimeout(function(y){y.call(this,d,p)}.bind(f,m[h].fn),0),m[h].once&&f.off(l,m[h].fn,m[h].id));return f._loadQueue(l),f},_loadQueue:function(l){var d=this;if(d._queue.length>0){var p=d._queue[0];p.event===l&&(d._queue.shift(),d._loadQueue()),l||p.action()}return d},_ended:function(l){var d=this,p=l._sprite;if(!d._webAudio&&l._node&&!l._node.paused&&!l._node.ended&&l._node.currentTime<l._stop)return setTimeout(d._ended.bind(d,l),100),d;var f=!!(l._loop||d._sprite[p][2]);if(d._emit("end",l._id),!d._webAudio&&f&&d.stop(l._id,!0).play(l._id),d._webAudio&&f){d._emit("play",l._id),l._seek=l._start||0,l._rateSeek=0,l._playStart=r.ctx.currentTime;var m=(l._stop-l._start)*1e3/Math.abs(l._rate);d._endTimers[l._id]=setTimeout(d._ended.bind(d,l),m)}return d._webAudio&&!f&&(l._paused=!0,l._ended=!0,l._seek=l._start||0,l._rateSeek=0,d._clearTimer(l._id),d._cleanBuffer(l._node),r._autoSuspend()),!d._webAudio&&!f&&d.stop(l._id,!0),d},_clearTimer:function(l){var d=this;if(d._endTimers[l]){if(typeof d._endTimers[l]!="function")clearTimeout(d._endTimers[l]);else{var p=d._soundById(l);p&&p._node&&p._node.removeEventListener("ended",d._endTimers[l],!1)}delete d._endTimers[l]}return d},_soundById:function(l){for(var d=this,p=0;p<d._sounds.length;p++)if(l===d._sounds[p]._id)return d._sounds[p];return null},_inactiveSound:function(){var l=this;l._drain();for(var d=0;d<l._sounds.length;d++)if(l._sounds[d]._ended)return l._sounds[d].reset();return new t(l)},_drain:function(){var l=this,d=l._pool,p=0,f=0;if(!(l._sounds.length<d)){for(f=0;f<l._sounds.length;f++)l._sounds[f]._ended&&p++;for(f=l._sounds.length-1;f>=0;f--){if(p<=d)return;l._sounds[f]._ended&&(l._webAudio&&l._sounds[f]._node&&l._sounds[f]._node.disconnect(0),l._sounds.splice(f,1),p--)}}},_getSoundIds:function(l){var d=this;if(typeof l>"u"){for(var p=[],f=0;f<d._sounds.length;f++)p.push(d._sounds[f]._id);return p}else return[l]},_refreshBuffer:function(l){var d=this;return l._node.bufferSource=r.ctx.createBufferSource(),l._node.bufferSource.buffer=o[d._src],l._panner?l._node.bufferSource.connect(l._panner):l._node.bufferSource.connect(l._node),l._node.bufferSource.loop=l._loop,l._loop&&(l._node.bufferSource.loopStart=l._start||0,l._node.bufferSource.loopEnd=l._stop||0),l._node.bufferSource.playbackRate.setValueAtTime(l._rate,r.ctx.currentTime),d},_cleanBuffer:function(l){var d=this,p=r._navigator&&r._navigator.vendor.indexOf("Apple")>=0;if(r._scratchBuffer&&l.bufferSource&&(l.bufferSource.onended=null,l.bufferSource.disconnect(0),p))try{l.bufferSource.buffer=r._scratchBuffer}catch{}return l.bufferSource=null,d},_clearSound:function(l){var d=/MSIE |Trident\//.test(r._navigator&&r._navigator.userAgent);d||(l.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var t=function(l){this._parent=l,this.init()};t.prototype={init:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,d._sounds.push(l),l.create(),l},create:function(){var l=this,d=l._parent,p=r._muted||l._muted||l._parent._muted?0:l._volume;return d._webAudio?(l._node=typeof r.ctx.createGain>"u"?r.ctx.createGainNode():r.ctx.createGain(),l._node.gain.setValueAtTime(p,r.ctx.currentTime),l._node.paused=!0,l._node.connect(r.masterGain)):r.noAudio||(l._node=r._obtainHtml5Audio(),l._errorFn=l._errorListener.bind(l),l._node.addEventListener("error",l._errorFn,!1),l._loadFn=l._loadListener.bind(l),l._node.addEventListener(r._canPlayEvent,l._loadFn,!1),l._endFn=l._endListener.bind(l),l._node.addEventListener("ended",l._endFn,!1),l._node.src=d._src,l._node.preload=d._preload===!0?"auto":d._preload,l._node.volume=p*r.volume(),l._node.load()),l},reset:function(){var l=this,d=l._parent;return l._muted=d._muted,l._loop=d._loop,l._volume=d._volume,l._rate=d._rate,l._seek=0,l._rateSeek=0,l._paused=!0,l._ended=!0,l._sprite="__default",l._id=++r._counter,l},_errorListener:function(){var l=this;l._parent._emit("loaderror",l._id,l._node.error?l._node.error.code:0),l._node.removeEventListener("error",l._errorFn,!1)},_loadListener:function(){var l=this,d=l._parent;d._duration=Math.ceil(l._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()),l._node.removeEventListener(r._canPlayEvent,l._loadFn,!1)},_endListener:function(){var l=this,d=l._parent;d._duration===1/0&&(d._duration=Math.ceil(l._node.duration*10)/10,d._sprite.__default[1]===1/0&&(d._sprite.__default[1]=d._duration*1e3),d._ended(l)),l._node.removeEventListener("ended",l._endFn,!1)}};var o={},i=function(l){var d=l._src;if(o[d]){l._duration=o[d].duration,c(l);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);s(f.buffer,l)}else{var h=new XMLHttpRequest;h.open(l._xhr.method,d,!0),h.withCredentials=l._xhr.withCredentials,h.responseType="arraybuffer",l._xhr.headers&&Object.keys(l._xhr.headers).forEach(function(y){h.setRequestHeader(y,l._xhr.headers[y])}),h.onload=function(){var y=(h.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){l._emit("loaderror",null,"Failed loading audio file with status: "+h.status+".");return}s(h.response,l)},h.onerror=function(){l._webAudio&&(l._html5=!0,l._webAudio=!1,l._sounds=[],delete o[d],l.load())},a(h)}},a=function(l){try{l.send()}catch{l.onerror()}},s=function(l,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(l).then(f).catch(p):r.ctx.decodeAudioData(l,f,p)},c=function(l,d){d&&!l._duration&&(l._duration=d.duration),Object.keys(l._sprite).length===0&&(l._sprite={__default:[0,l._duration*1e3]}),l._state!=="loaded"&&(l._state="loaded",l._emit("load"),l._loadQueue())},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 l=/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(l&&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 Lc<"u"&&(Lc.Howler=r,Lc.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,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var c=s._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,a=typeof a!="number"?c[5]:a,typeof r=="number")s._orientation=[r,e,t,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(r,e,t,o,i,a);else return c;return s},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),a=0;a<i.length;a++){var s=t._soundById(i[a]);if(s)if(typeof r=="number")s._stereo=r,s._pos=[r,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&n(s,o),o==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(r,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(r,0,0):s._panner.pan.setValueAtTime(r,Howler.ctx.currentTime)),t._emit("stereo",s._id);else return s._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 a=i._getSoundIds(o),s=0;s<a.length;s++){var c=i._soundById(a[s]);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 a=i._getSoundIds(o),s=0;s<a.length;s++){var c=i._soundById(a[s]);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 a=r._getSoundIds(o),s=0;s<a.length;s++)if(i=r._soundById(a[s]),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 tx=kn((mZ,ex)=>{ex.exports=function(r,e){for(var t=r.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(t[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});var YO={};up(YO,{default:()=>td});module.exports=gx(YO);var rd=require("three");function fp(n){for(let r of Object.keys(n))n[r]===void 0&&delete n[r];return n}function Yt(n,r){return Object.setPrototypeOf(n,r),n}function Hs(n){return Array.isArray(n)?n:[n]}function mp(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 xx=typeof global=="object"&&global&&global.Object===Object&&global,Ws=xx;var vx=typeof self=="object"&&self&&self.Object===Object&&self,bx=Ws||vx||Function("return this")(),ft=bx;var Sx=ft.Symbol,St=Sx;var hp=Object.prototype,wx=hp.hasOwnProperty,Tx=hp.toString,Fa=St?St.toStringTag:void 0;function _x(n){var r=wx.call(n,Fa),e=n[Fa];try{n[Fa]=void 0;var t=!0}catch{}var o=Tx.call(n);return t&&(r?n[Fa]=e:delete n[Fa]),o}var yp=_x;var Px=Object.prototype,Ox=Px.toString;function Ax(n){return Ox.call(n)}var gp=Ax;var Cx="[object Null]",Nx="[object Undefined]",xp=St?St.toStringTag:void 0;function Ix(n){return n==null?n===void 0?Nx:Cx:xp&&xp in Object(n)?yp(n):gp(n)}var ir=Ix;function Mx(n){return n!=null&&typeof n=="object"}var Nt=Mx;var Ex="[object Symbol]";function Lx(n){return typeof n=="symbol"||Nt(n)&&ir(n)==Ex}var Un=Lx;function Dx(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 qs=Dx;var Bx=Array.isArray,rt=Bx;var Rx=1/0,vp=St?St.prototype:void 0,bp=vp?vp.toString:void 0;function Sp(n){if(typeof n=="string")return n;if(rt(n))return qs(n,Sp)+"";if(Un(n))return bp?bp.call(n):"";var r=n+"";return r=="0"&&1/n==-Rx?"-0":r}var wp=Sp;function Gx(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}var ar=Gx;function Vx(n){return n}var Tp=Vx;var zx="[object AsyncFunction]",jx="[object Function]",Fx="[object GeneratorFunction]",kx="[object Proxy]";function Ux(n){if(!ar(n))return!1;var r=ir(n);return r==jx||r==Fx||r==zx||r==kx}var $s=Ux;var Hx=ft["__core-js_shared__"],Ys=Hx;var _p=function(){var n=/[^.]+$/.exec(Ys&&Ys.keys&&Ys.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function Wx(n){return!!_p&&_p in n}var Pp=Wx;var qx=Function.prototype,$x=qx.toString;function Yx(n){if(n!=null){try{return $x.call(n)}catch{}try{return n+""}catch{}}return""}var po=Yx;var Xx=/[\\^$.*+?()[\]{}|]/g,Kx=/^\[object .+?Constructor\]$/,Zx=Function.prototype,Qx=Object.prototype,Jx=Zx.toString,ev=Qx.hasOwnProperty,tv=RegExp("^"+Jx.call(ev).replace(Xx,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function rv(n){if(!ar(n)||Pp(n))return!1;var r=$s(n)?tv:Kx;return r.test(po(n))}var Op=rv;function ov(n,r){return n?.[r]}var Ap=ov;function nv(n,r){var e=Ap(n,r);return Op(e)?e:void 0}var Xt=nv;var iv=Xt(ft,"WeakMap"),Xs=iv;var Cp=Object.create,av=function(){function n(){}return function(r){if(!ar(r))return{};if(Cp)return Cp(r);n.prototype=r;var e=new n;return n.prototype=void 0,e}}(),Np=av;function sv(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 Ip=sv;function lv(n,r){var e=-1,t=n.length;for(r||(r=Array(t));++e<t;)r[e]=n[e];return r}var Mp=lv;var cv=800,dv=16,uv=Date.now;function pv(n){var r=0,e=0;return function(){var t=uv(),o=dv-(t-e);if(e=t,o>0){if(++r>=cv)return arguments[0]}else r=0;return n.apply(void 0,arguments)}}var Ep=pv;function fv(n){return function(){return n}}var Lp=fv;var mv=function(){try{var n=Xt(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Hn=mv;var hv=Hn?function(n,r){return Hn(n,"toString",{configurable:!0,enumerable:!1,value:Lp(r),writable:!0})}:Tp,Dp=hv;var yv=Ep(Dp),Bp=yv;function gv(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}var Rp=gv;var xv=9007199254740991,vv=/^(?:0|[1-9]\d*)$/;function bv(n,r){var e=typeof n;return r=r??xv,!!r&&(e=="number"||e!="symbol"&&vv.test(n))&&n>-1&&n%1==0&&n<r}var Wn=bv;function Sv(n,r,e){r=="__proto__"&&Hn?Hn(n,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[r]=e}var Ks=Sv;function wv(n,r){return n===r||n!==n&&r!==r}var qn=wv;var Tv=Object.prototype,_v=Tv.hasOwnProperty;function Pv(n,r,e){var t=n[r];(!(_v.call(n,r)&&qn(t,e))||e===void 0&&!(r in n))&&Ks(n,r,e)}var $n=Pv;function Ov(n,r,e,t){var o=!e;e||(e={});for(var i=-1,a=r.length;++i<a;){var s=r[i],c=t?t(e[s],n[s],s,e,n):void 0;c===void 0&&(c=n[s]),o?Ks(e,s,c):$n(e,s,c)}return e}var jr=Ov;var Gp=Math.max;function Av(n,r,e){return r=Gp(r===void 0?n.length-1:r,0),function(){for(var t=arguments,o=-1,i=Gp(t.length-r,0),a=Array(i);++o<i;)a[o]=t[r+o];o=-1;for(var s=Array(r+1);++o<r;)s[o]=t[o];return s[r]=e(a),Ip(n,this,s)}}var Vp=Av;var Cv=9007199254740991;function Nv(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Cv}var Yn=Nv;function Iv(n){return n!=null&&Yn(n.length)&&!$s(n)}var Zs=Iv;var Mv=Object.prototype;function Ev(n){var r=n&&n.constructor,e=typeof r=="function"&&r.prototype||Mv;return n===e}var Xn=Ev;function Lv(n,r){for(var e=-1,t=Array(n);++e<n;)t[e]=r(e);return t}var zp=Lv;var Dv="[object Arguments]";function Bv(n){return Nt(n)&&ir(n)==Dv}var nd=Bv;var jp=Object.prototype,Rv=jp.hasOwnProperty,Gv=jp.propertyIsEnumerable,Vv=nd(function(){return arguments}())?nd:function(n){return Nt(n)&&Rv.call(n,"callee")&&!Gv.call(n,"callee")},Kn=Vv;function zv(){return!1}var Fp=zv;var Hp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,kp=Hp&&typeof module=="object"&&module&&!module.nodeType&&module,jv=kp&&kp.exports===Hp,Up=jv?ft.Buffer:void 0,Fv=Up?Up.isBuffer:void 0,kv=Fv||Fp,pn=kv;var Uv="[object Arguments]",Hv="[object Array]",Wv="[object Boolean]",qv="[object Date]",$v="[object Error]",Yv="[object Function]",Xv="[object Map]",Kv="[object Number]",Zv="[object Object]",Qv="[object RegExp]",Jv="[object Set]",eb="[object String]",tb="[object WeakMap]",rb="[object ArrayBuffer]",ob="[object DataView]",nb="[object Float32Array]",ib="[object Float64Array]",ab="[object Int8Array]",sb="[object Int16Array]",lb="[object Int32Array]",cb="[object Uint8Array]",db="[object Uint8ClampedArray]",ub="[object Uint16Array]",pb="[object Uint32Array]",Xe={};Xe[nb]=Xe[ib]=Xe[ab]=Xe[sb]=Xe[lb]=Xe[cb]=Xe[db]=Xe[ub]=Xe[pb]=!0;Xe[Uv]=Xe[Hv]=Xe[rb]=Xe[Wv]=Xe[ob]=Xe[qv]=Xe[$v]=Xe[Yv]=Xe[Xv]=Xe[Kv]=Xe[Zv]=Xe[Qv]=Xe[Jv]=Xe[eb]=Xe[tb]=!1;function fb(n){return Nt(n)&&Yn(n.length)&&!!Xe[ir(n)]}var Wp=fb;function mb(n){return function(r){return n(r)}}var Zn=mb;var qp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ka=qp&&typeof module=="object"&&module&&!module.nodeType&&module,hb=ka&&ka.exports===qp,id=hb&&Ws.process,yb=function(){try{var n=ka&&ka.require&&ka.require("util").types;return n||id&&id.binding&&id.binding("util")}catch{}}(),fo=yb;var $p=fo&&fo.isTypedArray,gb=$p?Zn($p):Wp,Qs=gb;var xb=Object.prototype,vb=xb.hasOwnProperty;function bb(n,r){var e=rt(n),t=!e&&Kn(n),o=!e&&!t&&pn(n),i=!e&&!t&&!o&&Qs(n),a=e||t||o||i,s=a?zp(n.length,String):[],c=s.length;for(var u in n)(r||vb.call(n,u))&&!(a&&(u=="length"||o&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Wn(u,c)))&&s.push(u);return s}var Js=bb;function Sb(n,r){return function(e){return n(r(e))}}var el=Sb;var wb=el(Object.keys,Object),Yp=wb;var Tb=Object.prototype,_b=Tb.hasOwnProperty;function Pb(n){if(!Xn(n))return Yp(n);var r=[];for(var e in Object(n))_b.call(n,e)&&e!="constructor"&&r.push(e);return r}var Xp=Pb;function Ob(n){return Zs(n)?Js(n):Xp(n)}var Qn=Ob;function Ab(n){var r=[];if(n!=null)for(var e in Object(n))r.push(e);return r}var Kp=Ab;var Cb=Object.prototype,Nb=Cb.hasOwnProperty;function Ib(n){if(!ar(n))return Kp(n);var r=Xn(n),e=[];for(var t in n)t=="constructor"&&(r||!Nb.call(n,t))||e.push(t);return e}var Zp=Ib;function Mb(n){return Zs(n)?Js(n,!0):Zp(n)}var Jn=Mb;var Eb=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Lb=/^\w*$/;function Db(n,r){if(rt(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Un(n)?!0:Lb.test(n)||!Eb.test(n)||r!=null&&n in Object(r)}var Qp=Db;var Bb=Xt(Object,"create"),mo=Bb;function Rb(){this.__data__=mo?mo(null):{},this.size=0}var Jp=Rb;function Gb(n){var r=this.has(n)&&delete this.__data__[n];return this.size-=r?1:0,r}var ef=Gb;var Vb="__lodash_hash_undefined__",zb=Object.prototype,jb=zb.hasOwnProperty;function Fb(n){var r=this.__data__;if(mo){var e=r[n];return e===Vb?void 0:e}return jb.call(r,n)?r[n]:void 0}var tf=Fb;var kb=Object.prototype,Ub=kb.hasOwnProperty;function Hb(n){var r=this.__data__;return mo?r[n]!==void 0:Ub.call(r,n)}var rf=Hb;var Wb="__lodash_hash_undefined__";function qb(n,r){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=mo&&r===void 0?Wb:r,this}var of=qb;function ei(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])}}ei.prototype.clear=Jp;ei.prototype.delete=ef;ei.prototype.get=tf;ei.prototype.has=rf;ei.prototype.set=of;var ad=ei;function $b(){this.__data__=[],this.size=0}var nf=$b;function Yb(n,r){for(var e=n.length;e--;)if(qn(n[e][0],r))return e;return-1}var Io=Yb;var Xb=Array.prototype,Kb=Xb.splice;function Zb(n){var r=this.__data__,e=Io(r,n);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():Kb.call(r,e,1),--this.size,!0}var af=Zb;function Qb(n){var r=this.__data__,e=Io(r,n);return e<0?void 0:r[e][1]}var sf=Qb;function Jb(n){return Io(this.__data__,n)>-1}var lf=Jb;function eS(n,r){var e=this.__data__,t=Io(e,n);return t<0?(++this.size,e.push([n,r])):e[t][1]=r,this}var cf=eS;function ti(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])}}ti.prototype.clear=nf;ti.prototype.delete=af;ti.prototype.get=sf;ti.prototype.has=lf;ti.prototype.set=cf;var Mo=ti;var tS=Xt(ft,"Map"),Eo=tS;function rS(){this.size=0,this.__data__={hash:new ad,map:new(Eo||Mo),string:new ad}}var df=rS;function oS(n){var r=typeof n;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?n!=="__proto__":n===null}var uf=oS;function nS(n,r){var e=n.__data__;return uf(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Lo=nS;function iS(n){var r=Lo(this,n).delete(n);return this.size-=r?1:0,r}var pf=iS;function aS(n){return Lo(this,n).get(n)}var ff=aS;function sS(n){return Lo(this,n).has(n)}var mf=sS;function lS(n,r){var e=Lo(this,n),t=e.size;return e.set(n,r),this.size+=e.size==t?0:1,this}var hf=lS;function ri(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])}}ri.prototype.clear=df;ri.prototype.delete=pf;ri.prototype.get=ff;ri.prototype.has=mf;ri.prototype.set=hf;var fn=ri;var cS="Expected a function";function sd(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new TypeError(cS);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 a=n.apply(this,t);return e.cache=i.set(o,a)||i,a};return e.cache=new(sd.Cache||fn),e}sd.Cache=fn;var yf=sd;var dS=500;function uS(n){var r=yf(n,function(t){return e.size===dS&&e.clear(),t}),e=r.cache;return r}var gf=uS;var pS=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,fS=/\\(\\)?/g,mS=gf(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(pS,function(e,t,o,i){r.push(o?i.replace(fS,"$1"):t||e)}),r}),xf=mS;function hS(n){return n==null?"":wp(n)}var vf=hS;function yS(n,r){return rt(n)?n:Qp(n,r)?[n]:xf(vf(n))}var pr=yS;var gS=1/0;function xS(n){if(typeof n=="string"||Un(n))return n;var r=n+"";return r=="0"&&1/n==-gS?"-0":r}var Do=xS;function vS(n,r){r=pr(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[Do(r[e++])];return e&&e==t?n:void 0}var tl=vS;function bS(n,r){for(var e=-1,t=r.length,o=n.length;++e<t;)n[o+e]=r[e];return n}var oi=bS;var bf=St?St.isConcatSpreadable:void 0;function SS(n){return rt(n)||Kn(n)||!!(bf&&n&&n[bf])}var Sf=SS;function wf(n,r,e,t,o){var i=-1,a=n.length;for(e||(e=Sf),o||(o=[]);++i<a;){var s=n[i];r>0&&e(s)?r>1?wf(s,r-1,e,t,o):oi(o,s):t||(o[o.length]=s)}return o}var Tf=wf;function wS(n){var r=n==null?0:n.length;return r?Tf(n,1):[]}var _f=wS;function TS(n){return Bp(Vp(n,void 0,_f),n+"")}var rl=TS;var _S=el(Object.getPrototypeOf,Object),ni=_S;var PS="[object Object]",OS=Function.prototype,AS=Object.prototype,Pf=OS.toString,CS=AS.hasOwnProperty,NS=Pf.call(Object);function IS(n){if(!Nt(n)||ir(n)!=PS)return!1;var r=ni(n);if(r===null)return!0;var e=CS.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Pf.call(e)==NS}var Of=IS;function MS(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 Af=MS;function ES(){this.__data__=new Mo,this.size=0}var Cf=ES;function LS(n){var r=this.__data__,e=r.delete(n);return this.size=r.size,e}var Nf=LS;function DS(n){return this.__data__.get(n)}var If=DS;function BS(n){return this.__data__.has(n)}var Mf=BS;var RS=200;function GS(n,r){var e=this.__data__;if(e instanceof Mo){var t=e.__data__;if(!Eo||t.length<RS-1)return t.push([n,r]),this.size=++e.size,this;e=this.__data__=new fn(t)}return e.set(n,r),this.size=e.size,this}var Ef=GS;function ii(n){var r=this.__data__=new Mo(n);this.size=r.size}ii.prototype.clear=Cf;ii.prototype.delete=Nf;ii.prototype.get=If;ii.prototype.has=Mf;ii.prototype.set=Ef;var ai=ii;function VS(n,r){return n&&jr(r,Qn(r),n)}var Lf=VS;function zS(n,r){return n&&jr(r,Jn(r),n)}var Df=zS;var Vf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Bf=Vf&&typeof module=="object"&&module&&!module.nodeType&&module,jS=Bf&&Bf.exports===Vf,Rf=jS?ft.Buffer:void 0,Gf=Rf?Rf.allocUnsafe:void 0;function FS(n,r){if(r)return n.slice();var e=n.length,t=Gf?Gf(e):new n.constructor(e);return n.copy(t),t}var zf=FS;function kS(n,r){for(var e=-1,t=n==null?0:n.length,o=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[o++]=a)}return i}var jf=kS;function US(){return[]}var ol=US;var HS=Object.prototype,WS=HS.propertyIsEnumerable,Ff=Object.getOwnPropertySymbols,qS=Ff?function(n){return n==null?[]:(n=Object(n),jf(Ff(n),function(r){return WS.call(n,r)}))}:ol,si=qS;function $S(n,r){return jr(n,si(n),r)}var kf=$S;var YS=Object.getOwnPropertySymbols,XS=YS?function(n){for(var r=[];n;)oi(r,si(n)),n=ni(n);return r}:ol,nl=XS;function KS(n,r){return jr(n,nl(n),r)}var Uf=KS;function ZS(n,r,e){var t=r(n);return rt(n)?t:oi(t,e(n))}var il=ZS;function QS(n){return il(n,Qn,si)}var Ua=QS;function JS(n){return il(n,Jn,nl)}var al=JS;var ew=Xt(ft,"DataView"),sl=ew;var tw=Xt(ft,"Promise"),ll=tw;var rw=Xt(ft,"Set"),cl=rw;var Hf="[object Map]",ow="[object Object]",Wf="[object Promise]",qf="[object Set]",$f="[object WeakMap]",Yf="[object DataView]",nw=po(sl),iw=po(Eo),aw=po(ll),sw=po(cl),lw=po(Xs),mn=ir;(sl&&mn(new sl(new ArrayBuffer(1)))!=Yf||Eo&&mn(new Eo)!=Hf||ll&&mn(ll.resolve())!=Wf||cl&&mn(new cl)!=qf||Xs&&mn(new Xs)!=$f)&&(mn=function(n){var r=ir(n),e=r==ow?n.constructor:void 0,t=e?po(e):"";if(t)switch(t){case nw:return Yf;case iw:return Hf;case aw:return Wf;case sw:return qf;case lw:return $f}return r});var ho=mn;var cw=Object.prototype,dw=cw.hasOwnProperty;function uw(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&dw.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Xf=uw;var pw=ft.Uint8Array,li=pw;function fw(n){var r=new n.constructor(n.byteLength);return new li(r).set(new li(n)),r}var ci=fw;function mw(n,r){var e=r?ci(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Kf=mw;var hw=/\w*$/;function yw(n){var r=new n.constructor(n.source,hw.exec(n));return r.lastIndex=n.lastIndex,r}var Zf=yw;var Qf=St?St.prototype:void 0,Jf=Qf?Qf.valueOf:void 0;function gw(n){return Jf?Object(Jf.call(n)):{}}var em=gw;function xw(n,r){var e=r?ci(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var tm=xw;var vw="[object Boolean]",bw="[object Date]",Sw="[object Map]",ww="[object Number]",Tw="[object RegExp]",_w="[object Set]",Pw="[object String]",Ow="[object Symbol]",Aw="[object ArrayBuffer]",Cw="[object DataView]",Nw="[object Float32Array]",Iw="[object Float64Array]",Mw="[object Int8Array]",Ew="[object Int16Array]",Lw="[object Int32Array]",Dw="[object Uint8Array]",Bw="[object Uint8ClampedArray]",Rw="[object Uint16Array]",Gw="[object Uint32Array]";function Vw(n,r,e){var t=n.constructor;switch(r){case Aw:return ci(n);case vw:case bw:return new t(+n);case Cw:return Kf(n,e);case Nw:case Iw:case Mw:case Ew:case Lw:case Dw:case Bw:case Rw:case Gw:return tm(n,e);case Sw:return new t;case ww:case Pw:return new t(n);case Tw:return Zf(n);case _w:return new t;case Ow:return em(n)}}var rm=Vw;function zw(n){return typeof n.constructor=="function"&&!Xn(n)?Np(ni(n)):{}}var om=zw;var jw="[object Map]";function Fw(n){return Nt(n)&&ho(n)==jw}var nm=Fw;var im=fo&&fo.isMap,kw=im?Zn(im):nm,am=kw;var Uw="[object Set]";function Hw(n){return Nt(n)&&ho(n)==Uw}var sm=Hw;var lm=fo&&fo.isSet,Ww=lm?Zn(lm):sm,cm=Ww;var qw=1,$w=2,Yw=4,dm="[object Arguments]",Xw="[object Array]",Kw="[object Boolean]",Zw="[object Date]",Qw="[object Error]",um="[object Function]",Jw="[object GeneratorFunction]",e1="[object Map]",t1="[object Number]",pm="[object Object]",r1="[object RegExp]",o1="[object Set]",n1="[object String]",i1="[object Symbol]",a1="[object WeakMap]",s1="[object ArrayBuffer]",l1="[object DataView]",c1="[object Float32Array]",d1="[object Float64Array]",u1="[object Int8Array]",p1="[object Int16Array]",f1="[object Int32Array]",m1="[object Uint8Array]",h1="[object Uint8ClampedArray]",y1="[object Uint16Array]",g1="[object Uint32Array]",qe={};qe[dm]=qe[Xw]=qe[s1]=qe[l1]=qe[Kw]=qe[Zw]=qe[c1]=qe[d1]=qe[u1]=qe[p1]=qe[f1]=qe[e1]=qe[t1]=qe[pm]=qe[r1]=qe[o1]=qe[n1]=qe[i1]=qe[m1]=qe[h1]=qe[y1]=qe[g1]=!0;qe[Qw]=qe[um]=qe[a1]=!1;function dl(n,r,e,t,o,i){var a,s=r&qw,c=r&$w,u=r&Yw;if(e&&(a=o?e(n,t,o,i):e(n)),a!==void 0)return a;if(!ar(n))return n;var l=rt(n);if(l){if(a=Xf(n),!s)return Mp(n,a)}else{var d=ho(n),p=d==um||d==Jw;if(pn(n))return zf(n,s);if(d==pm||d==dm||p&&!o){if(a=c||p?{}:om(n),!s)return c?Uf(n,Df(a,n)):kf(n,Lf(a,n))}else{if(!qe[d])return o?n:{};a=rm(n,d,s)}}i||(i=new ai);var f=i.get(n);if(f)return f;i.set(n,a),cm(n)?n.forEach(function(y){a.add(dl(y,r,e,y,n,i))}):am(n)&&n.forEach(function(y,g){a.set(g,dl(y,r,e,g,n,i))});var m=u?c?al:Ua:c?Jn:Qn,h=l?void 0:m(n);return Rp(h||n,function(y,g){h&&(g=y,y=n[g]),$n(a,g,dl(y,r,e,g,n,i))}),a}var ul=dl;var x1=1,v1=4;function b1(n){return ul(n,x1|v1)}var yo=b1;var S1="__lodash_hash_undefined__";function w1(n){return this.__data__.set(n,S1),this}var fm=w1;function T1(n){return this.__data__.has(n)}var mm=T1;function pl(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new fn;++r<e;)this.add(n[r])}pl.prototype.add=pl.prototype.push=fm;pl.prototype.has=mm;var hm=pl;function _1(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 ym=_1;function P1(n,r){return n.has(r)}var gm=P1;var O1=1,A1=2;function C1(n,r,e,t,o,i){var a=e&O1,s=n.length,c=r.length;if(s!=c&&!(a&&c>s))return!1;var u=i.get(n),l=i.get(r);if(u&&l)return u==r&&l==n;var d=-1,p=!0,f=e&A1?new hm:void 0;for(i.set(n,r),i.set(r,n);++d<s;){var m=n[d],h=r[d];if(t)var y=a?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(!ym(r,function(g,x){if(!gm(f,x)&&(m===g||o(m,g,e,t,i)))return f.push(x)})){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 fl=C1;function N1(n){var r=-1,e=Array(n.size);return n.forEach(function(t,o){e[++r]=[o,t]}),e}var xm=N1;function I1(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var vm=I1;var M1=1,E1=2,L1="[object Boolean]",D1="[object Date]",B1="[object Error]",R1="[object Map]",G1="[object Number]",V1="[object RegExp]",z1="[object Set]",j1="[object String]",F1="[object Symbol]",k1="[object ArrayBuffer]",U1="[object DataView]",bm=St?St.prototype:void 0,ld=bm?bm.valueOf:void 0;function H1(n,r,e,t,o,i,a){switch(e){case U1:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case k1:return!(n.byteLength!=r.byteLength||!i(new li(n),new li(r)));case L1:case D1:case G1:return qn(+n,+r);case B1:return n.name==r.name&&n.message==r.message;case V1:case j1:return n==r+"";case R1:var s=xm;case z1:var c=t&M1;if(s||(s=vm),n.size!=r.size&&!c)return!1;var u=a.get(n);if(u)return u==r;t|=E1,a.set(n,r);var l=fl(s(n),s(r),t,o,i,a);return a.delete(n),l;case F1:if(ld)return ld.call(n)==ld.call(r)}return!1}var Sm=H1;var W1=1,q1=Object.prototype,$1=q1.hasOwnProperty;function Y1(n,r,e,t,o,i){var a=e&W1,s=Ua(n),c=s.length,u=Ua(r),l=u.length;if(c!=l&&!a)return!1;for(var d=c;d--;){var p=s[d];if(!(a?p in r:$1.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=a;++d<c;){p=s[d];var g=n[p],x=r[p];if(t)var S=a?t(x,g,p,r,n,i):t(g,x,p,n,r,i);if(!(S===void 0?g===x||o(g,x,e,t,i):S)){h=!1;break}y||(y=p=="constructor")}if(h&&!y){var w=n.constructor,b=r.constructor;w!=b&&"constructor"in n&&"constructor"in r&&!(typeof w=="function"&&w instanceof w&&typeof b=="function"&&b instanceof b)&&(h=!1)}return i.delete(n),i.delete(r),h}var wm=Y1;var X1=1,Tm="[object Arguments]",_m="[object Array]",ml="[object Object]",K1=Object.prototype,Pm=K1.hasOwnProperty;function Z1(n,r,e,t,o,i){var a=rt(n),s=rt(r),c=a?_m:ho(n),u=s?_m:ho(r);c=c==Tm?ml:c,u=u==Tm?ml:u;var l=c==ml,d=u==ml,p=c==u;if(p&&pn(n)){if(!pn(r))return!1;a=!0,l=!1}if(p&&!l)return i||(i=new ai),a||Qs(n)?fl(n,r,e,t,o,i):Sm(n,r,c,e,t,o,i);if(!(e&X1)){var f=l&&Pm.call(n,"__wrapped__"),m=d&&Pm.call(r,"__wrapped__");if(f||m){var h=f?n.value():n,y=m?r.value():r;return i||(i=new ai),o(h,y,e,t,i)}}return p?(i||(i=new ai),wm(n,r,e,t,o,i)):!1}var Om=Z1;function Am(n,r,e,t,o){return n===r?!0:n==null||r==null||!Nt(n)&&!Nt(r)?n!==n&&r!==r:Om(n,r,e,t,Am,o)}var Cm=Am;function Q1(n,r){return n!=null&&r in Object(n)}var Nm=Q1;function J1(n,r,e){r=pr(r,n);for(var t=-1,o=r.length,i=!1;++t<o;){var a=Do(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=o?i:(o=n==null?0:n.length,!!o&&Yn(o)&&Wn(a,o)&&(rt(n)||Kn(n)))}var Im=J1;function eT(n,r){return n!=null&&Im(n,r,Nm)}var Mm=eT;function tT(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}var Em=tT;function rT(n,r){return r.length<2?n:tl(n,Af(r,0,-1))}var Lm=rT;function oT(n,r){return Cm(n,r)}var cd=oT;function nT(n,r){return r=pr(r,n),n=Lm(n,r),n==null||delete n[Do(Em(r))]}var Dm=nT;function iT(n){return Of(n)?void 0:n}var Bm=iT;var aT=1,sT=2,lT=4,cT=rl(function(n,r){var e={};if(n==null)return e;var t=!1;r=qs(r,function(i){return i=pr(i,n),t||(t=i.length>1),i}),jr(n,al(n),e),t&&(e=ul(e,aT|sT|lT,Bm));for(var o=r.length;o--;)Dm(e,r[o]);return e}),di=cT;function dT(n,r,e,t){if(!ar(n))return n;r=pr(r,n);for(var o=-1,i=r.length,a=i-1,s=n;s!=null&&++o<i;){var c=Do(r[o]),u=e;if(c==="__proto__"||c==="constructor"||c==="prototype")return n;if(o!=a){var l=s[c];u=t?t(l,c,s):void 0,u===void 0&&(u=ar(l)?l:Wn(r[o+1])?[]:{})}$n(s,c,u),s=s[c]}return n}var Rm=dT;function uT(n,r,e){for(var t=-1,o=r.length,i={};++t<o;){var a=r[t],s=tl(n,a);e(s,a)&&Rm(i,pr(a,n),s)}return i}var Gm=uT;function pT(n,r){return Gm(n,r,function(e,t){return Mm(n,t)})}var Vm=pT;var fT=rl(function(n,r){return n==null?{}:Vm(n,r)}),Tr=fT;var me=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,me.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:a}=r,s={...e,[i]:a};return Object.setPrototypeOf(s,me.prototype),{data:s,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,me.prototype),delete i[t],{data:i,actual:r,reverse:{type:1,id:t,data:o}}}}return null}};function Ha(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"&&Ha(t)}return Object.freeze(n)}function zm(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 ui=class extends Error{};function hl(n){let r={...n};return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function Fr(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 a=n+(r-n)*(i+.75+Math.random()*.5)*o;t.push(a)}return t}function pi(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 jm(){return typeof process<"u"}function Fm(n,r){for(let e of n)r(e.id,e.data)!==!0&&Fm(e.children,r)}function km(n,r){if(r(n.id,n.data)!==!0)for(let e of n.children)km(e,r)}var Qe=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Qe.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ha(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}rootAcestor(e){for(;e;){let t=this.parent(e);if(t)e=t;else return e}return e}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&&km(o,t)}}traverse(e){Fm(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),a=this.childrenArray(i),s=a.findIndex(l=>l.id===e);if(s<0)throw new Error("not expected");let c=a[s];return a=[...a],a[s]={...c,data:t},this.modifyArrayBy(i,a)}}modifyArrayBy(e,t){let o=e,i=t;for(;o!==null;){let s=i,c=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let u=i.findIndex(l=>l.id===c);if(u<0)throw new Error;i=[...i],i[u]={...i[u],children:s}}Object.setPrototypeOf(i,Qe.prototype);let a=i;return a.fillCaches(),a}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:a,children:s}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let c=t,u=this.childrenArray(c),l={fi:o,id:i,data:a,children:s};return u=[...u,l],u.sort((p,f)=>p.fi-f.fi),e.localIndex=u.indexOf(l),{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),a=i.findIndex(u=>u.id===t);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,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 ui("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,c=this.childrenArray(a),u=c.findIndex(f=>f.id===i);c=[...c];let l=c.splice(u,1)[0],d=this.modifyArrayBy(a,c);a=t,c=d.childrenArray(a);let p=l.fi;return l={...l,fi:o},c=[...c,l],c.sort((f,m)=>f.fi-m.fi),e.localIndex=c.indexOf(l),d=d.modifyArrayBy(a,c),{data:d,actual:e,reverse:{type:9,parent:s,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(a=>a.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(a=>a.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)=>zm(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),a=i;if(i!==void 0){for(;t;)o.splice(0,0,i.fi),t=this.parent(t),t!==null&&(i=this.get(t));return{...a,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 Fr(0,o,o);{let a=i[0].fi;return Fr(a-o,a,o)}}else{let a=this.get(t);if(a===void 0||this.parent(t)!==e)throw new Error("illegal args");let s=i.find(c=>c.fi>a.fi);if(s===void 0){let c=i[i.length-1].fi;return Fr(c,c+o,o)}else return Fr(a.fi,s.fi,o)}}};var fi;(r=>{function n(e,t){if(t.type!==0)return null;if(Array.isArray(e)){let o=t.props,i={},a=[...e],s=!1;if(o)for(let c of Object.keys(o)){let u=parseInt(c);if(isNaN(u))throw new Error("wrong index");i[c]=a[u],a[u]=o[c],s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}else{let o=t.props,i={},a={...e},s=!1;if(o)for(let c of Object.keys(o)){i[c]=a[c];let u=o[c];u===void 0?delete a[c]:a[c]=u,s=!0}return s?{data:a,actual:t,reverse:{type:0,props:i}}:null}}r.runOp=n})(fi||(fi={}));var ye=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ye.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Ha(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,a=i.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:t},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ye.prototype);let t=e;return jm()||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,a=this,s={fi:t,id:o,data:i};return a=[...a,s],a.sort((u,l)=>u.fi-l.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),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 a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:t,id:o}=e,i=this;i=[...i];let a=i.findIndex(l=>l.id===o);if(a===-1)return null;let s=i[a].fi,c={...i[a],fi:t};return i[a]=c,i.sort((l,d)=>l.fi-d.fi),e.localIndex=i.indexOf(c),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,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 Fr(0,t,t);{let i=o[0].fi;return Fr(i-t,i,t)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return Fr(s,s+t,t)}else return Fr(i.fi,a.fi,t)}}};function mi(n){return n&&typeof n=="object"&&n instanceof We}var We=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&&!mi(t))return null;o+=1}t=t?hl(t):new We;for(let[c,u]of Object.entries(r.props)){let l=t[c];i[c]=l,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=hl(c),delete t[r.path[o-1]])}else{let c=e[o-1];if(c){let u=hl(c);u[r.path[o-1]]=t,t=u}else{let u=new We;u[r.path[o-1]]=t,t=u}}o-=1}let a=Object.setPrototypeOf(t,We.prototype),s={...r,props:i};return{data:a,actual:r,reverse:s}}},kr;(t=>{function n(o,i){return Wa(o,i)??o}t.apply=n;function r(o,i){return ud(o,i)}t.merge=r;function e(o,i){let a=0,s=i.path,c=o;for(;a<s.length&&c!==void 0;){if(c=lt.zoomOnce(c,s[a]),c===void 0)return i;if(!mi(c))return;a+=1}if(c===void 0)return i;if(!!mi(c))if(i.type===0){let u={...i.props};for(let l of Object.keys(c))delete u[l];return{...i,props:u}}else if(i.type===1||i.type===4||i.type===7){let u=dd([i],c);return u?(console.log(u),u):i}else return i}t.filterOp=e})(kr||(kr={}));function dd(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Wa(o.data,r[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=dd(o.children,r);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return t}function mT(n,r){if(r===void 0)return;let e=!1,t=n.map(o=>{let i=o.id,a=Wa(o.data,r[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function Wa(n,r){if(!mi(r))return r;if(n instanceof Qe){let e=dd(n,r);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ye)return mT(n,r);if(Array.isArray(n)){let e=!1,t=n.map((o,i)=>{let a=Wa(o,r[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else{if(n instanceof We)return ud(n,r);if(n&&typeof n=="object"){let e={},t=!1;for(let[o,i]of Object.entries(n)){let a=Wa(i,r[o]);t=t||a!==void 0,a===void 0&&(a=i),e[o]=a}return t?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function ud(n,r){if(n===void 0)return r;if(r===void 0)return n;if(!mi(r))return r;if(!mi(n))return kr.apply(n,r);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(r))e.add(o);let t=new We;for(let o of e){let i=ud(n===void 0?void 0:n[o],r===void 0?void 0:r[o]);t[o]=i}return t}function Um(n,r){let e={cur:[],result:[],len:0};return n=qa(n,r,e)??n,[n,e.result]}function yl(n,r){return n===null?null:(n.cur[n.len]=r,n.len+=1,n)}function gl(n){n&&(n.len-=1)}function hT(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Hm(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let c=qa(i.data,r,yl(e,a));gl(e),t=t||c!==void 0,c===void 0&&(c=i.data);let u=Hm(i.children,r,e);return u!==void 0?t=!0:u=i.children,{...i,id:a,data:c,children:u}});if(t)return o}function yT(n,r,e){let t=!1,o=n.map(i=>{let a=i.id,s=r[a];if(s!==void 0&&typeof s=="string"&&(t=!0,a=s,e!==null))throw new Error("not supported");let c=qa(i.data,r,yl(e,a));return gl(e),t=t||c!==void 0,c===void 0&&(c=i.data),{...i,id:a,data:c}});if(t)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function qa(n,r,e){if(n instanceof Qe){let t=Hm(n,r,e);return t!==void 0&&Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else{if(n instanceof ye)return yT(n,r,e);if(Array.isArray(n)){let t=!1,o=n.map((i,a)=>{let s=qa(i,r,yl(e,a));return gl(e),t=t||s!==void 0,s===void 0&&(s=i),s});return t?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!pi(n)){let t={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=r[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let c=qa(a,r,yl(e,i));gl(e),o=o||c!==void 0,c===void 0&&(c=a),t[i]=c}else t[i]=a;return o?(Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t):void 0}else if(typeof n=="string"){let t=r[n];return t!==void 0&&hT(e),t}else return}}var xl;(r=>{function n(e,t){let o=lt.zoom(t,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}r.replaceProps=n})(xl||(xl={}));var ct;(s=>{function n(c,u){return{...c,path:c.path.slice(u)}}s.drop=n;function r(c,u){return e(c,u)?.data??c}s.applySimple=r;function e(c,u){let l=u.path;for(var d=[];;){let p;if(c instanceof We&&u.type===0&&(p=c.runOp({...u,path:l.slice(d.length)}),p===null&&(p=void 0)),p===void 0&&d.length===l.length&&(c instanceof Qe||c instanceof ye||c instanceof me?p=c.runOp(u):p=fi.runOp(c,u)),p!==void 0)if(p!==null){let h=p.data;for(let y=d.length-1;y>=0;y--){let g=l[y],x=d[y];if(x instanceof Qe){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof ye){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof me){if(typeof g=="number")throw new Error("illegal arg");h=x.modifyById(g,h)}else if(x instanceof We){let S={...x,[g]:h};h=Object.setPrototypeOf(S,We.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=h;h=[...x],h[g]=S}else h={...x,[g]:h};else return null}return{data:h,actual:{...p.actual,path:l},reverse:{...p.reverse,path:l}}}else return null;let f=l[d.length],m;if(c instanceof Qe){if(typeof f=="number")throw new Error("");m=c.get(f)?.data}else if(c instanceof ye){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}}s.apply=e;function t(c,u){for(let l=0;l<c.length&&l<u.length;l++)if(c[l]!==u[l])return!0;return!1}s.pathDisjoint=t;function o(c,u){if(c.length!==u.length)return!1;for(let l=0;l<c.length;l++)if(c[l]!==u[l])return!1;return!0}s.pathEq=o;function i(c,u){return t(c.path,u.path)}s.commutative=i;function a(c,u){return c.type===0&&u.type===0&&o(c.path,u.path)?Object.keys(c.props).every(l=>u.props[l]!==void 0):!1}s.subsumed=a})(ct||(ct={}));var $a;(c=>{function n(){return[]}c.empty=n;function r(u,l){let d=[];for(let p of u){let[f,...m]=p.path;f===l&&d.push({...p,path:m})}return d}c.removePrefix=r;function e(u,l){return u.map(d=>({...d,path:[l,...d.path]}))}c.addPrefix=e;function t(u,l){return[...u,...l]}c.concat=t;function o(u,l){return[...u.filter(p=>!l.some(f=>ct.subsumed(p,f))),...l]}c.compress=o;function i(u,l){return u.every(d=>l.every(p=>ct.commutative(d,p)))}c.commutative=i;function a(u,l){for(let d of l){let p=s(u,d);p!==null&&(u=p.data)}return u}c.applyAll=a;function s(u,l){var d=u;let p=[],f=[];for(let m of l)try{if(m.type===3||m.type===5&&m.path[m.path.length-1]==="variables"){let h,y,g;if(m.type===3?(h=lt.zoom(d,[...m.path,m.id]),g=ct.apply(d,{...m,type:2})):(h=lt.zoom(d,[...m.path,m.id,"value"]),g=ct.apply(d,m)),g!==null){d=g.data;let[x,S]=Um(d,{[m.id]:h});d=x;for(let w=0;w<S.length;w++){let b=S[w],T=b.pop();if(typeof T=="number"){let _=[T];for(let C=w+1;C<S.length;C++){let P=S[C],N=P[P.length-1];if(typeof N=="number"&<.equal(b,P.slice(0,P.length-1)))_.push(N),S.splice(C,1);else break}let v=lt.zoom(d,b);y=v.map((C,P)=>_.includes(P)?m.id:C),h=v,T=b.pop()}else{if(T==="alphaOverride"||T==="alpha"){h/=100;let _=h,v=lt.zoom(d,b.slice(0,b.length-2)),C=v.layers.map(P=>P.id===b[b.length-1]?{...P,data:{...P.data,[T]:_}}:P);Object.setPrototypeOf(C,Object.getPrototypeOf(v.layers)),v.layers=C}y=m.id}p.push({type:0,path:b,props:{[T]:h}}),f.push({type:0,path:b,props:{[T]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let h=ct.apply(d,m);h!==null&&(p.push(h.actual),d=h.data,f.push(h.reverse))}}catch(h){if(h instanceof ui)return null;throw h}return{data:d,actual:p,reverse:f.reverse()}}c.apply=s})($a||($a={}));var Wm=Symbol(),gT=Symbol(),bl=Symbol(),hn=class{reportOp(r,e,t=[]){let o=this;if(e===null)return;o._current=e.data;let i=t;for(;!(o instanceof vl);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[bl];t&&t(),delete this._children[r]}}}},fd=class extends hn{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,fi.runOp(this._current,r),r.path)}},md=class extends hn{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,me.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},qm={get(n,r){if(r===bl)return()=>{n._parent=null};if(r===Wm)return n._current;if(r===gT)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],a=Sl(n,r,i);return a!==i?(t===void 0&&(t={},n._children=t),t[r]=a,a):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]}}},xT={...qm,set(n,r,e){let t={type:0,props:{[r]:Je(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}},vT={...qm,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}},hi=class extends hn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[bl]=()=>{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,a=Sl(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):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 a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.add(r,o[i],a.id,a.data,a.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let i=0;i<t.length;i++){let a=t[i];this.move(r,o[i],a)}}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)}},yi=class extends hn{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[bl]=()=>{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,a=Sl(this,r,i);return a!==i?(t===void 0&&(t={},this._children=t),t[r]=a,a):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 pd(n,r,e){if(n.length>0){let t=n[n.length-1];if(t.type===0&&r.type===0&<.equal(t.path,e)){Object.assign(t.props,r.props);return}}n.push({...r,path:e})}var vl=class extends hn{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){pd(this.ts,e,r),pd(this.actual,t,r),pd(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Sl(n,r,e){return e instanceof Qe?new hi(n,r,e):e instanceof ye?new yi(n,r,e):e instanceof me?new Proxy(new md(n,r,e),vT):e!==null&&typeof e=="object"?pi(e)?e:new Proxy(new fd(n,r,e),xT):e}function hd(n){let r=new vl(n);return[Sl(r,"",n),r]}function Bo(n,r){let[e,t]=hd(n);return r(e),t.result()}function Je(n){return n instanceof hi||n instanceof yi?n._current:n!==null&&typeof n=="object"?n[Wm]:n}var lt;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function r(i,a,s){let c=t(s,i);if(c!==void 0&&typeof c=="object"&&c!==null){let u={...a};return Object.keys(c).forEach(l=>{delete u[l]}),u}else return a}o.removeOverridden=r;function e(i,a){if((i instanceof Qe||i instanceof hi)&&typeof a=="string")return i.data(a);if((i instanceof ye||i instanceof yi)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function t(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=t})(lt||(lt={}));function $m(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 Gt(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 wl=class{},Ya=class extends wl{constructor(e){super();this.id=e}},Xa=class extends wl{constructor(e){super();this.data=e}};var gd;try{gd=new TextDecoder}catch{}var re,Go,I=0;var th=[],xd=th,vd=0,Kt={},Be,Ro,fr=0,Ur=0,sr,go,jt=[],Ve,Ym={useRecords:!1,mapsAsObjects:!0},Ka=class{},Sd=new Ka;Sd.name="MessagePack 0xC1";var gi=!1,Hr=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(re)return ah(()=>(_l(),this?this.unpack(r,e):Hr.prototype.unpack.call(Ym,r,e)));Go=e>-1?e:r.length,I=0,vd=0,Ur=0,Ro=null,xd=th,sr=null,re=r;try{Ve=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw re=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 Hr){if(Kt=this,this.structures)return Be=this.structures,Tl();(!Be||Be.length>0)&&(Be=[])}else Kt=Ym,(!Be||Be.length>0)&&(Be=[]);return Tl()}unpackMultiple(r,e){let t,o=0;try{gi=!0;let i=r.length,a=this?this.unpack(r,i):Al.unpack(r,i);if(e){for(e(a);I<i;)if(o=I,e(Tl())===!1)return}else{for(t=[a];I<i;)o=I,t.push(Tl());return t}}catch(i){throw i.lastPosition=o,i.values=t,i}finally{gi=!1,_l()}}_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 Tl(){try{if(!Kt.trusted&&!gi){let r=Be.sharedLength||0;r<Be.length&&(Be.length=r)}let n=ot();if(I==Go)Be.restoreStructures&&Xm(),Be=null,re=null,go&&(go=null);else if(I>Go){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!gi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Be.restoreStructures&&Xm(),_l(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Xm(){for(let n in Be.restoreStructures)Be[n]=Be.restoreStructures[n];Be.restoreStructures=null}function ot(){let n=re[I++];if(n<160)if(n<128){if(n<64)return n;{let r=Be[n&63]||Kt.getStructures&&rh()[n&63];return r?(r.read||(r.read=wd(r,n&63)),r.read()):n}}else if(n<144)if(n-=128,Kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[nh()]=ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(ot(),ot());return r}else{n-=144;let r=new Array(n);for(let e=0;e<n;e++)r[e]=ot();return r}else if(n<192){let r=n-160;if(Ur>=I)return Ro.slice(I-fr,(I+=r)-fr);if(Ur==0&&Go<140){let e=r<16?Td(r):oh(r);if(e!=null)return e}return bd(r)}else{let r;switch(n){case 192:return null;case 193:return sr?(r=ot(),r>0?sr[1].slice(sr.position1,sr.position1+=r):sr[0].slice(sr.position0,sr.position0-=r)):Sd;case 194:return!1;case 195:return!0;case 196:return yd(re[I++]);case 197:return r=Ve.getUint16(I),I+=2,yd(r);case 198:return r=Ve.getUint32(I),I+=4,yd(r);case 199:return yn(re[I++]);case 200:return r=Ve.getUint16(I),I+=2,yn(r);case 201:return r=Ve.getUint32(I),I+=4,yn(r);case 202:if(r=Ve.getFloat32(I),Kt.useFloat32>2){let e=Ol[(re[I]&127)<<1|re[I+1]>>7];return I+=4,(e*r+(r>0?.5:-.5)>>0)/e}return I+=4,r;case 203:return r=Ve.getFloat64(I),I+=8,r;case 204:return re[I++];case 205:return r=Ve.getUint16(I),I+=2,r;case 206:return r=Ve.getUint32(I),I+=4,r;case 207:return Kt.int64AsNumber?(r=Ve.getUint32(I)*4294967296,r+=Ve.getUint32(I+4)):r=Ve.getBigUint64(I),I+=8,r;case 208:return Ve.getInt8(I++);case 209:return r=Ve.getInt16(I),I+=2,r;case 210:return r=Ve.getInt32(I),I+=4,r;case 211:return Kt.int64AsNumber?(r=Ve.getInt32(I)*4294967296,r+=Ve.getUint32(I+4)):r=Ve.getBigInt64(I),I+=8,r;case 212:if(r=re[I++],r==114)return eh(re[I++]&63);{let e=jt[r];if(e)return e.read?(I++,e.read(ot())):e.noBuffer?(I++,e()):e(re.subarray(I,++I));throw new Error("Unknown extension "+r)}case 213:return r=re[I],r==114?(I++,eh(re[I++]&63,re[I++])):yn(2);case 214:return yn(4);case 215:return yn(8);case 216:return yn(16);case 217:return r=re[I++],Ur>=I?Ro.slice(I-fr,(I+=r)-fr):ST(r);case 218:return r=Ve.getUint16(I),I+=2,Ur>=I?Ro.slice(I-fr,(I+=r)-fr):wT(r);case 219:return r=Ve.getUint32(I),I+=4,Ur>=I?Ro.slice(I-fr,(I+=r)-fr):TT(r);case 220:return r=Ve.getUint16(I),I+=2,Zm(r);case 221:return r=Ve.getUint32(I),I+=4,Zm(r);case 222:return r=Ve.getUint16(I),I+=2,Qm(r);case 223:return r=Ve.getUint32(I),I+=4,Qm(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 bT=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function wd(n,r){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>bT.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(ot);return n.highByte===0&&(n.read=Km(r,n.read)),o()}let t={};for(let o=0,i=n.length;o<i;o++){let a=n[o];t[a]=ot()}return t}return e.count=0,n.highByte===0?Km(r,e):e}var Km=(n,r)=>function(){let e=re[I++];if(e===0)return r();let t=n<32?-(n+(e<<5)):n+(e<<5),o=Be[t]||rh()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=wd(o,n)),o.read()};function rh(){let n=ah(()=>(re=null,Kt.getStructures()));return Be=Kt._mergeStructures(n,Be)}var bd=Pl,ST=Pl,wT=Pl,TT=Pl;function Pl(n){let r;if(n<16&&(r=Td(n)))return r;if(n>64&&gd)return gd.decode(re.subarray(I,I+=n));let e=I+n,t=[];for(r="";I<e;){let o=re[I++];if((o&128)===0)t.push(o);else if((o&224)===192){let i=re[I++]&63;t.push((o&31)<<6|i)}else if((o&240)===224){let i=re[I++]&63,a=re[I++]&63;t.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=re[I++]&63,a=re[I++]&63,s=re[I++]&63,c=(o&7)<<18|i<<12|a<<6|s;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+=wt.apply(String,t),t.length=0)}return t.length>0&&(r+=wt.apply(String,t)),r}function Zm(n){let r=new Array(n);for(let e=0;e<n;e++)r[e]=ot();return r}function Qm(n){if(Kt.mapsAsObjects){let r={};for(let e=0;e<n;e++)r[nh()]=ot();return r}else{let r=new Map;for(let e=0;e<n;e++)r.set(ot(),ot());return r}}var wt=String.fromCharCode;function oh(n){let r=I,e=new Array(n);for(let t=0;t<n;t++){let o=re[I++];if((o&128)>0){I=r;return}e[t]=o}return wt.apply(String,e)}function Td(n){if(n<4)if(n<2){if(n===0)return"";{let r=re[I++];if((r&128)>1){I-=1;return}return wt(r)}}else{let r=re[I++],e=re[I++];if((r&128)>0||(e&128)>0){I-=2;return}if(n<3)return wt(r,e);let t=re[I++];if((t&128)>0){I-=3;return}return wt(r,e,t)}else{let r=re[I++],e=re[I++],t=re[I++],o=re[I++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){I-=4;return}if(n<6){if(n===4)return wt(r,e,t,o);{let i=re[I++];if((i&128)>0){I-=5;return}return wt(r,e,t,o,i)}}else if(n<8){let i=re[I++],a=re[I++];if((i&128)>0||(a&128)>0){I-=6;return}if(n<7)return wt(r,e,t,o,i,a);let s=re[I++];if((s&128)>0){I-=7;return}return wt(r,e,t,o,i,a,s)}else{let i=re[I++],a=re[I++],s=re[I++],c=re[I++];if((i&128)>0||(a&128)>0||(s&128)>0||(c&128)>0){I-=8;return}if(n<10){if(n===8)return wt(r,e,t,o,i,a,s,c);{let u=re[I++];if((u&128)>0){I-=9;return}return wt(r,e,t,o,i,a,s,c,u)}}else if(n<12){let u=re[I++],l=re[I++];if((u&128)>0||(l&128)>0){I-=10;return}if(n<11)return wt(r,e,t,o,i,a,s,c,u,l);let d=re[I++];if((d&128)>0){I-=11;return}return wt(r,e,t,o,i,a,s,c,u,l,d)}else{let u=re[I++],l=re[I++],d=re[I++],p=re[I++];if((u&128)>0||(l&128)>0||(d&128)>0||(p&128)>0){I-=12;return}if(n<14){if(n===12)return wt(r,e,t,o,i,a,s,c,u,l,d,p);{let f=re[I++];if((f&128)>0){I-=13;return}return wt(r,e,t,o,i,a,s,c,u,l,d,p,f)}}else{let f=re[I++],m=re[I++];if((f&128)>0||(m&128)>0){I-=14;return}if(n<15)return wt(r,e,t,o,i,a,s,c,u,l,d,p,f,m);let h=re[I++];if((h&128)>0){I-=15;return}return wt(r,e,t,o,i,a,s,c,u,l,d,p,f,m,h)}}}}}function yd(n){return Kt.copyBuffers?Uint8Array.prototype.slice.call(re,I,I+=n):re.subarray(I,I+=n)}function yn(n){let r=re[I++];if(jt[r])return jt[r](re.subarray(I,I+=n));throw new Error("Unknown extension type "+r)}var Jm=new Array(4096);function nh(){let n=re[I++];if(n>=160&&n<192){if(n=n-160,Ur>=I)return Ro.slice(I-fr,(I+=n)-fr);if(!(Ur==0&&Go<180))return bd(n)}else return I--,ot();let r=(n<<5^(n>1?Ve.getUint16(I):n>0?re[I]:0))&4095,e=Jm[r],t=I,o=I+n-3,i,a=0;if(e&&e.bytes==n){for(;t<o;){if(i=Ve.getUint32(t),i!=e[a++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(i=re[t++],i!=e[a++]){t=1879048192;break}if(t===o)return I=t,e.string;o-=3,t=I}for(e=[],Jm[r]=e,e.bytes=n;t<o;)i=Ve.getUint32(t),e.push(i),t+=4;for(o+=3;t<o;)i=re[t++],e.push(i);let s=n<16?Td(n):oh(n);return s!=null?e.string=s:e.string=bd(n)}var eh=(n,r)=>{var e=ot();let t=n;r!==void 0&&(n=n<32?-((r<<5)+n):(r<<5)+n,e.highByte=r);let o=Be[n];return o&&o.isShared&&((Be.restoreStructures||(Be.restoreStructures=[]))[n]=o),Be[n]=e,e.read=wd(e,t),e.read()},ih=typeof self=="object"?self:global;jt[0]=()=>{};jt[0].noBuffer=!0;jt[101]=()=>{let n=ot();return(ih[n[0]]||Error)(n[1])};jt[105]=n=>{let r=Ve.getUint32(I-4);go||(go=new Map);let e=re[I],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};go.set(r,o);let i=ot();return o.used?Object.assign(t,i):(o.target=i,i)};jt[112]=n=>{let r=Ve.getUint32(I-4),e=go.get(r);return e.used=!0,e.target};jt[115]=()=>new Set(ot());var _d=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");jt[116]=n=>{let r=n[0],e=_d[r];if(!e)throw new Error("Could not find typed array for code "+r);return new ih[e](Uint8Array.prototype.slice.call(n,1).buffer)};jt[120]=()=>{let n=ot();return new RegExp(n[0],n[1])};jt[98]=n=>{let r=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=I;I+=r-4,sr=[ot(),ot()],sr.position0=0,sr.position1=0;let t=I;I=e;try{return ot()}finally{I=t}};jt[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 ah(n){let r=Go,e=I,t=vd,o=fr,i=Ur,a=Ro,s=xd,c=go,u=sr,l=new Uint8Array(re.slice(0,Go)),d=Be,p=Be.slice(0,Be.length),f=Kt,m=gi,h=n();return Go=r,I=e,vd=t,fr=o,Ur=i,Ro=a,xd=s,go=c,sr=u,re=l,gi=m,Be=d,Be.splice(0,Be.length,...p),Kt=f,Ve=new DataView(re.buffer,re.byteOffset,re.byteLength),h}function _l(){re=null,go=null,Be=null}function sh(n){n.unpack?jt[n.type]=n.unpack:jt[n.type]=n}var Ol=new Array(147);for(let n=0;n<256;n++)Ol[n]=+("1e"+Math.floor(45.15-n*.30103));var Al=new Hr({useRecords:!1}),_T=Al.unpack,PT=Al.unpackMultiple,OT=Al.unpack,Cl={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},AT=new Float32Array(1),fD=new Uint8Array(AT.buffer,0,4);var Nl;try{Nl=new TextEncoder}catch{}var Il,Od,Ml=typeof Buffer<"u",Pd=Ml?Buffer.allocUnsafeSlow:Uint8Array,uh=Ml?Buffer:Uint8Array,lh=Ml?4294967296:2144337920,G,dt,E=0,Wr,qr=null,CT=/[\u0080-\uFFFF]/,Za=Symbol("record-id"),gn=class extends Hr{constructor(r){super(r),this.offset=0;let e,t,o,i,a,s,c=0,u=uh.prototype.utf8Write?function(v,C,P){return G.utf8Write(v,C,P)}:Nl&&Nl.encodeInto?function(v,C){return Nl.encodeInto(v,G.subarray(C)).written}:!1,l=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 x=[],S=0,w=0;this.pack=this.encode=function(v,C){if(G||(G=new Pd(8192),dt=new DataView(G.buffer,0,8192),E=0),Wr=G.length-10,Wr-E<2048?(G=new Pd(G.length),dt=new DataView(G.buffer,0,G.length),Wr=G.length-10,E=0):E=E+7&2147483640,t=E,s=l.structuredClone?new Map:null,l.bundleStrings?(qr=["",""],G[E++]=214,G[E++]=98,qr.position=E-t,E+=4):qr=null,o=l.structures,o){o.uninitialized&&(o=l._mergeStructures(l.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 N=0;N<P;N++){let O=o[N];if(!O)continue;let A,M=o.transitions;for(let L=0,X=O.length;L<X;L++){let R=O[L];A=M[R],A||(A=M[R]=Object.create(null)),M=A}M[Za]=N+64}c=P}d||(o.nextId=P+64)}i&&(i=!1),a=o||[];try{if(b(v),qr){dt.setUint32(qr.position+t,E-qr.position-t);let P=qr;qr=null,b(P[0]),b(P[1])}if(l.offset=E,s&&s.idsToInsert){E+=s.idsToInsert.length*6,E>Wr&&_(E),l.offset=E;let P=IT(G.subarray(t,E),s.idsToInsert);return s=null,P}return C&fh?(G.start=t,G.end=E,G):G.subarray(t,E)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!d){for(let P=0,N=x.length;P<N;P++)x[P][Za]=0;x=[]}if(i&&l.saveStructures){let P=o.sharedLength||f;o.length>P&&(o=o.slice(0,P));let N=G.subarray(t,E);return l.saveStructures(o,c)===!1?(l._mergeStructures(l.getStructures()),l.pack(v)):(c=P,N)}}C>&&(E=t)}};let b=v=>{E>Wr&&(G=_(E));var C=typeof v,P;if(C==="string"){let N=v.length;if(qr&&N>=8&&N<4096){let M=CT.test(v);qr[M?0:1]+=v,G[E++]=193,b(M?-N:N);return}let O;N<32?O=1:N<256?O=2:N<65536?O=3:O=5;let A=N*3;if(E+A>Wr&&(G=_(E+A)),N<64||!u){let M,L,X,R=E+O;for(M=0;M<N;M++)L=v.charCodeAt(M),L<128?G[R++]=L:L<2048?(G[R++]=L>>6|192,G[R++]=L&63|128):(L&64512)===55296&&((X=v.charCodeAt(M+1))&64512)===56320?(L=65536+((L&1023)<<10)+(X&1023),M++,G[R++]=L>>18|240,G[R++]=L>>12&63|128,G[R++]=L>>6&63|128,G[R++]=L&63|128):(G[R++]=L>>12|224,G[R++]=L>>6&63|128,G[R++]=L&63|128);P=R-E-O}else P=u(v,E+O,A);P<32?G[E++]=160|P:P<256?(O<2&&G.copyWithin(E+2,E+1,E+1+P),G[E++]=217,G[E++]=P):P<65536?(O<3&&G.copyWithin(E+3,E+2,E+2+P),G[E++]=218,G[E++]=P>>8,G[E++]=P&255):(O<5&&G.copyWithin(E+5,E+3,E+3+P),G[E++]=219,dt.setUint32(E,P),E+=4),E+=P}else if(C==="number")if(v>>>0===v)v<64?G[E++]=v:v<256?(G[E++]=204,G[E++]=v):v<65536?(G[E++]=205,G[E++]=v>>8,G[E++]=v&255):(G[E++]=206,dt.setUint32(E,v),E+=4);else if(v>>0===v)v>=-32?G[E++]=256+v:v>=-128?(G[E++]=208,G[E++]=v+256):v>=-32768?(G[E++]=209,dt.setInt16(E,v),E+=2):(G[E++]=210,dt.setInt32(E,v),E+=4);else{let N;if((N=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){G[E++]=202,dt.setFloat32(E,v);let O;if(N<4||(O=v*Ol[(G[E]&127)<<1|G[E+1]>>7])>>0===O){E+=4;return}else E--}G[E++]=203,dt.setFloat64(E,v),E+=8}else if(C==="object")if(!v)G[E++]=192;else{if(s){let O=s.get(v);if(O){if(!O.id){let A=s.idsToInsert||(s.idsToInsert=[]);O.id=A.push(O)}G[E++]=214,G[E++]=112,dt.setUint32(E,O.id),E+=4;return}else s.set(v,{offset:E-t})}let N=v.constructor;if(N===Object)T(v,!0);else if(N===Array){P=v.length,P<16?G[E++]=144|P:P<65536?(G[E++]=220,G[E++]=P>>8,G[E++]=P&255):(G[E++]=221,dt.setUint32(E,P),E+=4);for(let O=0;O<P;O++)b(v[O])}else if(N===Map){P=v.size,P<16?G[E++]=128|P:P<65536?(G[E++]=222,G[E++]=P>>8,G[E++]=P&255):(G[E++]=223,dt.setUint32(E,P),E+=4);for(let[O,A]of v)b(O),b(A)}else{for(let O=0,A=Il.length;O<A;O++){let M=Od[O];if(v instanceof M){let L=Il[O];if(L.write){L.type&&(G[E++]=212,G[E++]=L.type,G[E++]=0),b(L.write.call(this,v));return}let X=G,R=dt,Z=E;G=null;let z;try{z=L.pack.call(this,v,V=>(G=X,X=null,E+=V,E>Wr&&_(E),{target:G,targetView:dt,position:E-V}),b)}finally{X&&(G=X,dt=R,E=Z,Wr=G.length-10)}z&&(z.length+E>Wr&&_(z.length+E),E=NT(z,G,E,L.type));return}}T(v,!v.hasOwnProperty)}}else if(C==="boolean")G[E++]=v?195:194;else if(C==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))G[E++]=211,dt.setBigInt64(E,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)G[E++]=207,dt.setBigUint64(E,v);else if(this.largeBigIntToFloat)G[E++]=203,dt.setFloat64(E,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");E+=8}else if(C==="undefined")this.encodeUndefinedAsNil?G[E++]=192:(G[E++]=212,G[E++]=0,G[E++]=0);else if(C==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+C)},T=this.useRecords===!1?this.variableMapSize?v=>{let C=Object.keys(v),P=C.length;P<16?G[E++]=128|P:P<65536?(G[E++]=222,G[E++]=P>>8,G[E++]=P&255):(G[E++]=223,dt.setUint32(E,P),E+=4);let N;for(let O=0;O<P;O++)b(N=C[O]),b(v[N])}:(v,C)=>{G[E++]=222;let P=E-t;E+=2;let N=0;for(let O in v)(C||v.hasOwnProperty(O))&&(b(O),b(v[O]),N++);G[P+++t]=N>>8,G[P+t]=N&255}:v=>{let C=Object.keys(v),P,N=a.transitions||(a.transitions=Object.create(null)),O=0;for(let M=0,L=C.length;M<L;M++){let X=C[M];P=N[X],P||(P=N[X]=Object.create(null),O++),N=P}let A=N[Za];if(A)A>=96&&h?(G[E++]=((A-=96)&31)+96,G[E++]=A>>5):G[E++]=A;else{A=a.nextId,A||(A=64),A<y&&this.shouldShareStructure&&!this.shouldShareStructure(C)?(A=a.nextOwnId,A<g||(A=y),a.nextOwnId=A+1):(A>=g&&(A=y),a.nextId=A+1);let M=C.highByte=A>=96&&h?A-96>>5:-1;N[Za]=A,a[A-64]=C,A<y?(C.isShared=!0,a.sharedLength=A-63,i=!0,M>=0?(G[E++]=(A&31)+96,G[E++]=M):G[E++]=A):(M>=0?(G[E++]=213,G[E++]=114,G[E++]=(A&31)+96,G[E++]=M):(G[E++]=212,G[E++]=114,G[E++]=A),O&&(S+=w*O),x.length>=m&&(x.shift()[Za]=0),x.push(N),b(C))}for(let M=0,L=C.length;M<L;M++)b(v[C[M]])},_=v=>{let C;if(v>16777216){if(v-t>lh)throw new Error("Packed buffer would be larger than maximum buffer size");C=Math.min(lh,Math.round(Math.max((v-t)*(v>67108864?1.25:2),4194304)/4096)*4096)}else C=(Math.max(v-t<<2,G.length-1)>>12)+1<<12;let P=new Pd(C);return dt=new DataView(P.buffer,0,C),G.copy?G.copy(P,0,t,v):P.set(G.slice(t,v)),E-=t,t=0,Wr=P.length-10,G=P}}useBuffer(r){G=r,dt=new DataView(G.buffer,G.byteOffset,G.byteLength),E=0}};Od=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ka];Il=[{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:a}=r(6);o[a++]=214,o[a++]=255,i.setUint32(a,t)}else if(t>0&&t<17179869184){let{target:o,targetView:i,position:a}=r(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),i.setUint32(a+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=r(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=r(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+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?ch(n,16,r):dh(Ml?Buffer.from(n):new Uint8Array(n),r)}},{pack(n,r){let e=n.constructor;e!==uh&&this.structuredClone?ch(n,_d.indexOf(e.name),r):dh(n,r)}},{pack(n,r){let{target:e,position:t}=r(1);e[t]=193}}];function ch(n,r,e,t){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=r,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function dh(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 NT(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 IT(n,r){let e,t=r.length*6,o=n.length-t;for(r.sort((i,a)=>i.offset>a.offset?1:-1);e=r.pop();){let i=e.offset,a=e.id;n.copyWithin(i+t,i,o),t-=6;let s=i+t;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function Vo(n){if(n.Class){if(!n.pack&&!n.write)throw new Error("Extension has no pack or write function");if(n.pack&&!n.type)throw new Error("Extension has no type (numeric code to identify the extension)");Od.unshift(n.Class),Il.unshift(n)}sh(n)}var ph=new gn({useRecords:!1}),MT=ph.pack,ET=ph.pack;var{NEVER:LT,ALWAYS:DT,DECIMAL_ROUND:BT,DECIMAL_FIT:RT}=Cl,fh=512,GT=1024;var mh=new gn({structuredClone:!0});Vo({Class:me.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,me.prototype),n}});Vo({Class:ye.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ye.prototype),n}});Vo({Class:Qe.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Qe.prototype),n}});Vo({Class:Ya.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ya(n)}});Vo({Class:Xa.prototype.constructor,type:5,write(n){return n.data},read(n){return new Xa(n)}});Vo({Class:We.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,We.prototype),n}});function VT(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 Ad(n){if(pi(n))return n;if(Array.isArray(n))return n.map(Ad);if(typeof n=="object"&&n!==null){let r={};for(let e of Object.keys(n).sort())r[e]=Ad(n[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else return n}var El;(t=>{function n(o){return mh.pack(o)}t.serialize=n;function r(o){return mh.unpack(o)}t.deserialize=r;function e(o){return VT(n(Ad(o))).toString()}t.checksum=e})(El||(El={}));var Fo="personal camera",ko="a218fcc3-276b-49b9-b485-49037fd14f5f",bh=2960946,ht=5526619;var hh;(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})(hh||(hh={}));var zo;(s=>{function n(c,u){return c[0]===u[0]&&c[1]===u[1]&&c[2]===u[2]}s.isEqual=n;function r(c,u){return[c[0]+u[0],c[1]+u[1],c[2]+u[2]]}s.add=r;function e(c,u){return[c[0]-u[0],c[1]-u[1],c[2]-u[2]]}s.sub=e;function t(c,u){return[c[0]/u[0],c[1]/u[1],c[2]/u[2]]}s.div=t;function o(c,u){return[c[0]*u[0],c[1]*u[1],c[2]*u[2]]}s.mul=o;function i(c,u){return Math.hypot(c[0]-u[0],c[1]-u[1],c[2]-u[2])}s.dist=i;function a(c,u,l){return[c[0]+(u[0]-c[0])*l,c[1]+(u[1]-c[1])*l,c[2]+(u[2]-c[2])*l]}s.lerp=a})(zo||(zo={}));var yh;(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})(yh||(yh={}));var jo;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=r;function e(i){return i??o.identity}o.simplify=e;function t(i,a){let s=a.slice(0);for(var c=0,u=a.length;c<u;c+=3){let l=i[3]*a[c]+i[7]*a[c+1]+i[11]*a[c+2]+i[15];s[c]=(i[0]*a[c]+i[4]*a[c+1]+i[8]*a[c+2]+i[12])/l,s[c+1]=(i[1]*a[c]+i[5]*a[c+1]+i[9]*a[c+2]+i[13])/l,s[c+2]=(i[2]*a[c]+i[6]*a[c+1]+i[10]*a[c+2]+i[14])/l}return s}o.applyMatrix4=t})(jo||(jo={}));var Tt;(l=>{function n(d){return typeof d=="object"&&typeof d.r=="number"&&typeof d.g=="number"&&typeof d.b=="number"}l.isRGB=n,l.white={r:1,g:1,b:1},l.red={r:1,g:0,b:0},l.black={r:0,g:0,b:0};function o(d){return{r:Math.round(d.r*255),g:Math.round(d.g*255),b:Math.round(d.b*255),a:1}}l.toRgb255a1=o;function i(d){return{r:d.r,g:d.g,b:d.b}}l.clone=i;function a(d){return d=Math.floor(d),{r:(d>>16&255)/255,g:(d>>8&255)/255,b:(d&255)/255}}l.fromHex=a;function s(d){return Math.round(d.r*255)*65536+Math.round(d.g*255)*256+Math.round(d.b*255)}l.toHex=s;function c(d,p){return d.r===p.r&&d.g===p.g&&d.b===p.b}l.equals=c;function u(d,p,f){return{r:d.r+(p.r-d.r)*f,g:d.g+(p.g-d.g)*f,b:d.b+(p.b-d.b)*f}}l.lerp=u})(Tt||(Tt={}));var Ft;(s=>{s.white={...Tt.white,a:1},s.transparent={...Tt.white,a:0};function e(c){return{r:c[0],g:c[1],b:c[2],a:c[3]}}s.from0to1=e;function t(c,u){return{...Tt.fromHex(c),a:u}}s.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}}s.toRgb255a1=o;function i(c,u){return Tt.equals(c,u)&&c.a===u.a}s.equals=i;function a(c,u,l){return{r:c.r+(u.r-c.r)*l,g:c.g+(u.g-c.g)*l,b:c.b+(u.b-c.b)*l,a:c.a+(u.a-c.a)*l}}s.lerp=a})(Ft||(Ft={}));var Ll;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(Ll||(Ll={}));var gh;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(gh||(gh={}));var xh;(r=>r.defaultData={control1:[.5,0],control2:[.5,1]})(xh||(xh={}));var vh;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(vh||(vh={}));function Sh(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var _r;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(_r||(_r={}));var Uo;(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},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function t(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=t})(Uo||(Uo={}));var $r;(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(zT.forEach(a=>{Object.assign(i,{[a]:o[a]??t[a]})}),i.radial={...t.radial},o.radial){let a=t.radial,s=o.radial;jT.forEach(c=>{Object.assign(i.radial,{[c]:s[c]??a[c]})})}if(i.linear={...t.linear},o.linear){let a=t.linear,s=o.linear;FT.forEach(c=>{Object.assign(i.linear,{[c]:s[c]??a[c]})})}if(i.grid={...t.grid},o.grid){let a=t.grid,s=o.grid;kT.forEach(c=>{Object.assign(i.grid,{[c]:s[c]??a[c]})})}if(i.toObject={...t.toObject},o.toObject){let a=t.toObject,s=o.toObject;UT.forEach(c=>{Object.assign(i.toObject,{[c]:s[c]??a[c]})})}if(i.randomnessObject={...t.randomnessObject},o.randomnessObject){let a=t.randomnessObject,s=o.randomnessObject;HT.forEach(c=>{Object.assign(i.randomnessObject,{[c]:s[c]??a[c]})})}return i}e.merge=r})($r||($r={}));var Dl;(t=>{t.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let r=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of r){let c=o[s];c&&Object.keys(c).length>0&&a.push({type:0,path:[...i,s],props:c})}return a}t.toOps=e})(Dl||(Dl={}));var zT=["count"],jT=["radius","start","end","position","scale","rotation"],FT=["position","scale","rotation"],kT=["count","size"],UT=["count","position","scale","rotation"],HT=["strength","scale","rotation","position","movement","seed","freqScale"];var Bl;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Bl||(Bl={}));var Rl;(e=>{function n(t){return r(t)}e.defaultData=n;function r(t){if(t==="PointLight")return{type:t,color:Ft.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(t==="SpotLight")return{type:t,color:Ft.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Ft.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(Rl||(Rl={}));var Ho;(r=>r.defaultData={enabled:"visibility",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]})(Ho||(Ho={}));var Cd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(Cd||(Cd={}));var Nd;(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})(Nd||(Nd={}));var Gl;(r=>r.defaultData={...Nd.defaultData,...Cd.defaultData})(Gl||(Gl={}));var wh;(r=>{function n(e,t){let o=[];if("material"in e){let i=typeof e.material=="string"?t.materials[e.material]??t.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?t.materials[i]??t.lib.materials[i]?.asset:i;a&&o.push(a)}return o}r.getMaterialData=n})(wh||(wh={}));var xi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(xi||(xi={}));var Th;(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})(Th||(Th={}));function Ph(n){return n.type!=="displace"}var _h;(r=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}r.is=n})(_h||(_h={}));var Oh=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],Ah=["wrapping","image","video","name"],kt;(o=>{function n(i,a){let{texture:s,...c}=a;if(Object.assign(i,c),s){let u=i.texture;u&&Object.assign(u,s)}}o.patch=n;function r(i,a){return i==="light"&&a?e(a):t(i)}o.defaultData=r;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function t(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,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{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:xi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:Tt.fromHex(ht)};case"depth":return{...a,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{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,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{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Tt.fromHex(6710886),a:1},colorB:{...Tt.fromHex(6710886),a:1},colorC:{...Tt.fromHex(16777215),a:1},colorD:{...Tt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...a,type:"fresnel",color:Ft.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,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:Ft.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Ft.fromHexAndA(0,1),contourColor:Ft.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{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...a,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{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Tt.fromHex(0),a:1},colorB:{...Tt.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}}}})(kt||(kt={}));var It;(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 l="";return u.layers.forEach(d=>{Object.entries(d.data).forEach(([p,f])=>{l+=`${p}${f}`,Array.isArray(f)?f.forEach(m=>l+=`${m}`):typeof f=="object"?Object.values(f).forEach(m=>{typeof m=="number"?l+=`${m.toFixed(4)}`:l+=`${m}`}):l+=`${f}`})}),l}c.getHash=r;function e(){return{layers:new ye}}c.defaultEmptyData=e;function t(u="layer1",l="layer2"){return i("phong",u,l)}c.defaultData=t;function o(u,l){return{...u,name:l}}c.withName=o;function i(u,l="layer1",d="layer2"){let p=new ye;return p.push({fi:0,data:kt.defaultData("light",u),id:l}),p.push({fi:1,data:kt.defaultData("color"),id:d}),{layers:p}}c.defaultTwoLayerData=i;function a(u,l="phong",d="layer1",p="layer2"){let f=kt.defaultData("texture");Object.assign(f.texture,{image:u});let m=new ye;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:kt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerTextureData=a;function s(u,l="phong",d="layer1",p="layer2"){let f=kt.defaultData("video");Object.assign(f.texture,{video:u});let m=new ye;return m.push({fi:0,data:f,id:d}),m.push({fi:1,data:kt.defaultData("light",l),id:p}),{layers:m}}c.defaultTwoLayerVideoTextureData=s})(It||(It={}));var vi;(r=>{function n(){return{points:new ye,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n})(vi||(vi={}));var bi;(r=>{function n(){return{points:new ye,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}r.defaultData=n})(bi||(bi={}));var Id={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var Vl;(r=>{function n(e,t){let o={...e};return WT.forEach(i=>{Object.assign(o,{[i]:t[i]??e[i]})}),o}r.merge=n})(Vl||(Vl={}));var zl={shape:Id,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},WT=["depth","offset","angle","twist","startScale","endScale"];var Qa;(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})(Qa||(Qa={}));var jl;(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,Vl.merge(o.extrusion,t.extrusion))),o}r.merge=n})(jl||(jl={}));var Wo;(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:bi.defaultData(),extrusion:zl};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:vi.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:{textValue:""},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:180};throw new Error("not implemented")}r.defaultData=n})(Wo||(Wo={}));var Fl;(r=>r.defaultData={enabled:!1,useBackgroundColor:!1,color:Tt.white,near:.1,far:2e3})(Fl||(Fl={}));var kl;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(kl||(kl={}));var Md;(r=>r.defaultData={softShadowQuality:"low"})(Md||(Md={}));var Ed;(r=>r.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(Ed||(Ed={}));var Ld;(r=>r.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(Ld||(Ld={}));var Ja;(r=>r.defaultData={usePhysics:!1,gravity:-10})(Ja||(Ja={}));var Dd;(r=>r.defaultData={playCamera:Fo,gameControlObject:null})(Dd||(Dd={}));var Ul;(r=>r.defaultData={backgroundColor:Ft.fromHexAndA(bh,1),postprocessing:kl.defaultData,fog:Fl.defaultData,globalPhysics:Ja.defaultData,ambient:Ed.defaultData,ao:Ld.defaultData,shadow:Md.defaultData,publish:Dd.defaultData})(Ul||(Ul={}));var Ch;(e=>{function n(t){return t==="Component"||t==="Instance"}e.isComponentRelated=n;function r(t){return t==="Empty"||t==="Instance"}e.isEmptyOrComponent=r})(Ch||(Ch={}));var Si;(o=>{o.identity={...Ll.identity,hiddenMatrix:jo.identity};function r(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=r;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function t(i,a){return fp({position:zo.isEqual(i.position,a.position)?void 0:a.position,rotation:zo.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:zo.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:jo.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=t})(Si||(Si={}));var Mt;(r=>r.defaultData={states:new ye,events:new ye,visible:!0,raycastLock:!1,physics:Ho.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Si.identity,cloner:null})(Mt||(Mt={}));var Hl;(r=>r.defaultData={type:"Empty",...Mt.defaultData})(Hl||(Hl={}));var Nh;(r=>r.defaultData={type:"Component",...Mt.defaultData})(Nh||(Nh={}));var xn;(r=>r.defaultData={type:"Mesh",...Mt.defaultData,...Gl.defaultData})(xn||(xn={}));var vn;(r=>r.defaultData={...Mt.defaultData,...Si.identity,position:[0,0,Uo.DefaultTargetOffset],...Uo.defaultData})(vn||(vn={}));var Wl;(e=>{function n(t){return{...Mt.defaultData,...Rl.defaultData(t)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Wl||(Wl={}));var wi;(e=>{function n(t,o,i=0){for(;i<o.length;){let a=t?t[o[i]]:void 0;if(o.length===i+1)return a;if(a)t=a.descendants,i+=1;else return}}e.resolveWithDes=n;function r(t,o,i=0){let a=n(t,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=r})(wi||(wi={}));var Yr;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function t(a,s){return{...Mt.defaultData,...s,component:a,overrides:new We,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=t;function o(a){let s=Si.fromObject(a.data);return t(a.id,s)}i.fromComponentData=o})(Yr||(Yr={}));var xo;(r=>r.defaultData={type:"Page",...Mt.defaultData,physics:{...Ho.defaultData,fusedBody:!1},...Ul.defaultData,camera:vn.defaultData})(xo||(xo={}));var ql;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:jo.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:Ho.defaultData,states:new ye,events:new ye,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...Uo.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",...Mt.defaultData,...xn.defaultData,geometry:Wo.defaultData("RectangleGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...Mt.defaultData,...xn.defaultData,geometry:Wo.defaultData("BooleanGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...Mt.defaultData,...xn.defaultData,geometry:Wo.defaultData("TextGeometry"),material:It.defaultTwoLayerData("phong","layer1","layer2")}))(ql||(ql={}));var bn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new We}),"materials"in i&&(s.materials=i.materials.map(c=>({layers:new We})))):_r.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function r(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=Bo(s.material,c=>{if(typeof c!="string")for(let[u,l]of Object.entries(a.material.layers)){let d=c.layers.data(u);d&&kt.patch(d,l)}}).data),s.materials&&a.materials&&(s.materials=Bo(s.materials,c=>{for(let u=0;u<s.materials.length;u++){let l=a.materials[u];if(typeof l!="string")for(let[d,p]of Object.entries(l.layers)){let f=c[u]?.layers?.data(d);f&&kt.patch(f,p)}}}).data),s}function e(i,a){let s,c=[],u={orthographic:0,perspective:0,geometry:0};function l(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(a))if(d!=="name")if(d==="cloner")c.push(...Dl.toOps(p,["cloner"]));else if(d==="pathSnapping")c.push({path:[d],props:{slide:p.slide,offset:p.offset},type:0});else if(d==="material")l(["material"],p);else if(d==="materials")for(let[f,m]of Object.entries(p))l(["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 s===void 0&&(s={path:[],props:{},type:0},c.push(s)),s.props[d]=p;return c}o.toOps=e;function t(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Si.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),_r.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let c=a;c.orthographic?.zoom!==void 0&&(s.orthographic.zoom=c.orthographic.zoom),c.perspective?.zoom!==void 0&&(s.perspective.zoom=c.perspective.zoom),c.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=c.isUpVectorFlipped),c.targetOffset!==void 0&&(s.targetOffset=c.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:jl.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=r(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:$r.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:$r.merge(s.cloner,a.cloner)});else if(Bl.is(i.type)){let c=a;c.intensity!==void 0&&(s.intensity=c.intensity),c.color!==void 0&&(typeof c.color=="string"?s.color=c.color:s.color=Tt.clone(c.color))}return s}o.patch=t})(bn||(bn={}));var _i;(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,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(_i||(_i={}));var Xr;(r=>r.defaultData={orbitControls:_i.defaultData,playPage:ko,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",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"]}),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,hdTransmission:!1})(Xr||(Xr={}));var Bd;(r=>r.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Bd||(Bd={}));var Rd;(r=>r.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(Rd||(Rd={}));var qo;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Bd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:Rd.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(qo||(qo={}));var Ih;(e=>{function n(t){return t.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function r(t,o,i){t.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let c=Pi.getComponentData(t,s.component)?.data;c&&i(a,s,c.events)}else i(a,s,s.events)})}e.traverseModuleInstances=r})(Ih||(Ih={}));var $o;(s=>{s.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function r(c={withLight:!0,withSquare:!0}){let u=[],l=ql.defaultMeshObject;c.withLight===!0&&u.push({fi:-1,data:Wl.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),c.withSquare===!0&&u.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:l,children:[]});let d=new Qe;return d.push({fi:1,id:ko,data:{...xo.defaultData,name:"Scene 1"},children:u}),d}s.defaultData={objects:r(),publish:Xr.defaultData,styles:qo.defaultData()},s.emptyDataWithoutPage=function(){return{objects:new Qe,publish:Xr.defaultData,styles:qo.defaultData()}},s.emptyDataWithPage=function(c){return{objects:r(c),publish:Xr.defaultData,styles:qo.defaultData()}};function i(c){return{...s.defaultData,objects:Yt(c,Qe.prototype)}}s.withObjs=i;function a(c,u){return i([{id:c,data:u,children:[],fi:0}])}s.withObj=a})($o||($o={}));var Oi;(r=>r.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Oi||(Oi={}));var Ai;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(Ai||(Ai={}));var $l;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function r(a){return typeof a=="number"}i.isNumber=r;function e(a){return typeof a=="boolean"}i.isBoolean=e;function t(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=t;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})($l||($l={}));var Gd;(r=>r.all=["images","videos","colors","audios","fonts","materials","variables"])(Gd||(Gd={}));var Mh;(r=>r.all=[...Gd.all,"components"])(Mh||(Mh={}));var Eh;(r=>{function n(){return{images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,materials:new me,components:new me,variables:new me}}r.defaultData=n})(Eh||(Eh={}));var Yo;(r=>{function n(){return{images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,materials:new me,components:new me,variables:new me}}r.defaultData=n})(Yo||(Yo={}));var Pr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},Yt(a,me.prototype)}i.defaultColors=n;function r(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...Ai.emptyImage,name:"AI generated image"}),Yt(s,me.prototype)}i.defaultImages=r;function e(){return{catelogs:new me,materials:new me,images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,variables:new ye,lib:Yo.defaultData()}}i.emptyData=e;function t(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=t;function o(a,s){if(s.format==="HH:mm:ss"){let c=Math.floor(a/3600),u=Math.floor((a-c*3600)/60),l=Math.round(a-c*3600-u*60);return{textValue:[c,u,l]}}else if(s.format==="mm:ss"){let c=Math.floor(a/60),u=Math.round(a-c*60);return{textValue:[c,u]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(Pr||(Pr={}));var es=require("three");var Yl;(r=>r.list=["idle","move","jump","run"])(Yl||(Yl={}));var Xl;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new ye,move:new ye,jump:new ye,run:new ye},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Ft.fromHexAndA(3728051,1)}}))(Xl||(Xl={}));function Lh(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 s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...Tr(Je(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,a)}else if(r.type==="depth"&&r.gradientType===1&&(r.near<0||r.far<0)){let e={...Je(r),near:Math.max(r.near,0),far:Math.max(r.far,0)};Object.assign(r,e)}})}function vo(n,r){Object.values(n.shared.materials).forEach(e=>r(e))}function bo(n,r){n.scene.objects.traverse((e,t)=>{"materials"in t?t.materials.forEach((o,i)=>{o===void 0&&(t.materials[i]=It.defaultData(),o=t.materials[i]),typeof o!="string"&&r(o)}):"material"in t?typeof t.material!="string"&&(t.material===void 0&&(t.material=It.defaultData()),r(t.material)):t.type==="Mesh"&&(t.material===void 0&&(t.material=It.defaultData()),r(t.material)),"overrides"in t&&Object.values(t.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&r(o.material)})})}function qT(n){Object.assign(n.scene.publish,{orbitControls:{..._i.defaultData,...Je(n.scene.publish.orbitControls)}})}function $T(n){Object.assign(n.scene.publish.settings,{video:{...Xr.defaultData.settings.video,...Je(n.scene.publish.settings.video)}})}function YT(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((Oh.includes(o)||typeof i=="boolean")&&delete t[o],o==="texture")for(let[a,s]of Object.entries(i))(Ah.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,t)=>{t.states.forEach(o=>{let i=o;i.material?r(i.material):i.materials&&i.materials.forEach(a=>{r(a)})})})}function XT(n){n.scene.publish.withBackground=!0}function KT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function ZT(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 QT(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 JT(n){n.scene.objects.traverse((r,e)=>{let t=n.scene.objects.unproxy().parent(r);if(t){let o=Je(n.scene.objects.data(t));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=Je(e).booleanExclude!==!0)}})}function e_(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 t_(n){function r(t){Object.setPrototypeOf(t,We.prototype),t.texture&&Object.setPrototypeOf(t.texture,We.prototype)}function e(t){Object.setPrototypeOf(t,We.prototype);for(let o in t)r(t[o])}n.scene.objects.traverse((t,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=Je(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let c=a.materials[s],u=Je(c).layers;e(u),c.layers=u}})})}function Dh(n){n.layers===void 0&&Object.assign(n,It.defaultTwoLayerData("lambert"))}function Vd(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={...Je(r),colors:e,steps:t};Object.assign(r,o)}})}function r_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Bh(n){n.scene.objects.traverse((r,e)=>{"materials"in e?e.materials.forEach(t=>{typeof t!="string"&&Vd(t)}):"material"in e&&typeof e.material!="string"&&Vd(e.material)}),Object.values(n.shared.materials).forEach(r=>Vd(r))}function o_(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 n_(n){n.shared.audios=Yt({},me.prototype)}function i_(n){n.shared.videos=Yt({},me.prototype)}function a_(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 s_(n){Object.entries(Je(n.shared.images)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.images[t]}),Object.entries(Je(n.shared.audios)).filter(t=>t[1].asset===!1).map(t=>t[0]).forEach(t=>{delete n.shared.audios[t]})}function l_(n){n.scene.publish.settings.web.preload=!1}function Rh(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 Gh(n){n.layers&&n.layers.forEach(r=>{Ph(r)&&r.isMask===void 0&&(r.isMask=!1),(r.type==="texture"||r.type==="video")&&r.blending===void 0&&(r.blending=0),(r.type==="noise"||r.type==="displace"&&r.displacementType==="noise")&&(r.voronoiStyle===void 0&&(r.voronoiStyle=0),r.highCut===void 0&&(r.highCut=1),r.lowCut===void 0&&(r.lowCut=0),r.smoothness===void 0&&(r.smoothness=.3),r.seed===void 0&&(r.seed=0),r.quality===void 0&&(r.quality=1))})}function c_(n){n.shared.fonts=Yt({},me.prototype)}function d_(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 u_(n){let r=[];n.scene.objects.traverse((e,t)=>{let o=t;if(o.type==="TextFrame"){let i=It.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=d_(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let c={name:o.name,...Mt.defaultData,...xn.defaultData,flatShading:!1,wireframe:!1,geometry:{...Wo.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,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:Je(o.states),events:Je(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},u=Je(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 p_(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 ye,move:new ye,jump:new ye}});else{let i=new ye;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:es.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,c)=>{let u={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},l={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(l,Tr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(l,{control1:{...a.control1},control2:{...a.control2}});let d={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...d,...l},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ye({fi:0,id:es.MathUtils.generateUUID(),data:u},{fi:1,id:es.MathUtils.generateUUID(),data:p})};i.push({fi:c,id:s,data:f})}),delete o.targets)}})})}function f_(n){n.scene.objects.traverse((r,e)=>{function t(o,i){let a=new ye,s=[];if(e.events.forEach((c,u,l)=>{if(c.type==="Audio"&&c.trigger===i){let d;s.push(u),c.interaction==="play"?d={...Tr(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={...Tr(c,"interaction","delay","object","playAudio"),type:"Audio"}),d&&a.push({fi:l,id:u,data:d})}}),s.forEach(c=>e.events.delete(c)),a.length){let c=e.events.find(u=>u.type===o)?.data;c?"actions"in c&&c.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:es.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}t("Start","start"),t("MouseDown","mouseDown"),t("MouseUp","mouseUp"),t("KeyDown","keyDown"),t("KeyUp","keyUp")})}function Vh(n){let r=n.layers.find(e=>e.type==="light")?.data;if(r?.category==="basic"){let e=kt.defaultData("light","phong"),t=r;Object.assign(t,e),t.visible=!1}}function zh(n){vo(n,Vh),bo(n,Vh)}function m_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function h_(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 y_(n){n.scene.objects.traverse((r,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=It.defaultTwoLayerData("phong"))})}function g_(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 x_(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 v_(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 b_(n){let{video:r}=n.scene.publish.settings;r.format==="gif"&&r.fps>48&&(r.fps=15)}function S_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.resetYPosition=Math.abs(t.resetYPosition-e.position[1]))})})}function w_(n){let r=n.scene.environment.usePhysics;n.scene.objects.traverse((e,t)=>{r&&t.physics===null?t.collision=!1:t.collision="visibility"})}function T_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.navmesh=Xl.defaultDataThirdPerson.navmesh)})})}function __(n){n.scene.styles||(n.scene.styles=qo.defaultData())}function jh(n){n.layers.forEach(r=>{r.type==="light"&&r.category!=="toon"&&r.occlusion===void 0&&(r.occlusion=!0)})}function P_(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),bo(n,jh),vo(n,jh)}function O_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&Object.assign(t.gameActions,{run:new ye})})})}function A_(n){n.scene.objects.traverse((r,e)=>{e.events.forEach(t=>{t.type==="GameControl"&&(t.keyAssignments=[...t.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Fh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.bumpMapIntensity===void 0&&(r.bumpMapIntensity=5)})}function kh(n,r){if(r<1&&(bo(n,Lh),vo(n,Lh),n.schema=1),r<2&&(qT(n),n.schema=2),r<3&&(YT(n),n.schema=3),r<4&&(XT(n),n.schema=4),r<5&&(KT(n),n.schema=5),r<6&&(ZT(n),n.schema=6),r<7&&(QT(n),n.schema=7),r<8&&(n.schema=8),r<9&&(Bh(n),n.schema=9),r<10&&(r_(n),n.schema=10),r<11&&(o_(n),n.schema=11),r<12&&(Bh(n),n.schema=12),r<13&&(n_(n),n.schema=13),r<14&&(a_(n),n.schema=14),r<15&&(s_(n),n.schema=15),r<16&&(l_(n),n.schema=16),r<17&&(bo(n,Rh),vo(n,Rh),n.schema=17),r<18&&(bo(n,Dh),vo(n,Dh),n.schema=18),r<19&&($T(n),n.schema=19),r<20&&(c_(n),u_(n),n.schema=20),r<21&&(p_(n),f_(n),n.schema=21),r<22&&(zh(n),n.schema=22),r<23&&(m_(n),n.schema=23),r<24&&(h_(n),n.schema=24),(r<25||n.shared.videos===void 0)&&(i_(n),r<25&&(n.schema=25)),r<26&&(JT(n),n.schema=26),r<27&&(e_(n),n.schema=27),r<28&&(zh(n),n.schema=28),r<29&&(t_(n),n.schema=29),r<30&&(y_(n),n.schema=30),r<31&&(g_(n),n.schema=31),r<33&&(x_(n),n.schema=33),r<34&&(v_(n),n.schema=34),r<35&&(b_(n),n.schema=35),r<36&&(S_(n),n.schema=36),r<37&&(w_(n),n.schema=37),r<38&&(bo(n,Gh),vo(n,Gh),n.schema=38),r<39&&(T_(n),n.schema=39),r<40&&(__(n),n.schema=40),r<41&&(P_(n),n.schema=41),r<42&&(O_(n),n.schema=42),r<43&&(A_(n),n.schema=43),r<99){bo(n,Fh),vo(n,Fh),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=Fo);let e=Je(n.scene.objects),t=n.scene.objects;n.scene.publish.playPage=ko,t.insertBefore(null,null,[{id:ko,data:{...xo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:Tr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:Tr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Ja.defaultData,...Tr(n.scene.environment,"usePhysics","gravity")},camera:Je(n.scene.ownerCamera)??xo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==$o.TRASH_CAN_ID&&t.move(ko,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,Ho.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function Uh(n){n.layers&&n.layers.forEach(r=>{r.type==="light"&&r.alphaOverride===void 0&&(r.alphaOverride=1)})}function C_(n){n.scene.objects.traverse((r,e)=>{let t=e.geometry;t&&t.type==="PathGeometry"&&(t.extrusion.capType="flat",t.extrusion.bevel=50,t.extrusion.bevelSides=6,t.extrusion.shape.type==="Custom"&&(t.extrusion.shape.shapeQuality="low"))})}var Ci=180/Math.PI;function Hh(n){n.rotation=n.rotation.slice(0,3).map(r=>r*Ci)}function Wh(n){Hh(n),n.type==="Page"&&Hh(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(t=>t*Ci))});let r=n.geometry;r&&r.type==="SphereGeometry"&&(r.thetaLength=r.thetaLength*Ci),r&&r.type==="TorusGeometry"&&(r.arc=r.arc*Ci),r&&r.type==="PathGeometry"&&(r.extrusion.angle*=Ci,r.extrusion.twist*=Ci),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(Je(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Once")})}function N_(n){n.shared.variables=Yt({},me.prototype)}function I_(n){let r=Je(n.shared.variables);n.shared.variables=Yt(Object.entries(r??{}).map(([e,t],o)=>({fi:o,id:e,data:t})),ye.prototype)}var So=107;function qh(n,r){r(n.data);for(let e of n.children)qh(e,r)}function M_(n){let r=n.schema??104;r!==So&&r<105&&(qh(n.asset,Wh),n.schema=105)}function Kl(n){let r=n.schema??0;if(r!==So){console.warn("updating from ",r,"to ",So),kh(n,r),r<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=Xr.defaultData.joystickSizeAndXYOffset),n.schema=100),r<101&&(bo(n,Uh),vo(n,Uh),n.schema=101),r<102&&(C_(n),n.schema=102),r<104&&(n.shared.catelogs=new me,n.shared.lib=Yo.defaultData(),n.schema=104),r<105&&(N_(n),n.scene.objects.traverse((e,t)=>{Wh(t)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))M_(e);r<106&&(I_(n),n.schema=106),r<107&&(n.shared.lib.variables=Yo.defaultData().variables,n.schema=107)}}var Pi;(s=>{s.defaultData={schema:So,scene:$o.defaultData,frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oi.defaultData),shared:{...Pr.emptyData(),colors:Pr.defaultColors()}},s.emptyDataForImports=function(c){let u=$o.emptyDataWithPage(c);return{schema:So,scene:u,frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oi.defaultData),shared:{...Pr.emptyData(),colors:Pr.defaultColors(),images:Pr.defaultImages(c)}}},s.emptyData=function(){return{schema:So,scene:$o.emptyDataWithPage(),frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Oi.defaultData),shared:Pr.emptyData()}},s.collabHelper={...$a,updateSchema(c){return(c.schema??0)<So?Bo(c,Kl):(c.schema??0)-So}};function o(c){let u=s.collabHelper.updateSchema(c);return typeof u=="number"?u===0?c:null:u.data}s.updateSchemaDirectly=o;function i(c){return{...c,shared:{...c.shared,lib:Yo.defaultData()}}}s.withoutLib=i;function a(c,u){let l=c.scene.objects.get(u);if(l&&l.data.type==="Component")return l;{let d=c.shared.lib.components[u];if(d)return d.asset}}s.getComponentData=a})(Pi||(Pi={}));var Ge=require("three"),Pa=ja(Yh());var E_=.5*(Math.sqrt(3)-1),ts=(3-Math.sqrt(3))/6,L_=1/3,Kr=1/6,XG=(Math.sqrt(5)-1)/4,KG=(5-Math.sqrt(5))/20,rs=n=>Math.floor(n)|0,Xh=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]),jd=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 Zl(n=Math.random){let r=Zh(n),e=new Float64Array(r).map(o=>Xh[o%12*2]),t=new Float64Array(r).map(o=>Xh[o%12*2+1]);return function(i,a){let s=0,c=0,u=0,l=(i+a)*E_,d=rs(i+l),p=rs(a+l),f=(d+p)*ts,m=d-f,h=p-f,y=i-m,g=a-h,x,S;y>g?(x=1,S=0):(x=0,S=1);let w=y-x+ts,b=g-S+ts,T=y-1+2*ts,_=g-1+2*ts,v=d&255,C=p&255,P=.5-y*y-g*g;if(P>=0){let A=v+r[C],M=e[A],L=t[A];P*=P,s=P*P*(M*y+L*g)}let N=.5-w*w-b*b;if(N>=0){let A=v+x+r[C+S],M=e[A],L=t[A];N*=N,c=N*N*(M*w+L*b)}let O=.5-T*T-_*_;if(O>=0){let A=v+1+r[C+1],M=e[A],L=t[A];O*=O,u=O*O*(M*T+L*_)}return 70*(s+c+u)}}function Kh(n=Math.random){let r=Zh(n),e=new Float64Array(r).map(i=>jd[i%12*3]),t=new Float64Array(r).map(i=>jd[i%12*3+1]),o=new Float64Array(r).map(i=>jd[i%12*3+2]);return function(a,s,c){let u,l,d,p,f=(a+s+c)*L_,m=rs(a+f),h=rs(s+f),y=rs(c+f),g=(m+h+y)*Kr,x=m-g,S=h-g,w=y-g,b=a-x,T=s-S,_=c-w,v,C,P,N,O,A;b>=T?T>=_?(v=1,C=0,P=0,N=1,O=1,A=0):b>=_?(v=1,C=0,P=0,N=1,O=0,A=1):(v=0,C=0,P=1,N=1,O=0,A=1):T<_?(v=0,C=0,P=1,N=0,O=1,A=1):b<_?(v=0,C=1,P=0,N=0,O=1,A=1):(v=0,C=1,P=0,N=1,O=1,A=0);let M=b-v+Kr,L=T-C+Kr,X=_-P+Kr,R=b-N+2*Kr,Z=T-O+2*Kr,z=_-A+2*Kr,V=b-1+3*Kr,W=T-1+3*Kr,$=_-1+3*Kr,Y=m&255,q=h&255,k=y&255,U=.6-b*b-T*T-_*_;if(U<0)u=0;else{let D=Y+r[q+r[k]];U*=U,u=U*U*(e[D]*b+t[D]*T+o[D]*_)}let B=.6-M*M-L*L-X*X;if(B<0)l=0;else{let D=Y+v+r[q+C+r[k+P]];B*=B,l=B*B*(e[D]*M+t[D]*L+o[D]*X)}let F=.6-R*R-Z*Z-z*z;if(F<0)d=0;else{let D=Y+N+r[q+O+r[k+A]];F*=F,d=F*F*(e[D]*R+t[D]*Z+o[D]*z)}let j=.6-V*V-W*W-$*$;if(j<0)p=0;else{let D=Y+1+r[q+1+r[k+1]];j*=j,p=j*j*(e[D]*V+t[D]*W+o[D]*$)}return 32*(u+l+d+p)}}function Zh(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}var Qh=require("three"),Or=new Qh.Triangle,Ql=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;Or.a.fromBufferAttribute(r,o),Or.b.fromBufferAttribute(r,o+1),Or.c.fromBufferAttribute(r,o+2),i*=Or.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 a=Math.ceil((t+o)/2);if(a===0||e[a-1]<=r&&e[a]>r){i=a;break}else r<e[a]?o=a-1:t=a+1}return i}sampleFace(r,e,t){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),Or.a.fromBufferAttribute(this.positionAttribute,r*3),Or.b.fromBufferAttribute(this.positionAttribute,r*3+1),Or.c.fromBufferAttribute(this.positionAttribute,r*3+2),e.set(0,0,0).addScaledVector(Or.a,o).addScaledVector(Or.b,i).addScaledVector(Or.c,1-(o+i)),Or.getNormal(t),this}};var ry=require("three");var lr=require("three"),ty=ja(ey()),D_=new lr.Matrix4,B_=new lr.Matrix4,R_=new lr.Matrix4,Ni;(r=>{function n(e){return e&&e.__isSPEObject}r.is=n})(Ni||(Ni={}));var Ii=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new lr.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new lr.Matrix4;this.matrixWorldRigid=new lr.Matrix4;this.shearScale=new lr.Matrix4;this.shearScaleInv=new lr.Matrix4}get __isSPEObject(){return!0}isDescendantOf(t){t instanceof lr.Object3D&&(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 a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(t,o=0){for(let i of this.children)Ni.is(i)&&i.traverseObject(t,o+1)}traverseObject(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ni.is(a)&&a.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:a,q:s}=(0,ty.SVD)(o),c=D_.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=B_.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),l=R_.copy(u).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(l).premultiply(u),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(c,l).copyPosition(this.matrixWorld),s.every(d=>Math.abs(s[0]-d)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(t,o){this.updateWorldMatrix(!0,!1);let i=new lr.Matrix4().copy(this.matrixWorld).invert();return t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),i.multiply(t.parent.matrixWorld)),"hiddenMatrix"in t&&t.hiddenMatrix instanceof lr.Matrix4?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}onAfterRender(t,o,i,a,s,c){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var Fd=class extends Ii(ry.Object3D){},G_=n=>n.type==="Mesh",wo=class extends Fd{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 wo(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}};var Zi=require("three");var xc=require("three");var Vt=require("three");var nt=require("three"),Sn=new nt.Vector3,wn=new nt.Vector3,Mi=new nt.Matrix4,ny=[new nt.Vector3(-1,1,1),new nt.Vector3(-1,-1,1),new nt.Vector3(1,-1,1),new nt.Vector3(1,1,1),new nt.Vector3(-1,1,-1),new nt.Vector3(-1,-1,-1),new nt.Vector3(1,-1,-1),new nt.Vector3(1,1,-1)],V_=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],z_=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],oy=(n,r,e)=>{n.updateEntityBoxSize(Sn,wn),Mi.copy(r).multiply(n.matrixWorld),wn.x===0&&wn.y===0&&wn.z===0?e.push(new nt.Vector3(Sn.x,Sn.y,Sn.z).applyMatrix4(Mi)):ny.forEach(t=>{e.push(t.clone().multiply(wn).add(Sn).applyMatrix4(Mi))})},os=class extends nt.Box3{constructor(){super(...arguments);this.matrix=new nt.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(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 nt.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new nt.Vector3);return}oy(a,t,i)}}):oy(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(Mi.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(wn).multiplyScalar(.5),this.getCenter(Sn),Mi.copy(this.matrix).setPosition(Sn),this.vertices=ny.map(e=>e.clone().multiply(wn).applyMatrix4(Mi))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=V_.map(([e,t])=>new nt.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new nt.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=z_.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Ar={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var _t=require("three"),Ud=class extends _t.CurvePath{constructor(){super()}getPoints(r=12){let e=[],t,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,c=this.curves;s<c.length;s++){let u=c[s],l=s===0?o[s]:o[s]-o[s-1],d=Math.ceil(r*l/a),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 Hd=.001;function Wd(n,r,e){return r.clone().sub(n).cross(r.clone().sub(e)).length()<=Hd}function kd(n,r){let e=new _t.Vector3(...n.position),t=new _t.Vector3(...n.controlNext.position),o=new _t.Vector3(...r.controlPrevious.position),i=new _t.Vector3(...r.position);return Wd(e,t,i)&&Wd(e,o,i)}function ec(n){let r=n.points.map(l=>new _t.Vector3(...l.data.position)),e=[n.points[0]],t=new _t.Vector3(...e[0].data.position);for(let l=0;l<n.points.length-1;l++)Wd(t,r[l],r[l+1])||(e.push(n.points[l]),t=r[l]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let l=0;l<a;l++){let d=e[l].data,p=new _t.Vector3(...d.position),f=new _t.Vector3(...d.controlPrevious.position),m=new _t.Vector3(...d.controlNext.position),h={position:p,baseRoundness:d.roundness,controlPrevious:f,controlNext:m};if(d.roundness===0||!n.isClosed&&(l===0||l===a-1)){s[l]={...h,removedLength:0};continue}let y=o&&l==0?a-1:l-1,g=o&&l==a-1?0:l+1,x=e[y].data,S=e[g].data,w=new _t.Vector3(...x.position),b=new _t.Vector3(...S.position),T=w.clone().sub(p).normalize(),_=b.clone().sub(p).normalize();Object.assign(h,{prevDir:T,nextDir:_});let v=kd(x,d),C=kd(d,S);if(!v||!C)s[l]={...h,removedLength:0};else{let P=T.clone().add(_).normalize(),N=P.clone().cross(T).length()/T.dot(P);s[l]={...h,tan:N,removedLength:d.roundness/N}}}for(let l=0;l<i;l++){let d=l,p=o&&l===a-1?0:l+1,f=s[d],m=s[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 l=0;l<i;l++){let d=l,p=o&&l===a-1?0:l+1,f=s[d],m=s[p],h=null;if(!kd(e[d].data,e[p].data))f.position.distanceTo(m.position)>Hd&&(h=new _t.CubicBezierCurve3(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)>Hd&&(h=new _t.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}c[2*l+1]=h}for(let l=0;l<a;l++){let d=s[l];if(d.removedLength===0){c[2*l]=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),x=f.distanceTo(m)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(h,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-h).add(S),b=p.distanceTo(w)/p.distanceTo(g),T=d.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),_=T.clone().lerp(w,2),v=f.clone().lerp(T,4/3),C=m.clone().lerp(_,4/3);c[2*l]=new _t.CubicBezierCurve3(f,v,C,m)}let u=new Ud;return c.forEach(l=>{l&&u.add(l)}),u}var Oe;(r=>{function n(e){return e&&e.__isEntity}r.is=n})(Oe||(Oe={}));var Ei=n=>Oe.is(n),j_={type:"completeState",isfromEntity:!0},F_=["x","y","z"],qd=new Vt.Vector3,k_=new Vt.Vector3().set(0,1,0),Li=n=>class extends Ii(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new os;this._recursiveBBox=new os;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(Oe.is(o))return o}entityChildrenCount(){let t=this.children.length;for(;t--;)if(Oe.is(this.children[t]))return t+1;return 0}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(Oe.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 a of this.data.states)bn.toOps(this.data,a.data).forEach(c=>{let u=xl.replaceProps(c,this.data);this.dataPatched=this.data,this.updateByPatchedOp(u,this.data,o)});if(t!==null){let a=this.data.states.data(t);a&&(this.dataPatched=bn.patch(this.data,a),bn.toOps(this.data,a).forEach(c=>{this.updateByPatchedOp(c,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),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=>{Ei(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(Oe.is(o[i]))return o[i];if(Oe.is(t))return t.traverseSortNextHelper()}}sortNext(){let t=this.children;return this.children.length>0&&Oe.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)Ei(o)&&t(o)}traverseEntityAncestors(t){this.traverseAncestors(o=>{Oe.is(o)&&t(o)})}traverseConcreteEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ei(a)&&a.isConcreteEntity&&a.traverseEntity(t,o+1)}traverseEntity(t,o=0){if(t(this,o)!==!0)for(let a of this.children)Ei(a)&&a.traverseEntity(t,o+1)}traverseVisibleEntity(t){t(this);for(let o of this.children)Ei(o)&&o.visible&&o.traverseVisibleEntity(t)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(t){super.updateMatrixWorld(t),this.dispatchEvent({type:"updateMatrixWorld"})}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=>Ei(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*Vt.MathUtils.RAD2DEG,this.rotation.y*Vt.MathUtils.RAD2DEG,this.rotation.z*Vt.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return di(o,t)}getTransformValues(t,o,i){return o[t].map((a,s)=>i?.shared.getVariable(a,[this.uuid,t,F_[s]])??a)}updateTransformState(t,o){let i=!1;return t.position&&(this.position.fromArray(this.getTransformValues("position",t,o)),i=!0),t.rotation&&(qd.fromArray(this.getTransformValues("rotation",t,o)).multiplyScalar(Vt.MathUtils.DEG2RAD),this.rotation.setFromVector3(qd),i=!0),t.scale&&(this.scale.fromArray(this.getTransformValues("scale",t,o)),i=!0),t.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(t.hiddenMatrix??jo.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(t=!1){if(t){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let t of this.children)Oe.is(t)&&t.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(t=>{Oe.is(t)&&t.disposeRecursively()})}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return di(o,t)}updateByObjUpdateOp(t,o){t!==void 0&&this.updateByOp({type:0,props:t,path:[]},{...this.data,...t},o,!1)}updateByOp(t,o,i,a){let s=this.data;this.data=o;let c=t,u=Gt(t.path,["states","*"]);if(u!==null){if(t.type===0){let[l]=u;if(this?.stateSelection===l){let d={...t.props};if(delete d.name,Object.values(t.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=lt.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 l=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(l!==void 0){if(t.props.name!==void 0&&l.name){let{name:p,...f}=l;l=f}if(t.props.material!==void 0&&"material"in l){let{material:p,...f}=l;l=f}let d=lt.removeOverridden(t.path,t.props,l);c={...t,props:d}}}if(this.updateByPatchedOpBase(c,bn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Gt(t.path,["overrides"])){let l=[],d=[...t.path];for(l.push(d[1]),d.splice(0,2);d.length>0&&d[0]==="descendants";)l.push(d[1]),d.splice(0,2);if(l[l.length-1]===void 0){if(t.type===0)for(let p of Object.keys(t.props)){l[l.length-1]=p;let f=i.scene.findInstance([this.uuid,...l]);f&&(f.overrideData=t.props[p],f.updateState(kr.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...l]);if(p){let f=lt.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=wi.resolve(o.overrides,l),p.updateByOp(t,ct.applySimple(p.data,t),i,!1)}}}else if(this.instances.length>0){let l;if(t.path.length===0&&t.type===0){let d;for(let p of Yr.rootOverrideProps)p in t.props&&(d===void 0&&(d={}),d[p]=t.props[p]);d&&(l={...t,props:d})}else for(let d of Yr.rootOverrideProps)if(Gt(t.path,[d])){l=t;break}l!==void 0&&this.instances.forEach(d=>{if(d.isInstanceRoot){let p=kr.filterOp(d.overrideData,l);p&&d.updateByOp(p,ct.applySimple(d.data,p),i,!0)}}),this.instances.forEach(d=>{if(!d.isInstanceRoot){let p=kr.filterOp(d.overrideData,t);if(p){let f;s===d.data&&t===p?f=o:f=ct.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&&!_r.is(t.props.type)&&Ar.changeEntityProptotype(this,o,i);else if(t.path.length===1&&t.path[0]==="geometry"&&t.type===0&&"type"in t.props){Ar.changeEntityProptotype(this,o,i);for(let a of this.children)Oe.is(a)&&a.updateVisible()}this.updateByPatchedOp(t,o,i)}updateByPatchedOp(t,o,i){if(t.path.length===0&&t.type===0&&this.updateState(t.props,i),Gt(t.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Gt(t.path,["cloner"])!==null){let a=ct.drop(t,1);a.path.length===0&&a.type===0&&a.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.dataPatched.pathSnapping){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,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=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;if(u.geometry.path.points.length<=1)return;let l=ec(u.geometry.path),d=(i+a)%1;i+a===1&&d===0&&(d=1);let p=l.getPointAt(d),f=this.parent?this.parent?.matrixWorld:new Vt.Matrix4;c.updateMatrixWorld();let m=new Vt.Matrix4().multiplyMatrices(f.clone().invert(),c.matrixWorld);p.applyMatrix4(m);let h={position:p.toArray(),rotation:u.rotation};if(s==="tangential"){let y=new Vt.Matrix4().extractRotation(c.matrixWorld),g=l.getTangentAt(d).applyMatrix4(y).add(p),x=new Vt.Matrix4().lookAt(p,g,k_),S=qd.setFromEuler(new Vt.Euler().setFromRotationMatrix(x)).multiplyScalar(Vt.MathUtils.RAD2DEG);h={...h,rotation:S.toArray()}}this.updateTransformState(h),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(j_)})}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()),o&&"cloner"in t&&t.cloner!==void 0&&(this.setFromClonerState(t.cloner,o),this.updateVisible()),this.updateTransformState(t,o)}get attachedSurfaceCloners(){return this.children.filter(t=>t instanceof Ar.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 Ar.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)}};var Ko=require("three");var Ue=require("three"),ay=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);e.thetaLength=Ue.MathUtils.clamp(e.thetaLength,0,360);let 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:a,thetaStart:s,thetaLength:c,radiusTop:u,radiusBottom:l,cornerRadius:d,cornerSegments:p,hollow:f}=n.parameters,m;return c===0?(m=new Ue.BufferGeometry,m.setAttribute("position",new Ue.Float32BufferAttribute([],3))):d||f?m=new ns(u,l,t,o,i,a,s,c*Math.PI/180,d,d,p,f):m=new Ue.CylinderGeometry(u,l,t,o,i,a,s,c*Math.PI/180),m.scale(1,1,e/r),Object.assign(m,{userData:{...n,type:"CylinderGeometry"}})}};function Xo(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function iy(n){return new Ue.Vector2(n.y,-n.x)}var ns=class extends Ue.BufferGeometry{constructor(r,e,t,o,i,a,s,c,u,l,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,a=a!==void 0?a:!1,s=s!==void 0?s:0,c=c!==void 0?c:Math.PI*2,a&&(u=0,l=0);let m=[],h=[],y=[],g=[],x=0,S=t/2,w=new Ue.Vector3,b=new Ue.Vector3;f&&r==0&&(r=u),f&&e==0&&(e=l);let T=new Ue.Vector2(r,S),_=new Ue.Vector2(e,-S),v=null,C=null,P=null,N=null,O=T.clone().sub(_),A=0,M=0,L=0;p>0&&(A=Math.min(r,e)*(1-p),M=r-A,L=e-A);let X=T.clone();X.x-=A;let R=Math.PI-O.angle(),Z=O.angle(),z=Math.tan(Z/2),V=Math.tan(R/2),W=z+V,$=p?W:V,Y=p?W:z;if(u=Math.min(u,(r-M)/$,O.length()/W),l=Math.min(l,(e-L)/Y,O.length()/W),u>0){let j=u/z;v=T.clone().sub(new Ue.Vector2(j,u)),p&&(P=v.clone(),P.x-=A-W*u),T.sub(O.clone().setLength(j))}if(l>0){let j=l/V;C=_.clone().sub(new Ue.Vector2(j,-l)),_.add(O.clone().setLength(j)),p&&(N=C.clone(),N.x-=A-W*l,X.sub(O.clone().setLength(j)))}O=T.clone().sub(_);let q=O.length()<.5,k=[];for(let j=0;j<=o;j++){let D=[],ne=j/o,ee=ne*c+s,K=new Ue.Vector2(Math.sin(ee),Math.cos(ee));N&&C?(U(D,ne,K,R,l,N,-1,!0),U(D,ne,K,Z,l,C,-1,!1)):C?(B(D,K,C.x,0,-1),U(D,ne,K,Z,l,C,-1,!1)):a||B(D,K,e,L,-1);let te=iy(O).normalize();if(Xo(te,K,w),!q)for(let Q=0;Q<=i;Q++){let le=Q/i,ie=O.clone().multiplyScalar(le).add(_);Xo(ie,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ne,.5+b.y/t),D.push(x++)}if(P&&v?(U(D,ne,K,R,u,v,1,!1),U(D,ne,K,Z,u,P,1,!0)):v?(U(D,ne,K,R,u,v,1,!1),B(D,K,v.x,0,1)):a||B(D,K,r,M,1),p&&!q){let Q=iy(O).multiplyScalar(-1).normalize();Xo(Q,K,w);for(let le=0;le<=i;le++){let ie=le/i,ae=O.clone().multiplyScalar(-ie).add(X);Xo(ae,K,b),h.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ne,.5+b.y/t),D.push(x++)}}p&&!a&&D.push(D[0]),k.push(D)}for(let j=0;j<k.length-1;j++)for(let D=0;D<k[0].length-1;D++){if(a&&p&&D==i)continue;let ne=k[j][D],ee=k[j+1][D],K=k[j+1][D+1],te=k[j][D+1],Q=h[K*3+0],le=h[K*3+2];m.push(ne,ee,te),(Q!=0||le!=0)&&m.push(ee,K,te)}c<Math.PI*2&&(F(-1,k[0],s),F(1,k[k.length-1],s+c)),this.setIndex(m),this.setAttribute("position",new Ue.Float32BufferAttribute(h,3)),this.setAttribute("normal",new Ue.Float32BufferAttribute(y,3)),this.setAttribute("uv",new Ue.Float32BufferAttribute(g,2));function U(j,D,ne,ee,K,te,Q,le){for(let ie=0;ie<d+1;ie++){let ae=ie/d,de=Q<0?ae:1-ae;le&&(de-=1),de*=ee;let ce=new Ue.Vector2(Math.sin(de),Math.cos(de)*Q),ue=ce.clone().multiplyScalar(K).add(te);Xo(ue,ne,b),h.push(b.x,b.y,b.z),Xo(ce,ne,w),y.push(w.x,w.y,w.z),g.push(D,.5+b.y/t),j.push(x++)}}function B(j,D,ne,ee,K){let te=new Ue.Vector3,Q=new Ue.Vector2,le=[ne,ee];K<0&&le.reverse();for(let ie of le)Q.set(ie,S*K),Xo(Q,D,te),h.push(te.x,te.y,te.z),y.push(0,K,0),g.push(.5,.5),j.push(x++)}function F(j,D,ne){let ee=new Ue.Vector2(Math.sin(ne),Math.cos(ne)),K=new Ue.Vector2(-Math.cos(ne),Math.sin(ne)),te=new Ue.Vector3,Q=j<0?(ae,de,ce)=>m.push(ae,de,ce):(ae,de,ce)=>m.push(ae,ce,de),le=new Ue.Vector2((r+e+M+L)/4,0);Xo(le,ee,te),h.push(te.x,te.y,te.z),y.push(K.x,0,K.y),g.push(.5,.5);let ie=x++;for(let ae of D){let de=h.slice(ae*3,ae*3+3);h.push(...de),y.push(K.x,0,K.y);let ce=g.slice(ae*2,ae*2+2);g.push(...ce),x++}for(let ae=ie+1;ae<x-1;ae++)Q(ie,ae,ae+1);Q(ie,x-1,ie+1)}}};var sy=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 e.thetaLength=Ko.MathUtils.clamp(e.thetaLength,0,360),{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:a,thetaStart:s,thetaLength:c,cornerRadiusTop:u,cornerRadiusBottom:l,cornerSegments:d}=n.parameters,p;return c===0?(p=new Ko.BufferGeometry,p.setAttribute("position",new Ko.Float32BufferAttribute([],3))):u>0||l>0||c<360?p=new ns(0,r/2,t,o,i,a,s,c*Math.PI/180,u,l,d,0,!0):p=new Ko.ConeGeometry(r/2,t,o,i,a),p.scale(1,1,e/r),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var Zt=require("three"),ly=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:a,cornerRadius:s,cornerSegments:c}=n.parameters,u;return s==0?u=new Zt.BoxGeometry(r,e,t,o,i,a):u=new Yd(r,e,t,o,i,a,s,c),Object.assign(u,{userData:{...n,type:"CubeGeometry"}})}},$d=Math.PI/2,Yd=class extends Zt.BufferGeometry{constructor(r=1,e=1,t=1,o=1,i=1,a=1,s=0,c=4){super(),this.type="BoxGeometry";let u=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),c=Math.floor(c),s=Math.min(s,r/2,e/2,t/2);let l=[],d=[],p=[],f=[],m=0,h=0;y("z","y","x",-1,-1,t,e,r,a,i,0),y("z","y","x",1,-1,t,e,-r,a,i,1),y("x","z","y",1,1,r,t,e,o,a,2),y("x","z","y",1,-1,r,t,-e,o,a,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),s>0&&(g("z","y","x",-1,-1,1,t,e,r,a,0),g("z","y","x",1,-1,-1,t,e,r,a,1),g("z","y","x",-1,1,-1,t,e,r,a,1),g("z","y","x",1,1,1,t,e,r,a,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),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(l),this.setAttribute("position",new Zt.Float32BufferAttribute(d,3)),this.setAttribute("normal",new Zt.Float32BufferAttribute(p,3)),this.setAttribute("uv",new Zt.Float32BufferAttribute(f,2));function y(S,w,b,T,_,v,C,P,N,O,A){let M=(v-2*s)/N,L=(C-2*s)/O,X=v/2-s,R=C/2-s,Z=P/2,z=N+1,V=O+1,W=0,$=0,Y=new Zt.Vector3;for(let q=0;q<V;q++){let k=q*L-R;for(let U=0;U<z;U++){let B=U*M-X;Y[S]=B*T,Y[w]=k*_,Y[b]=Z,d.push(Y.x,Y.y,Y.z),Y[S]=0,Y[w]=0,Y[b]=P>0?1:-1,p.push(Y.x,Y.y,Y.z),f.push(U/N),f.push(1-q/O),W+=1}}for(let q=0;q<O;q++)for(let k=0;k<N;k++){let U=m+k+z*q,B=m+k+z*(q+1),F=m+(k+1)+z*(q+1),j=m+(k+1)+z*q;l.push(U,B,j),l.push(B,F,j),$+=6}u.addGroup(h,$,A),h+=$,m+=W}function g(S,w,b,T,_,v,C,P,N,O,A){let M=(C-2*s)/O,L=C/2-s,X=P/2-s,R=N/2,Z=O+1,z=0,V=0,W=new Zt.Vector3,$=new Zt.Vector3;for(let Y=0;Y<c+1;Y++){let q=Y/c*$d,k=Math.sin(q)*s,U=(1-Math.cos(q))*s,B=Math.sin(q),F=Math.cos(q);W[w]=(X+k)*_,W[b]=(R-U)*v,$[S]=0,$[w]=B*Math.sign(W[w]),$[b]=F*Math.sign(W[b]);for(let j=0;j<Z;j++){let D=j*M-L;W[S]=D*T,d.push(W.x,W.y,W.z),p.push($.x,$.y,$.z),f.push(j/O),f.push(0),z+=1}}for(let Y=0;Y<c;Y++)for(let q=0;q<O;q++){let k=m+q+Z*Y,U=m+q+Z*(Y+1),B=m+(q+1)+Z*(Y+1),F=m+(q+1)+Z*Y;l.push(k,U,F),l.push(U,B,F),V+=6}u.addGroup(h,V,A),h+=V,m+=z}function x(S,w,b){let T=new Zt.Vector3,_=new Zt.Vector3(r/2,e/2,t/2);_.subScalar(s);let v=[],C=S*w*b>0?(N,O,A)=>l.push(N,O,A):(N,O,A)=>l.push(N,A,O);for(let N=0;N<=c;N++){let O=[],A=$d*(1-N/c),M=Math.cos(A),L=Math.sin(A),X=0;for(let R=0;R<=N;R++){let Z=Math.cos(X),z=Math.sin(X);T.x=M*Z,T.y=L,T.z=M*z;let V=_.clone().addScaledVector(T,s);d.push(S*V.x,w*V.y,b*V.z),p.push(S*T.x,w*T.y,b*T.z),f.push(0,0),O.push(m++),X+=$d/N}v.push(O)}let P=v.length-1;for(let N=0;N<P;N++){let O=v[N],A=v[N+1],M=O.length-1;C(O[0],A[1],A[0]);for(let L=1;L<=M;L++)C(O[L-1],O[L],A[L]),C(O[L],A[L+1],A[L])}}}};var it=require("three"),Zo=class extends it.BufferGeometry{constructor(r=[],e=[],t="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],c=[],u=[];l(),d(),this.setAttribute("position",new it.Float32BufferAttribute(s,3)),this.setAttribute("normal",new it.Float32BufferAttribute(u,3)),this.setAttribute("uv",new it.Float32BufferAttribute(c,2));return;function l(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],m=new it.Vector3,h=m.clone(),y=new it.Triangle,g=i*o,x=o-g,S=a+1,w=new it.Vector3,b=(z,V)=>w.subVectors(z,V).normalize(),T=(z,V)=>Array(z).fill(void 0).map(V),_=T(r.length/3,(z,V)=>new it.Vector3().fromArray(r,V*3).setLength(o)),v=[],C=1e6;for(let z=0;z<_.length;z++){let V=_[z],W=[],$,Y,q,k=1e10,U=-1;for(;(U=e.indexOf(z,U+1))!=-1;){let D=U-U%3;$=e[D+(U+1)%3],Y=e[D+(U+2)%3],q=V.distanceToSquared(_[$]),k=Math.min(k,q),W.push([$,Y,q])}k+=1e-6;let B=[],F=0,j=W.length;for(let D=0;D<j;D++){[$,Y,q]=W[F];let ne=v[$]?.includes(z)==!0;q<=k&&B.push($+ +ne*C),F=W.findIndex(ee=>ee[0]==Y)}v.push(B)}let P=[];{let z=0,V=0,W,$,Y=f==3;for(let q=0;q<=a;q++){W=q*(q+1)/2,$=(q+1)*(q+2)/2;for(let k=0;k<a-q;k++)[z,V]=[W+k+q+2,$+k+q+3],P.push(W,$,...Y?[V,W]:[z,$],V,z),[W,$]=[z,V];P.push(W,$,W+a+2)}}let N=m.clone(),O=m.clone(),A=m.clone(),M=m.clone(),L=m.clone(),X=[],R=T(_.length,()=>T(f,()=>m.clone()));for(let z=0;z<_.length;z++){m.copy(_[z]).normalize(),N.copy(m).multiplyScalar(x);let V=v[z];for(let B=0;B<V.length;B++){let F=V[B],j=V[(B+1)%f];y.setFromPointsAndIndices(_,z,F%C,j%C),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(N,R[z][B])}let W=[],$=[],Y=[],q=new it.Vector3;a==0&&[...R[z]].reduce((B,F)=>B.add(F),q).multiplyScalar(1/f);for(let B=0;B<f;B++){let F=[],j=(B-1+f)%f,D=R[z][j],ne=R[z][B];m.copy(D).sub(N),h.copy(ne).sub(N);let ee=N.angleTo(m),K=m.angleTo(h),te=Math.cos(ee)*g;a==0?O.copy(q):O.copy(N).setLength(x+te),$.push(te);let Q=[O,D,ne];for(let le=0;le<2;le++){let ie=Q[le],ae=Q[le+1];M.subVectors(ie,N),L.subVectors(ae,N),A.crossVectors(M,L).normalize();for(let de=0;de<S;de++){let ce=[ee,K][le]*de/S;m.copy(M).applyAxisAngle(A,ce).add(N),W.push(m.clone()),le&&(b(m,N),F.push([de==0?ie:m.clone(),w.clone()]))}le&&(b(ae,N),F.push([ae,w.clone()]))}Y.push(F)}X.push(Y);let k=2*S,U=2;for(let B=0;B<f;B++){let F=k*B,j=k*((B+1)%f),D=[W[F]];for(let ee=1;ee<S;ee++){M=W[F+ee],L=W[j+ee],D.push(M);for(let K=1,te=ee-U+1;K<=te;K++)m.lerpVectors(M,L,K/(te+1)),m.sub(N).setLength($[B]).add(N),D.push(m.clone());D.push(L)}for(let ee=0;ee<S;ee++)D.push(W[ee+S+F]);D.push(W[j+S]);let ne=P.map(ee=>D[ee]);s.push(...ne.map(ee=>[ee.x,ee.y,ee.z]).flat()),u.push(...ne.map(ee=>(b(ee,N),[w.x,w.y,w.z])).flat())}}let Z=[];for(let z=0;z<v.length;z++)for(let V=0;V<f;V++){let W=v[z][V];if(W<C){let $=v[W].findIndex(k=>k%C==z),Y=X[z][V],q=X[W][$];for(let k=0;k<S;k++){let U=Y[k],B=q[S-k],F=Y[k+1],j=q[S-(k+1)];[U,B,F,F,B,j].forEach(D=>{s.push(D[0].x,D[0].y,D[0].z),u.push(D[1].x,D[1].y,D[1].z)})}Z.push(Y[0][0],q[S][0],Y[S][0],q[0][0])}}for(;Z.length;){let z,V,W,$;[z,V]=Z.splice(0,2);let Y=[z];for(;z!=V;)Y.push(V),W=Z.indexOf(V),$=W%2,V=Z.splice(W-$,2)[1-$];w.subVectors(Y[0],Y[1]).cross(m.subVectors(Y[0],Y[2])).normalize();let q=w.dot(Y[0])<0;q&&w.negate();for(let k=1;k<=Y.length-2;k++)[Y[k+ +q],Y[k+1-+q],Y[0]].forEach(U=>{s.push(U.x,U.y,U.z),u.push(w.x,w.y,w.z)})}}function d(){let p=new it.Vector3;for(let _=0;_<s.length;_+=3){p.x=s[_+0],p.y=s[_+1],p.z=s[_+2];let v=b(p)/2/Math.PI+.5,C=T(p)/Math.PI+.5;c.push(v,1-C)}let f=new it.Vector3,m=new it.Vector3,h=new it.Vector3,y=new it.Vector3,g=new it.Vector2,x=new it.Vector2,S=new it.Vector2,w=(_,v,C,P)=>{P<0&&_.x===1&&(c[v]=_.x-1),C.x===0&&C.z===0&&(c[v]=P/2/Math.PI+.5)};for(let _=0,v=0;_<s.length;_+=9,v+=6){f.set(s[_+0],s[_+1],s[_+2]),m.set(s[_+3],s[_+4],s[_+5]),h.set(s[_+6],s[_+7],s[_+8]),g.set(c[v+0],c[v+1]),x.set(c[v+2],c[v+3]),S.set(c[v+4],c[v+5]),y.copy(f).add(m).add(h).divideScalar(3);let C=b(y);w(g,v+0,f,C),w(x,v+2,m,C),w(S,v+4,h,C)}for(let _=0;_<c.length;_+=6){let v=c[_+0],C=c[_+2],P=c[_+4],N=Math.max(v,C,P),O=Math.min(v,C,P);N>.9&&O<.1&&(v<.2&&(c[_+0]+=1),C<.2&&(c[_+2]+=1),P<.2&&(c[_+4]+=1))}function b(_){return Math.atan2(_.z,-_.x)}function T(_){return Math.atan2(-_.y,Math.sqrt(_.x*_.x+_.z*_.z))}}}static fromJSON(r){return new Zo(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var cy=require("three"),dy=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:a}=n.parameters,s=o===0&&i!==0?new is(r*.5,i,a):new cy.DodecahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},is=class extends Zo{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-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],s=[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(a,s,c,r,e,t),this.type=c}static fromJSON(r){return new is(r.radius,r.corner,r.cornerSides)}};var Le=require("three");var Se=require("three"),as=1e-12,Di=class{constructor(r){this.position=new Se.Vector2;this.startPosition=new Se.Vector2;this.uuid=Se.MathUtils.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 Di(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Bi=class extends Di{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Bi(this.parent).copy(this)}},Cr=class extends Di{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Bi(this),new Bi(this))}static create(e,t){let o=new Cr(e,new Se.Vector2(...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 a=this.controls[o];this.position.distanceTo(a.position)<=t?a.position.copy(this.position):a.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 Cr(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 Se.Vector2,t=new Se.Vector2){let[o,i]=this.computeTangents();return o&&i&&(uy(o,e),uy(i,t)),[e,t]}computeTangent(e=new Se.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new Se.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function uy(n,r=new Se.Vector2){let e=n.length();return r.set(-n.y/e,n.x/e)}var Kd=n=>n,Ri=new Se.Vector2,tc=new Se.Vector2,U_=new Se.Vector2,H_=new Se.Vector2,W_=new Se.Vector2,q_=new Se.Vector2,fy=new Se.Vector3,my=new Se.Vector3;function hy(n){let r=new Se.Vector2;r.addVectors(n.v0,Ri.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new Se.Vector2;return e.addVectors(n.v2,tc.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new Se.CubicBezierCurve(n.v0,r,e,n.v2)}function ss(n,r,e=Number.EPSILON){return Math.abs(n-r)<e}function $_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Y_(n,r,e=Number.EPSILON){return n.distanceTo(r)<e}function Zd(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 yy(n,r,e){return py(n,r)&&py(r,e)&&Xd(n.position,r.position,e.position)}function Xd(n,r,e){return Ri.copy(r).sub(n).cross(tc.copy(e).sub(n))===0}function gy(n,r,e,t,o){let i=Math.sqrt(Math.pow(r.x-n.x,2)+Math.pow(r.y-n.y,2)),a=(n.y+r.y)/2,s=(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(s+c,a+u),o.set(s-c,a-u),[t,o]}function xy(n,r,e){let t=n.distanceTo(e),o=r.distanceTo(e);return t<o?r:n}function vy(n,r,e,t,o,i){let a=r.x-n.x,s=r.y-n.y,c=e.x-n.x,u=e.y-n.y,l=Math.sqrt((a+c)*(a+c)+(s+u)*(s+u)),d;return Zd(r,n,e)>Math.PI&&(l*=-1),ss(u,s)?d=(s+u)*(t/l-.5)*8/3/(a-c):d=(a+c)*(t/l-.5)*8/3/(u-s),o.set(r.x-d*s,r.y+d*a),i.set(e.x+d*u,e.y-d*c),[o,i]}function Qd(n,r){return n.position.equals(n.controls[1].position)&&r.position.equals(r.controls[0].position)}function py(n,r){return Xd(n.position,n.controls[1].position,r.position)&&Xd(n.position,r.controls[0].position,r.position)}function by(n,r,e,t,o=.5){let i=Ri.subVectors(r,n).multiplyScalar(o).add(n),a=tc.subVectors(e,r).multiplyScalar(o).add(r),s=U_.subVectors(t,e).multiplyScalar(o).add(e),c=i,u=H_.subVectors(a,i).multiplyScalar(o).add(i),l=W_.subVectors(s,a).multiplyScalar(o).add(a),d=s,p=q_.subVectors(l,u).multiplyScalar(o).add(u);return[n.x,n.y,c.x,c.y,u.x,u.y,p.x,p.y,l.x,l.y,d.x,d.y,t.x,t.y]}function Sy(n,r,e=12,t=!0){let o=my.set(0,0,0),i,a=0,s=[];for(let c=0;c<r.length;c++){let u=Kd(r[c]),l=Ri,d=Qo(u,e);s.push(d);for(let p=0;p<=d;p++)if(u instanceof Se.CubicBezierCurve||u instanceof Se.QuadraticBezierCurve||u instanceof Se.LineCurve){if(u.getPoint(p/d,l),o.set(l.x,l.y,0),i!==void 0&&Y_(i,o))continue;i===void 0&&(i=fy),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return t&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function wy(n,r,e,t=12,o=!0){let i=my.set(0,0,0),a=0,s=[];for(let c=0;c<r.length;c++){if(e[c]===!1)continue;let u,l=Kd(r[c]),d=Ri,p=Qo(l,t);s.push(p);for(let f=0;f<=p;f++)if(l instanceof Se.CubicBezierCurve||l instanceof Se.QuadraticBezierCurve||l instanceof Se.LineCurve){if(l.getPoint(f/p,d),i.set(d.x,d.y,0),u?.equals(i))continue;u===void 0?u=fy:(n.setXYZ(a,u.x,u.y,u.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),u.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Jd(n,r=12,e=!1){let t=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let c=Qo(a.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=c),s+=c}a.curveAfter!==void 0&&(s+=Qo(a.curveAfter,r)),t.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(t[n.length-1]+=Qo(n[0].roundedCurveCorner,r)*.5),t}function Qo(n,r=12){return n&&n instanceof Se.EllipseCurve?r*2:n&&(n instanceof Se.LineCurve||n instanceof Se.LineCurve3)?1:n&&n instanceof Se.SplineCurve?r*n.points.length:r}function Ty(n,r,e=12,t=!0){let o,i=0;for(let a=0;a<r.length;a++){let s=Kd(r[a]),c=Qo(s,e),u=Ri;for(let l=0;l<=c;l++)if(s instanceof Se.CubicBezierCurve||s instanceof Se.QuadraticBezierCurve||s instanceof Se.LineCurve){if(s.getPoint(l/c,u),o!==void 0&&$_(o,u,as))continue;o===void 0&&(o=tc),o.copy(u),n.push(u.x,u.y),i++}}return ss(n[0],n[n.length-2],as)&&ss(n[1],n[n.length-1],as)&&(n.pop(),n.pop()),t&&i>1&&!(ss(n[i-1],n[1],as)&&ss(n[i-2],n[0],as))&&(n.push(n[0],n[1]),i++),n}var eu=new Le.Vector2,X_=new Le.Vector2,K_=new Le.Vector2,Z_=new Le.Vector2,Q_=new Le.Vector2,J_=new Le.Vector2,Ee=class extends Le.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.plane=new Le.Plane(new Le.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Le.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let i=new Ee;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Cr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Ee.createFromState(a)),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 a=0,s=this.shapeHoles.length;a<s;a++){let c=this.shapeHoles[a],u=c.points.length,l=c.getPointIndexById(e);if(l<0)i+=u;else return l+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 a=this.shapeHoles[o],s=e-t;if(s<=a.points.length-1)return a.points[s];t+=a.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 a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return t+s;t+=a.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=eu.set(e,t);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,t);this._update()}createPoint(e,t=0,o=Le.MathUtils.generateUUID()){let i;e instanceof Le.Vector2?i=e:i=new Le.Vector2(e,t);let a=new Cr(o,i);return a.roundness=this.roundness,a}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 a=this.shapeHoles[t].getPointByUuid(e);if(a)return a}}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 Sy(e,o?this.roundedCurves:this.curves,t,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Jd(this.points,e,!1),this.roundedCurveDivisions=Jd(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return wy(e,this.curves,t,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Ty(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,a=0;t&&this.points[0].roundedCurveCorner!==void 0&&(a=Qo(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((c,u)=>c+u,0));for(let c=0,u=i.length;c<u;c++){let l=i[c];if(s<o+l)return[c,(s-o+1)/l];o+=l}return[0,1]}getCurveT(e,t,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,c=s[e];if(Qd(i,a)){let d=i.position.distanceTo(a.position);return i.position.distanceTo(eu.set(o.x,o.y))/d}let u=0;for(let d=0;d<e;d++)u+=s[d];return(t-u)/c}dispose(){}_applyCurveForPoint(e,t){Qd(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 a=this.points[t-1];this._applyCurveForPoint(i,a)}}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 a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],c=this.points[o+1]??this.points[0],u=a.roundness,l=s&&c&&yy(s,a,c);if(!a.controlsMoved()&&u>0&&!l){let d=a.curveBefore,p=a.curveAfter;if(d===void 0||p===void 0)continue;let f=a.roundedCurveBefore,m=a.roundedCurveAfter,h=d.getLength(),y=p.getLength(),g=Math.min(u,h*.499),x=Math.min(u,y*.499),S=Math.min(g,x),w=1-S/h,b=S/y,T=d.getPointAt(w,eu),_=p.getPointAt(b,X_);this._subSplitCurve(d,f,w,T,void 0),this._subSplitCurve(p,m,b,void 0,_);let v;if(this.useCubicForRoundedCorners){let C=Zd(T,a.position,_)/2,P=Math.tan(C)*T.distanceTo(a.position),[N,O]=gy(T,_,P,K_,Z_),A=xy(N,O,a.position),[M,L]=vy(A,T,_,P,Q_,J_);v=new Le.CubicBezierCurve(T.clone(),M.clone(),L.clone(),_.clone())}else v=new Le.QuadraticBezierCurve(T.clone(),a.position.clone(),_.clone());a.roundedCurveCorner=v,this.roundedCurves.splice(o+t,0,v),t++}}}}_subSplitCurve(e,t,o,i,a){if(e instanceof Le.LineCurve)i!==void 0&&t.v2.copy(i),a!==void 0&&t.v1.copy(a);else{let s=e,c=t,u=s.getUtoTmapping(o,0),l=by(s.v0,s.v1,s.v2,s.v3,u);return i!==void 0&&(c.v0.set(l[0],l[1]),c.v1.set(l[2],l[3]),c.v2.set(l[4],l[5]),c.v3.set(l[6],l[7])),a!==void 0&&(c.v0.set(l[6],l[7]),c.v1.set(l[8],l[9]),c.v2.set(l[10],l[11]),c.v3.set(l[12],l[13])),c}return t}clone(){let e=new Ee(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,a=e.points[i+0],s=e.points[i+1],c=e.points[i+2],u=e.points[i+3],l=e.points[i+4],d=e.points[i+5],p=e.points[i+6],f=new Cr(Le.MathUtils.generateUUID(),new Le.Vector2(a,s));f.controls[0].position.set(c,u),f.controls[1].position.set(l,d),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Ee;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,t=!1){this.isText=t;let o=(a,s)=>{s instanceof Le.CubicBezierCurve&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],c,u;for(c=0,u=a.length;c<u;c++)a[c]instanceof Le.QuadraticBezierCurve&&(a[c]=hy(a[c]));for(c=0,u=a.length;c<u;c++){let p=a[c],f=c>0?a[c-1]:null,m;p instanceof Le.CubicBezierCurve?(m=this.createPoint(p.v0),m.controls[1].position.copy(p.v1)):p instanceof Le.LineCurve&&(m=this.createPoint(p.v1)),m!==void 0&&(f!==null&&o(m,f),s.push(m))}let l=a[a.length-1],d=!1;return l instanceof Le.CubicBezierCurve?l.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(l.v2),d=!0):l instanceof Le.LineCurve&&l.v2.equals(s[0].position)&&(d=!0),this.isClosed=d,s};return this.points=i(e.curves),e instanceof Le.Shape&&(this.shapeHoles=e.holes.map(a=>{let s=new Ee;return s.fromShape(a),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 ru=Math.PI*2;function tu({x:n,y:r},e,t,o,i){return{x:n*e+o,y:r*t+i}}function eP(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),a=Math.sin(n+r);return[{x:t-o*e,y:o+t*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function _y(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 tP(n,r,e,t,o,i,a,s,c,u){let l=Math.pow(o,2),d=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),m=l*d-l*f-d*p;m<0&&(m=0),m/=l*f+d*p,m=Math.sqrt(m)*(c===u?-1:1);let h=m*o/i*s,y=m*-i/o*a,g=h+(n+e)/2,x=y+(r+t)/2,S=(a-h)/o,w=(s-y)/i,b=(-a-h)/o,T=(-s-y)/i,_=_y(1,0,S,w),v=_y(S,w,b,T);return!u&&v>0&&(v-=ru),u&&v<0&&(v+=ru),{centerx:g,centery:x,ang1:_,ang2:v}}function Py({px:n,py:r,cx:e,cy:t,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let c=[];if(o===0||i===0)return[];let u=(n-e)/2,l=(r-t)/2;if(u===0&&l===0)return[];o=Math.abs(o),i=Math.abs(i);let d=Math.pow(u,2)/Math.pow(o,2)+Math.pow(l,2)/Math.pow(i,2);d>1&&(o*=Math.sqrt(d),i*=Math.sqrt(d));let p=tP(n,r,e,t,o,i,u,l,a,s),{ang1:f,ang2:m}=p,{centerx:h,centery:y}=p,g=Math.abs(m)/(ru/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);m/=x;for(let S=0;S<x;S++)c.push(eP(f,m)),f+=m;return c.map(S=>{let{x:w,y:b}=tu(S[0],o,i,h,y),{x:T,y:_}=tu(S[1],o,i,h,y),{x:v,y:C}=tu(S[2],o,i,h,y);return{x1:w,y1:b,x2:T,y2:_,x:v,y:C}})}var Tn=require("three");var Ce;(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"})(Ce||(Ce={}));var et;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(et||(et={}));function he(n,r){if(!n)throw r||"Assertion Failed!"}var pe=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){he(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){he(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){he(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){he(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 a,s,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)?(a=n.edgeEval(r,t,e),s=n.edgeEval(t,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,e.s)):(a=n.edgeSign(r,t,e),s=-n.edgeSign(r,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,t.s,s,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)?(a=n.transEval(r,t,e),s=n.transEval(t,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,e.t)):(a=n.transSign(r,t,e),s=-n.transSign(r,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,t.t,s,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}(),rc=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}(),Gi=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}(),Oy=function(){function n(){var r=new Gi,e=new ls,t=new rc(0),o=new rc(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 rc(0),t=new rc(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;he(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 a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(r,e,t){var o=r;he(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 a=e;do a.Lface=o,a=a.Lnext;while(a!==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,a=r.next;a.prev=i,i.next=a},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,a=r.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var r=new Gi,e=new Gi,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 Gi;this.makeVertex_(i,e,r.Org),r.Org.anEdge=r}if(!t){var a=new ls;this.makeFace_(a,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 Gi;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 a=new ls;this.makeFace_(a,o,r.Lface)}return o},n.prototype.zapFace=function(r){var e=r.anEdge,t,o,i,a,s;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);a=r.prev,s=r.next,s.prev=a,a.next=s},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,a,s,c;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,a=t.Org;o=t.Lnext,i=t.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),c=this.countFaceVerts_(i.Lface),s+c-2<=r&&pe.vertCCW(t.Lprev.Org,t.Org,i.Lnext.Lnext.Org)&&pe.vertCCW(i.Lprev.Org,i.Org,t.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),t=null,i=null)),!(t&&t.Lnext.Org===a);)t=o;return!0},n.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,i,a,s,c,u;for(i=r,i=r;(o=i.next)!==r;i=o){he(o.prev===i),c=o.anEdge;do he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c),he(c.Lface===o),c=c.Lnext;while(c!==o.anEdge)}for(he(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){he(a.prev===s),c=a.anEdge;do he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c),he(c.Org===a),c=c.Onext;while(c!==a.anEdge)}for(he(a.prev===s&&a.anEdge===null),u=t,u=t;(c=u.next)!==t;u=c)he(c.Sym.next===u.Sym),he(c.Sym!==c),he(c.Sym.Sym===c),he(c.Org!==null),he(c.Dst!==null),he(c.Lnext.Onext.Sym===c),he(c.Onext.Sym.Lnext===c);he(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}(),Ay=function(){function n(){this.handle=null}return n}(),Cy=function(){function n(){this.key=null,this.node=0}return n}(),rP=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 Ay,this.handles[t]=new Cy;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,a;for(o=e[r].handle;;){if(a=r<<1,a<this.size&&this.leq(t[e[a+1].handle].key,t[e[a].handle].key)&&++a,he(a<=this.max),i=e[a].handle,a>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=a}},n.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,i,a;for(o=e[r].handle;;){if(a=r>>1,i=e[a].handle,a===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=a}},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 Ay;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Cy}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;he(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}(),ou=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}(),Ny=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),oP=function(){function n(r,e){this.frame=r,this.leq=e,this.head=new Ny,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 Ny;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}(),nP=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,a=t.eUp;if(i.Dst===o)return a.Dst===o?pe.vertLeq(i.Org,a.Org)?pe.edgeSign(a.Dst,i.Org,a.Org)<=0:pe.edgeSign(i.Dst,a.Org,i.Org)>=0:pe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return pe.edgeSign(i.Dst,o,i.Org)>=0;var s=pe.edgeEval(i.Dst,o,i.Org),c=pe.edgeEval(a.Dst,o,a.Org);return s>=c},n.deleteRegion=function(r,e){e.fixUpperEdge&&he(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},n.fixUpperEdge=function(r,e,t){he(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 ou;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 Ce.ODD:return(e&1)!==0;case Ce.NONZERO:return e!==0;case Ce.POSITIVE:return e>0;case Ce.NEGATIVE:return e<0;case Ce.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,a=e,s=e.eUp;a!==t;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(r,a);break}o=r.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(r,i,o)}s.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(s,o)),n.finishRegion(r,a),s=i.eUp,a=i}return s},n.addRightEdges=function(r,e,t,o,i,a){var s,c,u,l,d=!0;u=t;do he(pe.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,l=i;s=n.regionBelow(c),u=s.eUp.Sym,u.Org===l.Org;)u.Onext!==l&&(r.mesh.splice(u.Oprev,u),r.mesh.splice(l.Oprev,u)),s.windingNumber=c.windingNumber-u.winding,s.inside=n.isWindingInside(r,s.windingNumber),c.dirty=!0,!d&&n.checkForRightSplice(r,c)&&(n.addWinding(u,l),n.deleteRegion(r,c),r.mesh.delete(l)),d=!1,c=s,l=u;c.dirty=!0,he(c.windingNumber-u.winding===s.windingNumber),a&&n.walkDirtyRegions(r,c)},n.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},n.vertexWeights=function(r,e,t){var o=pe.vertL1dist(e,r),i=pe.vertL1dist(t,r),a=.5*i/(o+i),s=.5*o/(o+i);r.coords[0]+=a*e.coords[0]+s*t.coords[0],r.coords[1]+=a*e.coords[1]+s*t.coords[1],r.coords[2]+=a*e.coords[2]+s*t.coords[2]},n.getIntersectData=function(r,e,t,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,t,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp;if(pe.vertLeq(o.Org,i.Org)){if(pe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;pe.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(pe.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,a;if(he(!pe.vertEq(o.Dst,i.Dst)),pe.vertLeq(o.Dst,i.Dst)){if(pe.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=r.mesh.splitEdge(o),r.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(pe.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=t.dirty=!0,a=r.mesh.splitEdge(i),r.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(r,e){var t=n.regionBelow(e),o=e.eUp,i=t.eUp,a=o.Org,s=i.Org,c=o.Dst,u=i.Dst,l,d,p=new Gi,f,m;if(he(!pe.vertEq(u,c)),he(pe.edgeSign(c,r.event,a)<=0),he(pe.edgeSign(u,r.event,s)>=0),he(a!==r.event&&s!==r.event),he(!e.fixUpperEdge&&!t.fixUpperEdge),a===s||(l=Math.min(a.t,c.t),d=Math.max(s.t,u.t),l>d))return!1;if(pe.vertLeq(a,s)){if(pe.edgeSign(u,a,s)>0)return!1}else if(pe.edgeSign(c,s,a)<0)return!1;return n.debugEvent(r),pe.intersect(c,a,u,s,p),he(Math.min(a.t,c.t)<=p.t),he(p.t<=Math.max(s.t,u.t)),he(Math.min(u.s,c.s)<=p.s),he(p.s<=Math.max(s.s,a.s)),pe.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),f=pe.vertLeq(a,s)?a:s,pe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),pe.vertEq(p,a)||pe.vertEq(p,s)?(n.checkForRightSplice(r,e),!1):!pe.vertEq(c,r.event)&&pe.edgeSign(c,r.event,p)>=0||!pe.vertEq(u,r.event)&&pe.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):(pe.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),pe.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,a,c,s,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,a=n.regionBelow(e),s=e.eUp,c=a.eUp,u=!1;if(s.Dst!==c.Dst&&n.checkForIntersect(r,e),pe.vertEq(s.Org,r.event)&&(r.mesh.splice(i.Oprev,s),e=n.topLeftRegion(r,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(r,n.regionBelow(e),a),u=!0),pe.vertEq(c.Org,r.event)&&(r.mesh.splice(t,c.Oprev),t=n.finishLeftRegions(r,a,null),u=!0),u){n.addRightEdges(r,e,t.Onext,i,i,!0);return}pe.vertLeq(c.Org,s.Org)?o=c.Oprev:o=s,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,a,s,c;if(o=e.eUp,pe.vertEq(o.Org,t)){he(!1),n.spliceMergeVertices(r,o,t.anEdge);return}if(!pe.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}he(!1),e=n.topRightRegion(e),c=n.regionBelow(e),a=c.eUp.Sym,i=s=a.Onext,c.fixUpperEdge&&(he(i!==a),n.deleteRegion(r,c),r.mesh.delete(a),a=i.Oprev),r.mesh.splice(t.anEdge,a),pe.edgeGoesLeft(i)||(i=null),n.addRightEdges(r,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(r,e){var t,o,i,a,s,c,u=new ou;if(u.eUp=e.anEdge.Sym,t=r.dict.search(u).key,o=n.regionBelow(t),!!o){if(a=t.eUp,s=o.eUp,pe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(r,t,e);return}if(i=pe.vertLeq(s.Dst,a.Dst)?t:o,t.inside||i.fixUpperEdge){if(i===t)c=r.mesh.connect(e.anEdge.Sym,a.Lnext);else{var l=r.mesh.connect(s.Dnext,e.anEdge);c=l.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);he(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(r,i,null);s.Onext===a?n.connectRightVertex(r,o,s):n.addRightEdges(r,o,s.Onext,a,a,!0)},n.addSentinel=function(r,e,t,o){var i=new ou,a=r.mesh.makeEdge();a.Org.s=t,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,r.event=a.Dst,i.eUp=a,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 oP(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,a=r.bmin[1]-t,s=r.bmax[1]+t;n.addSentinel(r,o,i,a),n.addSentinel(r,o,i,s)},n.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(he(e.fixUpperEdge),he(++t===1)),he(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,pe.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 rP(i,pe.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,he(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||!pe.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}(),iP=function(){function n(){this.mesh=new Oy,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=Ce.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,a,s,c=[0,0,0],u=[0,0,0],l=[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 x=0;if(c[1]-u[1]>c[0]-u[0]&&(x=1),c[2]-u[2]>c[x]-u[x]&&(x=2),u[x]>=c[x]){r[0]=0,r[1]=0,r[2]=1;return}for(s=0,t=m[x],o=f[x],l[0]=t.coords[0]-o.coords[0],l[1]=t.coords[1]-o.coords[1],l[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]=l[1]*d[2]-l[2]*d[1],p[1]=l[2]*d[0]-l[0]*d[2],p[2]=l[0]*d[1]-l[1]*d[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,r[0]=p[0],r[1]=p[1],r[2]=p[2]);s<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(l)]=1)},n.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,i=0,a=r.next;a!==r;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.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 a=this.longAxis_(e);t[a]=0,t[(a+1)%3]=1,t[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=r.next;s!==r;s=s.next)s.s=this.dot_(s.coords,t),s.t=this.dot_(s.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(;pe.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;pe.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var i=void 0;t.Lnext!==o;)if(pe.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(pe.edgeGoesLeft(o.Lnext)||pe.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&&(pe.edgeGoesRight(t.Lprev)||pe.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,a=0,s=0,c;t>3&&r.mergeConvexFaces(t);for(var u=r.vHead.next;u!==r.vHead;u=u.next)u.n=-1;for(var l=r.fHead.next;l!==r.fHead;l=l.next)if(l.n=-1,!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;u.n===-1&&(u.n=s,s++),c++,i=i.Lnext}while(i!==l.anEdge);if(c>t)throw"Face vertex greater that support polygon";l.n=a,++a}this.elementCount=a,e===et.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*t,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;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,l=r.fHead.next;l!==r.fHead;l=l.next)if(!!l.inside){i=l.anEdge,c=0;do{var u=i.Org;this.elements[p++]=u.n,c++,i=i.Lnext}while(i!==l.anEdge);for(var f=c;f<t;++f)this.elements[p++]=-1;if(e===et.CONNECTED_POLYGONS){i=l.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==l.anEdge);for(var m=c;m<t;++m)this.elements[p++]=-1}}},n.prototype.outputContours_=function(r,e){var t,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){o=t=s.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,l=0;i=0;for(var s=r.fHead.next;s!==r.fHead;s=s.next)if(!!s.inside){a=0,o=t=s.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,a++,t=t.Lnext;while(t!==o);this.elements[l++]=i,this.elements[l++]=a,i+=a}},n.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Oy),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,a){if(r===void 0&&(r=Ce.ODD),e===void 0&&(e=et.POLYGONS),a===void 0&&(a=!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_(),nP.computeInterior(this,a);var s=this.mesh;return e===et.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===et.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,t,o),!0},n}();function Nr(n){var r=n.windingRule,e=r===void 0?Ce.ODD:r,t=n.elementType,o=t===void 0?et.POLYGONS:t,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,c=s===void 0?2:s,u=n.normal,l=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 iP;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(c||2,p[x]);return g.tesselate(e,o,a,c,l,m),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var uz=Ce.ODD,pz=Ce.NONZERO,fz=Ce.POSITIVE,mz=Ce.NEGATIVE,hz=Ce.ABS_GEQ_TWO,yz=et.POLYGONS,gz=et.CONNECTED_POLYGONS,xz=et.BOUNDARY_CONTOURS;var Ir=require("three");var oc=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*oc.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*oc.eSize,o=new ArrayBuffer(t),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*r);a+=3*r;let c=new Float32Array(o,a*i,3*r);a+=3*r;let u=new Float32Array(o,a*i,2*r);e?(s.set(this.positions.subarray(0,this.size*3)),c.set(this.normals.subarray(0,this.size*3)),u.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),c.set(this.normals),u.set(this.uvs)),this.buffer=o,this.positions=s,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)}},cs=oc;cs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ly=ja(Ey()),ds={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},lu={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},cu={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},su=(n,r)=>([e,t])=>(t<e&&(t+=r),(n>=e?n:n+r)<=t),en=class extends Ir.BufferGeometry{constructor(e,t,o=0,i=12,a=3,s=Ce.ODD,c=!1){super();this.forPathBevel=c;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._curveSegments=i,this._bevelSegmentsInput=a;let u=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(N=>{let O=N.extractShapePointsToFlatArray([],i),A=[];for(let M=O.length-1;M>=1;M-=2){let L=O[M-1],X=O[M-0];A.push(L,X)}return A}),d=[],p=[];for(let N=0;N<u.length;N+=2)p.push([u[N],u[N+1]]);d.push(p);for(let N=0;N<l.length;N++){let O=l[N],A=[];for(let M=0;M<O.length;M+=2)A.push([O[M],O[M+1]]);d.push(A)}let f;e.isText?f=new Ir.Box2().setFromPoints(e.points.map(O=>O.position)).getSize(new Ir.Vector2).length()*.1:d[0].length===0?f=o:f=(0,Ly.default)(d).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,t/2),this._bevelSegments=Math.floor(a));let m;try{m=Nr({windingRule:s,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{m=ds}let h;try{h=Nr({windingRule:Ce.ODD,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]})}catch{h=lu}if(!m)throw new Error("error generating geometry");let y=m.elementCount;if(h){m.elementCount+=h.elementCount;for(let N=0;N<h.elements.length;N++){let O=h.elements[N],A=N%2===0?m.vertexCount:0;m.elements.push(O+A)}for(let N=0;N<h.vertexIndices.length;N++){let O=h.vertexIndices[N],A=m.vertexCount;m.vertexIndices.push(O+A)}for(let N=0;N<h.vertices.length;N++){let O=h.vertices[N];m.vertices.push(O)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let N=0,O=m.vertexCount;N<O;N++){let A=N*2,M=m.vertices[A+0],L=m.vertices[A+1];M<g&&(g=M),M>x&&(x=M),L<S&&(S=L),L>w&&(w=L)}this._minX=g,this._minY=S,this._width=x-g,this._height=w-S,this._buffer=new cs(this._computeBufferEstimatedSize(m));let b=[],T=[];for(let N=m.elementCount-1;N>=0;N--){let O=N>=y,A=N*2,M=m.elements[A+0],L=m.elements[A+1],X=M+L,R={start:M,count:L,normals:[],continuous:[],concave:[]},Z=M,z=X-1,V=M+1,W=this._shape.roundedCurves.length;do{let U=Z-M,B=m.vertices[z*2+0],F=m.vertices[z*2+1],j=m.vertices[Z*2+0],D=m.vertices[Z*2+1],ne=m.vertices[V*2+0],ee=m.vertices[V*2+1],K=j-B,te=D-F,Q=Math.sqrt(K*K+te*te);K/=Q,te/=Q;let le=j-ne,ie=D-ee,ae=Math.sqrt(le*le+ie*ie);le/=ae,ie/=ae,R.normals[U*2+0]=-ie,R.normals[U*2+1]=le,R.concave[U]=K*ie-te*le>0;let de=m.vertexIndices[Z];if(Array.isArray(de))R.continuous[U]=!1;else{let[ce,ue]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(ue>0&&ue<1)R.continuous[U]=!0;else{let ge=ue===1?ce+1:ce-1;ge=(ge+W)%W;let Ne=ue===1?0:1,Ye=this._shape.roundedCurves[ce].getTangent(ue),Ie=this._shape.roundedCurves[ge].getTangent(Ne);R.continuous[U]=Ye.dot(Ie)>.95}}O&&(R.normals[U*2+0]*=-1,R.normals[U*2+1]*=-1),[z,Z,V]=[Z,V,V+1],V>=X&&(V-=L)}while(V!==M+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:m.vertices.slice(M*2,X*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((U,B)=>[B,B]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:m.vertices.slice(M*2,X*2)});let Y=0;for(let U=1;U<=this._bevelSegments;U++){let B=U/this._bevelSegments*Math.PI/2,F=(1-Math.cos(B))*this._bevel,j=[],D=[],ne=[],ee=[],K=0;for(let Q=0;Q<L;Q++){let le=Q*2,ie=(Q-1+L)%L*2,ae=m.vertices[R.start*2+le+0],de=m.vertices[R.start*2+le+1],ce=-R.normals[ie+0]*F,ue=-R.normals[ie+1]*F,ge=-R.normals[le+0]*F,Ne=-R.normals[le+1]*F;if(R.concave[Q]||!R.concave[Q]&&O){let Ye=Math.atan2(ue,ce),Ie=Math.atan2(Ne,ge);Ie>Ye&&(Ie-=Math.PI*2);let ke=Ie-Ye;if(R.continuous[Q]||O){let qt=Ye+ke/2,Te=Math.cos(qt)*F,mt=Math.sin(qt)*F;j[2*K+0]=ae+Te*(O?-1:1),j[2*K+1]=de+mt*(O?-1:1),ee[K]=Q,K++}else{let qt=Math.max(1,Math.floor(i/4*Math.abs(ke)/Math.PI));for(let Te=0;Te<=qt;Te++){let mt=Ye+ke*(Te/qt),bt=Math.cos(mt)*F,Fn=Math.sin(mt)*F;j[2*K+0]=ae+bt,j[2*K+1]=de+Fn,ee[K]=Q,K++}}}else j[2*K+0]=ae+ce,j[2*K+1]=de+ue,ee[K]=Q,D[Q]=K,K++,j[2*K+0]=ae,j[2*K+1]=de,ee[K]=Q,K++,j[2*K+0]=ae+ge,j[2*K+1]=de+Ne,ee[K]=Q,ne[Q]=K,K++}let te=Nr({windingRule:Ce.POSITIVE,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[j],edgeCreateCallback:Q=>{let ie=Q.Org.idx,ae=ee[ie],de=ee[(ie+1)%ee.length];Q.idx=[ae,de],Q.Sym.idx=[de,ae]},vertexIdCallback:Q=>{let le=Q.Lprev.idx;return[le?le[1]:0,Q.idx?Q.idx[0]:0]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${U}'th loop`);if(!te.vertexCount){let Q=(U-1)/this._bevelSegments*Math.PI/2;Y=(1-Math.sin(Q))*this._bevel;break}for(let Q=0;Q<te.vertexIndices.length;Q++){let[le,ie]=te.vertexIndices[Q];if(le===ie)continue;let ae=ie;ie<le&&(ae+=L);for(let de=le;de<ae;de++){let ce=de%L,ue=(de+1)%L;if(!R.continuous[ce]||!R.continuous[ue]){te.vertexIndices[Q]=[le,ce],te.vertexIndices.splice(Q+1,0,[ue,ie]),te.vertices.splice((Q+1)*2,0,te.vertices[Q*2],te.vertices[Q*2+1]);break}}}$.push({bevelI:U,angle:B,size:F,boundary:te,reverseMap:ee,insetPoints:j})}let q=(U,B,F)=>{let j=0,D=U.boundary.vertexIndices.length;for(;j<D&&F(U.boundary.vertexIndices[B]);)B=(B+1)%D,j++;return j},k=b.length;for(let U=1;U<$.length;U++){let B=$[U-1],F=$[U],j=B.boundary.vertexIndices.length,D=F.boundary.vertexIndices.length;if(!j||!D)break;let ne=R.concave.length,ee=0,K=su(ee,L);for(;!B.boundary.vertexIndices.filter(K).length||!F.boundary.vertexIndices.filter(K).length;)ee++,K=su(ee,L);let te=B.boundary.vertexIndices.findIndex(K),Q=F.boundary.vertexIndices.findIndex(K);do te=(te+1)%j;while(K(B.boundary.vertexIndices[te]));do Q=(Q+1)%D;while(K(F.boundary.vertexIndices[Q]));ee=(ee+1)%L;let le=ee,ie=0,ae=this._buildBevelVert(R,B,(te-1+j)%j,void 0,ie),de=this._buildBevelVert(R,F,(Q-1+D)%D,void 0,ie),ce=ae,ue=de,ge,Ne,Ye=!1;do{ie=(ee||ne)/ne,K=su(ee,L);let Ie=q(B,te,K),ke=q(F,Q,K),qt=Ye;if(Ye=!1,Ie&&!ke){for(let Te=0;Te<Ie;Te++)ge=this._buildBevelVert(R,B,(te+Te)%j,Te/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge;Ye=!0}else if(!Ie&&ke)for(let Te=0;Te<ke;Te++)Ne=this._buildBevelVert(R,F,(Q+Te)%D,Te/(ke-1),ie),b.push(ue.topN,ce.topP,Ne.topP),c===!1&&b.push(ce.bottomP,ue.bottomN,Ne.bottomP),ue=Ne;else if(Ie&&ke)if(ge=this._buildBevelVert(R,B,te,0,ie),Ne=this._buildBevelVert(R,F,Q,0,ie),qt?(b.push(ce.topN,Ne.topP,ue.topN),b.push(ce.topN,ge.topP,Ne.topP),c===!1&&(b.push(Ne.bottomP,ce.bottomN,ue.bottomN),b.push(Ne.bottomP,ge.bottomP,ce.bottomN))):(b.push(ue.topN,ce.topN,ge.topP),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&(b.push(ge.bottomP,ce.bottomN,ue.bottomN),b.push(ge.bottomP,ue.bottomN,Ne.bottomP))),ce=ge,ue=Ne,Ie===ke)for(let Te=1;Te<Ie;Te++)ge=this._buildBevelVert(R,B,(te+Te)%j,Te/(Ie-1),ie),Ne=this._buildBevelVert(R,F,(Q+Te)%D,Te/(ke-1),ie),b.push(ce.topN,ge.topP,ue.topN),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&(b.push(ge.bottomP,ce.bottomN,ue.bottomN),b.push(ge.bottomP,ue.bottomN,Ne.bottomP)),ce=ge,ue=Ne;else if(Ie>ke){let Te=Ie/ke,mt=0;for(let bt=1;bt<Ie;bt++)ge=this._buildBevelVert(R,B,(te+bt)%j,bt/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge,bt>(mt+1)*Te&&(mt++,Ne=this._buildBevelVert(R,F,(Q+mt)%D,mt/(ke-1),ie),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&b.push(ge.bottomP,ue.bottomN,Ne.bottomP),ue=Ne)}else{let Te=ke/Ie,mt=0;for(let bt=1;bt<ke;bt++)Ne=this._buildBevelVert(R,F,(Q+bt)%D,bt/(ke-1),ie),b.push(ue.topN,ge.topP,Ne.topP),c===!1&&b.push(ge.bottomP,ue.bottomN,Ne.bottomP),ue=Ne,bt>(mt+1)*Te&&(mt++,ge=this._buildBevelVert(R,B,(te+mt)%j,mt/(Ie-1),ie),b.push(ce.topN,ge.topP,ue.topN),c===!1&&b.push(ge.bottomP,ce.bottomN,ue.bottomN),ce=ge)}te=(te+Ie)%j,Q=(Q+ke)%D,ee=(ee+1)%ne}while(ee!==le)}if(c===!1&&this._depth>this._bevel*2&&this._buildWall($,R,b),O){let U=[];for(let B=b.length-1;B>=k+2;B-=3){let F=b[B-2],j=b[B-1],D=b[B-0];U.push(D,j,F)}b.splice(k,b.length-k,...U)}if(O){let U=[];for(let B=$[$.length-1].boundary.vertices.length-1;B>=1;B-=2){let F=$[$.length-1].boundary.vertices[B-1],j=$[$.length-1].boundary.vertices[B-0];U.push(F,j)}T.push(U)}if(!O){let U=$[$.length-1],B;try{B=Nr({windingRule:$.length>1?Ce.POSITIVE:Ce.ODD,elementType:et.POLYGONS,vertexSize:2,strict:!0,contours:[U.insetPoints,...T]})}catch{B=cu}if(!B)throw new Error("Error generating geometry for surface");l.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let F=0;F<B.elementCount*3;F+=3){let j=this._buildSurfaceVert(B,B.elements[F+0],Y),D=this._buildSurfaceVert(B,B.elements[F+1],Y),ne=this._buildSurfaceVert(B,B.elements[F+2],Y);b.push(j.top,D.top,ne.top),c===!1&&b.push(ne.bottom,D.bottom,j.bottom)}}this.vertexCache={}}this._buffer.shrink();let _=new Ir.BufferAttribute(Uint32Array.from(b),1),v=new Ir.BufferAttribute(this._buffer.positions,3),C=new Ir.BufferAttribute(this._buffer.normals,3),P=new Ir.BufferAttribute(this._buffer.uvs,2);v.needsUpdate=!0,C.needsUpdate=!0,P.needsUpdate=!0,_.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",C),this.setAttribute("uv",P),this.setIndex(_)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let c=this._buildBevelVert(t,i,a),u=this._buildBevelVert(t,i,(a+1)%s);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}_buildSurfaceVert(e,t,o){let i=t.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[t*2+0],s=e.vertices[t*2+1],c=(a-this._minX)/this._width,u=(s-this._minY)/this._height;this.forPathBevel&&(u=1);let l=this._buffer.get(this.forPathBevel?1:2),d=l*3,p=l*2,f={top:l+0,bottom:l+1};return this._buffer.positions[d+0]=a,this._buffer.positions[d+1]=s,this._buffer.positions[d+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[d+0]=0,this._buffer.normals[d+1]=0,this._buffer.normals[d+2]=1,this._buffer.uvs[p+0]=c,this._buffer.uvs[p+1]=u,this.forPathBevel===!1&&(this._buffer.positions[d+3]=a,this._buffer.positions[d+4]=s,this._buffer.positions[d+5]=o,this._buffer.normals[d+3]=0,this._buffer.normals[d+4]=0,this._buffer.normals[d+5]=-1,this._buffer.uvs[p+2]=c,this._buffer.uvs[p+3]=u),this.vertexCache[i]=f,f}_buildBevelVert(e,t,o,i=1,a){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[c,u]=t.boundary.vertexIndices[o],l,d,p,f;c!==u?(d=c,l=u,f=!1,p=e.continuous[d]&&e.continuous[l]):(l=c,d=(l-1+e.count)%e.count,f=e.concave[l]&&t.bevelI>0,p=e.continuous[l]||f);let m=Math.cos(t.angle),h=Math.sin(t.angle),y=o*2,g=l*2,x=d*2,S=t.boundary.vertices[y+0],w=t.boundary.vertices[y+1],b=(1-h)*this._bevel,T=(S-this._minX)/this._width,_=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(T=a),_=1);let v=e.normals[g+0],C=e.normals[g+1],P=e.normals[x+0],N=e.normals[x+1];if(f){let X=P-v,R=N-C;v=v+X*(1-i),C=C+R*(1-i);let Z=Math.sqrt(v*v+C*C);v/=Z,C/=Z}let O=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),A=O*3,M=O*2,L={i:o,fi:l,topP:O+0,topN:O+0,bottomP:O+1,bottomN:O+1,pathBevelUCoord:a};return this._buffer.positions[A+0]=S,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[A+0]=v*m,this._buffer.normals[A+1]=C*m,this._buffer.normals[A+2]=h,this._buffer.uvs[M+0]=T,this._buffer.uvs[M+1]=_,this.forPathBevel===!1&&(this._buffer.positions[A+3]=S,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=b,this._buffer.normals[A+3]=v*m,this._buffer.normals[A+4]=C*m,this._buffer.normals[A+5]=-h,this._buffer.uvs[M+2]=_,this._buffer.uvs[M+3]=T),p||(this.forPathBevel?(O+=1,A+=3,M+=2):(O+=2,A+=6,M+=4),L.topP=O+0,L.bottomP=O+1,this._buffer.positions[A+0]=S,this._buffer.positions[A+1]=w,this._buffer.positions[A+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[A+0]=P*m,this._buffer.normals[A+1]=N*m,this._buffer.normals[A+2]=h,this._buffer.uvs[M+0]=T,this._buffer.uvs[M+1]=_,this.forPathBevel===!1&&(this._buffer.positions[A+3]=S,this._buffer.positions[A+4]=w,this._buffer.positions[A+5]=b,this._buffer.normals[A+3]=P*m,this._buffer.normals[A+4]=N*m,this._buffer.normals[A+5]=-h,this._buffer.uvs[M+2]=_,this._buffer.uvs[M+3]=T)),this.vertexCache[s]=L,L}clone(){let e=new en(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Vi=class extends Tn.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ce.ODD;this.elementType=et.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ce.ODD,elementType:et.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),s,c=!0,u=!0,l,d;for(let m=0,h=i.length/2;m<h;m++){let y=m*2,g=i[y+0],x=i[y+1];if(l!==void 0&&g!==l&&(c=!1),d!==void 0&&x!==d&&(u=!1),l=g,d=x,!c&&!u)break}if(!c&&!u)try{s=Nr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=ds}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new Tn.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new Tn.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new Tn.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new Tn.BufferAttribute(new Uint32Array(f*3),1),s){let m=1/0,h=-1/0,y=1/0,g=-1/0;for(let w=0,b=p;w<b;w++){let T=w*2,_=s.vertices[T+0],v=s.vertices[T+1];_<m&&(m=_),_>h&&(h=_),v<y&&(y=v),v>g&&(g=v)}let x=h-m,S=g-y;for(let w=0,b=p;w<b;w++){let T=w*2,_=s.vertices[T+0],v=s.vertices[T+1],C=(_-m)/x,P=(v-y)/S;this._positionAttribute.setXYZ(w,_,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,C,P)}for(let w=0,b=f;w<b;w++){let T=w*3,_=s.elements[T+0],v=s.elements[T+1],C=s.elements[T+2];this._indexAttribute.setX(T+0,_),this._indexAttribute.setX(T+1,v),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,(s?.elementCount??1)*3)}clone(){let e=new Vi(this._shape,this._curveSegments);return e.userData=yo(this.userData),e}};var zi=class extends en{constructor(e,t,o=0,i=12,a=3,s=Ce.ODD){super(e,t,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,t,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let c=this._buildBevelVert(t,i,a),u=this._buildBevelVert(t,i,(a+1)%s);o.push(u.topP,c.topN,c.bottomN),o.push(u.topP,c.bottomN,u.bottomP)}}clone(){let e=new zi(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=yo(this.userData),e}};var Qt=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:Ce.ODD},n.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??r?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Ee?(a.width!==t||a.height!==o)&&a.applySize(t,o):a=new Ee(t,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let c=a??new Ee(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:i,roundness:s}),shape:c}}static build(n){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return r<=0?s=new Vi(n.shape,o,{windingRule:a}):s=new zi(n.shape,r,e,o,t,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var Mr=require("three"),By=Math.PI*2,Fi=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 e.angle=Mr.MathUtils.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Ee?n.shape:new Ee,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:a,extrudeBevelSize:s,extrudeBevelSegments:c}=n.parameters,u=n.shape,l=r*.5,d=e*.5,p=dP(u,l,d,o*Math.PI/180,t,i);u.isClosed=!0,u.update();let f;return o===0?(f=new Mr.BufferGeometry,f.setAttribute("position",new Mr.Float32BufferAttribute([],3))):f=Qt.create({shape:u,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function dP(n,r,e,t,o,i){if(t>=By)return o>30||o%4===0?(pP(n,r,e,i),Math.round(o/4)):Dy(n,t,o,r,e,i);t=Math.max(t,.001);let a={x:0,y:e},s=t+Math.PI*.5,c={x:Math.cos(s)*r,y:Math.sin(s)*e},u=Py({px:a.x,py:a.y,cx:c.x,cy:c.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%u.length===0?uP(n,a.x,a.y,u,o,r,e,i):Dy(n,t,o,r,e,i)}function uP(n,r,e,t,o,i,a,s){let c=Math.round(o/t.length);n.addPoint(ji(r,e));for(let u=0,l=t.length;u<l;u++){let d=t[u],p=n.points[u],f=ji(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 s>0?Ry(n,i,a,s):n.addPoint(ji(0,0)),c}function Dy(n,r,e,t,o,i){let a=-r/e;for(let s=0;s<=e;s++){let c=a*s,u=Math.sin(c)*t,l=Math.cos(c)*o;n.addPoint(ji(u,l))}return r<By?i>0?Ry(n,t,o,i):n.addPoint(ji(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Gy(n,t,o,i)),1}function pP(n,r,e,t=0,o=0,i=0){let a=.5522847498,s=r*a,c=e*a;n.addPoint(ic(o-r,i,o-r,i-c,o-r,i+c)),n.addPoint(ic(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(ic(o+r,i,o+r,i+c,o+r,i-c)),n.addPoint(ic(o,i-e,o+s,i-e,o-s,i-e)),t>0&&Gy(n,r,e,t)}function ji(n,r){return new Cr(Mr.MathUtils.generateUUID(),new Mr.Vector2(n,r))}function ic(n,r,e,t,o,i){let a=ji(n,r);return a.controls[0].position.set(e,t),a.controls[1].position.set(o,i),a}function Ry(n,r,e,t){Vy(n,r,e,t).forEach(i=>n.addPoint(i))}function Gy(n,r,e,t){let o=Vy(n,r,e,t),i=new Ee;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Vy(n,r,e,t){let o=t*r/100,i=o*(Math.abs(e)/Math.abs(r)),a=new Mr.Vector2(o/r,i/e),s=n.points.map(c=>{let u=c.clone();return u.uuid=Mr.MathUtils.generateUUID(),u}).reverse();return s.forEach(c=>{c.position.multiply(a);let u=c.controls[0].position.clone().multiply(a),l=c.controls[1].position.clone().multiply(a);c.controls[0].position.copy(l),c.controls[1].position.copy(u)}),s}var Er=require("three"),zy=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),a=Math.abs(Math.min(t,i))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:i,radius:a,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:a,pathRadius:s,pathType:c,pathSegments:u,cornerRadius:l,cornerSegments:d}=n.parameters,p=new us(!1,r,e,t,o,i,a,s,c,u,l,d);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},du=new Er.Uint32BufferAttribute([0,0,0],1),us=class extends Er.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,i=1,a=1,s=1,c=1,u=1,l=1,d=1,p=1){if(super(),a===0)return;let f=r&&a===1;f&&(p=0),d>100&&(d=100),d===0&&(p=0);let m=()=>new Er.Vector3,h=new Er.Vector3,y=m(),g=m(),x=m(),S,w,b,T,_,v,C,P,N=m(),O=m(),A=m(),M=m(),L=m(),X=m(),R=m(),Z=m(),z=t-2*c+.001,V=z/a,W=Math.ceil(s*a),$=W+1,Y=z/W,q=-z/2,k=l+1,U=2*Math.PI/l,B=Math.PI/2/p,F=.01,j=Math.min((1-d/100)*c,c-F),D=c-j,ne=0,ee=2,K=p*ee+ee,te=k*K/ee,Q=te+k*$,le=Math.max(0,k*($+K)),[ie,ae,de]=[3,3,2].map(st=>Array(le*st).fill(0)),ce=[],ue=i-c;function ge(st,nr){let zr=Math.PI/2;v=nr*Y,P=2*Math.PI*(v%V)/V+zr,v+=q,C=Math.sin(P)*ue,_=Math.cos(P)*ue,r?st.set(_,C,v):st.set(_,v,C)}ge(h,-1e-10),ge(y,0),N.copy(h),ge(h,1);let Ne=h.distanceTo(y),Ye=f?0:D+j,Ie=Ne*W+2*Ye,ke=j,qt=Ie-Ye;for(let st=0;st<=W;st++){ge(g,st),Z.subVectors(g,N).normalize(),N.copy(g),X.copy(g).setComponent(+r+1,0).normalize(),R.crossVectors(Z,X).normalize();let nr=st===0,zr=st===W,ix=nr?3*Math.PI/2:B,ax=nr?ke:qt,sx=nr?k:Q,lx=nr?0:le-k,cx=Z.clone().multiplyScalar(nr?-D:D).add(g),dx=Z.clone().multiplyScalar(nr?-1:1).normalize();for(let uo=0;uo<k;uo++){let dp=uo*U;if(O.addVectors(h.copy(X).multiplyScalar(c*Math.cos(dp)),y.copy(R).multiplyScalar(c*Math.sin(dp))),A.copy(O).normalize(),nr||zr){f||(ne=lx+uo,[0,1,2].forEach($t=>{ie[ne*3+$t]=cx.getComponent($t),ae[ne*3+$t]=dx.getComponent($t)}),de[ne*2]=+zr,de[ne*2+1]=uo/l),y.copy(A).multiplyScalar(j),x.addVectors(g,y);for(let $t=0;$t<p;$t++){let od=$t*B+ix;M.addVectors(h.copy(Z).multiplyScalar(D*Math.sin(od)),y.copy(A).multiplyScalar(D*Math.cos(od))),L.copy(M).normalize(),y.addVectors(x,M),M.normalize(),ne=sx+$t*k+uo,[0,1,2].forEach(ks=>{ie[ne*3+ks]=y.getComponent(ks),ae[ne*3+ks]=L.getComponent(ks)});let ux=+nr+Math.sin(od);de[ne*2]=(ax+D*ux)/Ie,de[ne*2+1]=uo/l}}y.addVectors(g,O),ne=te+st*k+uo,[0,1,2].forEach($t=>{ie[ne*3+$t]=y.getComponent($t),ae[ne*3+$t]=A.getComponent($t)}),de[ne*2]=(Ye+st*Ne)/Ie,de[ne*2+1]=uo/l}}let Te=$+2*p+ee,mt=1,[bt,Fn]=[+f,Te-1];for(let st=bt;st<=Fn-1;st++){let nr=f&&st===Fn-1;for(let zr=0;zr<k-1;zr++)S=st*k+zr,w=S+1,b=(nr?zr:S)+k,T=(nr?zr+1:w)+k,st===0?ce.push(w,T,b):st===Te-2?ce.push(S,w,b):ce.push(S,w,b,w,T,b)}this.setIndex(ce),this.setAttribute("position",new Er.Float32BufferAttribute(ie,3)),this.setAttribute("normal",new Er.Float32BufferAttribute(ae,3)),this.setAttribute("uv",new Er.Float32BufferAttribute(de,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let r=this.userData.parameters,e=Math.ceil(r.tubularSegments),t=r.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,c,u=6*(e-1)*r.radialSegments,l=e,d=l===e;for(let p=0;p<r.radialSegments;p++)i=l*t+p,a=i+1,s=(d?p:i)+t,c=(d?p+1:a)+t,o[u++]=i,o[u++]=a,o[u++]=s,o[u++]=a,o[u++]=c,o[u++]=s;return o.length=u,du.array=o,du.count=o.length,du}};var jy=require("three");var Fy=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:a}=n.parameters,s=o===0&&i!==0?new ps(r*.5,i,a):new jy.IcosahedronGeometry(r*.5,o);return s.scale(1,e/r,t/r),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},ps=class extends Zo{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],a=[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],s="IcosahedronGeometry";super(i,a,s,r,e,t),this.type=s}static fromJSON(r){return new ps(r.radius,r.corner,r.cornerSides)}};var ac=require("three"),ky=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 ac.Shape;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 ac.LatheGeometry(o.extractPoints(t).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var Qr=require("three");var To=require("three");var oe=require("three"),Zr=new oe.Matrix4,uu=new oe.Object3D,sc=new oe.Vector3,tn=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new oe.Matrix3().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 a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return Zr.makeRotationX(r),this.applyMatrix4(Zr),this}rotateY(r){return Zr.makeRotationY(r),this.applyMatrix4(Zr),this}rotateZ(r){return Zr.makeRotationZ(r),this.applyMatrix4(Zr),this}translate(r,e,t){return Zr.makeTranslation(r,e,t),this.applyMatrix4(Zr),this}scale(r,e,t){return Zr.makeScale(r,e,t),this.applyMatrix4(Zr),this}lookAt(r){return uu.lookAt(r),uu.updateMatrix(),this.applyMatrix4(uu.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,a=o.normal,s=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 oe.Vector3().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(s,p));function l(p,f,m,h){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[m].clone()],g=a===void 0?[]:[new oe.Vector3().fromBufferAttribute(a,p),new oe.Vector3().fromBufferAttribute(a,f),new oe.Vector3().fromBufferAttribute(a,m)],x=new ki(p,f,m,g,y,h);e.faces.push(x),c!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(c,p),new oe.Vector2().fromBufferAttribute(c,f),new oe.Vector2().fromBufferAttribute(c,m)]),u!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(u,p),new oe.Vector2().fromBufferAttribute(u,f),new oe.Vector2().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?l(t.getX(y),t.getX(y+1),t.getX(y+2),f.materialIndex):l(y,y+1,y+2,f.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)l(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<i.count;p+=3)l(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(sc).negate(),this.translate(sc.x,sc.y,sc.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new oe.Matrix4;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 oe.Vector3,e=new oe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let i=this.faces[t],a=this.vertices[i.a],s=this.vertices[i.b],c=this.vertices[i.c];r.subVectors(c,s),e.subVectors(a,s),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 oe.Vector3;if(r){let t=new oe.Vector3,o=new oe.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],c=this.vertices[s.a],u=this.vertices[s.b],l=this.vertices[s.c];t.subVectors(l,u),o.subVectors(c,u),t.cross(o),e[s.a].add(t),e[s.b].add(t),e[s.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],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[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,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let r=new tn;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,a=this.morphNormals[e].vertexNormals;for(let s=0,c=this.faces.length;s<c;s++){let u=new oe.Vector3,l={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};i.push(u),a.push(l)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],c=o.faceNormals[i],u=o.vertexNormals[i];c.copy(s.normal),u.a.copy(s.vertexNormals[0]),u.b.copy(s.vertexNormals[1]),u.c.copy(s.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 oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),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,a=this.vertices,s=r.vertices,c=this.faces,u=r.faces,l=this.colors,d=r.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let h=s[p].clone();e!==void 0&&h.applyMatrix4(e),a.push(h)}for(let p=0,f=d.length;p<f;p++)l.push(d[p].clone());for(let p=0,f=u.length;p<f;p++){let m=u[p],h,y,g=m.vertexNormals,x=m.vertexColors,S=new ki(m.a+i,m.b+i,m.c+i);S.normal.copy(m.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,b=g.length;w<b;w++)h=g[w].clone(),o!==void 0&&h.applyMatrix3(o).normalize(),S.vertexNormals.push(h);S.color.copy(m.color);for(let w=0,b=x.length;w<b;w++)y=x[w],S.vertexColors.push(y.clone());S.materialIndex=m.materialIndex+t,c.push(S)}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],x=[];for(let S=0,w=g.length;S<w;S++)x.push(g[S].clone());this.faceVertexUvs[p].push(x)}}}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 l=this.vertices[c],d=Math.round(l.x*i)+"_"+Math.round(l.y*i)+"_"+Math.round(l.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 a=[];for(let c=0,u=this.faces.length;c<u;c++){let l=this.faces[c];l.a=o[l.a],l.b=o[l.b],l.c=o[l.c];let d=[l.a,l.b,l.c];for(let p=0;p<3;p++)if(d[p]===d[(p+1)%3]){a.push(c);break}}for(let c=a.length-1;c>=0;c--){let u=a[c];this.faces.splice(u,1);for(let l=0,d=this.faceVertexUvs.length;l<d;l++)this.faceVertexUvs[l].splice(u,1)}let s=this.vertices.length-t.length;return this.vertices=t,s}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new oe.Vector3(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],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let c=0;c<e;c++){let u=r[c]._id;a&&a.push(o[u]),s&&s.push(i[u])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}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={},a=[],s={},c=[],u={};for(let m=0;m<this.faces.length;m++){let h=this.faces[m],y=!0,g=!1,x=this.faceVertexUvs[0][m]!==void 0,S=h.normal.length()>0,w=h.vertexNormals.length>0,b=h.color.r!==1||h.color.g!==1||h.color.b!==1,T=h.vertexColors.length>0,_=0;if(_=l(_,0,0),_=l(_,1,y),_=l(_,2,g),_=l(_,3,x),_=l(_,4,S),_=l(_,5,w),_=l(_,6,b),_=l(_,7,T),t.push(_),t.push(h.a,h.b,h.c),t.push(h.materialIndex),x){let v=this.faceVertexUvs[0][m];t.push(f(v[0]),f(v[1]),f(v[2]))}if(S&&t.push(d(h.normal)),w){let v=h.vertexNormals;t.push(d(v[0]),d(v[1]),d(v[2]))}if(b&&t.push(p(h.color)),T){let v=h.vertexColors;t.push(p(v[0]),p(v[1]),p(v[2]))}}function l(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 s[h]!==void 0||(s[h]=a.length,a.push(m.getHex())),s[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,a.length>0&&(r.data.colors=a),c.length>0&&(r.data.uvs=[c]),r.data.faces=t,r}clone(){return new tn().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],x=[];for(let S=0,w=g.length;S<w;S++){let b=g[S];x.push(b.clone())}this.faceVertexUvs[p].push(x)}}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 a=r.morphNormals;for(let p=0,f=a.length;p<f;p++){let m={};if(a[p].vertexNormals!==void 0){m.vertexNormals=[];for(let h=0,y=a[p].vertexNormals.length;h<y;h++){let g=a[p].vertexNormals[h],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),m.vertexNormals.push(x)}}if(a[p].faceNormals!==void 0){m.faceNormals=[];for(let h=0,y=a[p].faceNormals.length;h<y;h++)m.faceNormals.push(a[p].faceNormals[h].clone())}this.morphNormals.push(m)}let s=r.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[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 l=r.boundingBox;l!==null&&(this.boundingBox=l.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 pu().fromGeometry(this),e=new oe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",lc.call(new oe.BufferAttribute(t,3),r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",lc.call(new oe.BufferAttribute(o,3),r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",Uy.call(new oe.BufferAttribute(o,3),r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",Hy.call(new oe.BufferAttribute(o,2),r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",Hy.call(new oe.BufferAttribute(o,2),r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let i=[],a=r.morphTargets[o];for(let s=0,c=a.length;s<c;s++){let u=a[s],l=new oe.Float32BufferAttribute(u.data.length*3,3);l.name=u.name,i.push(lc.call(l,u.data))}e.morphAttributes[o]=i}if(r.skinIndices.length>0){let o=new oe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",Wy.call(o,r.skinIndices))}if(r.skinWeights.length>0){let o=new oe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",Wy.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 oe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new oe.Float32BufferAttribute(t.vertices.length*3,3),i=new oe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",lc.call(o,t.vertices)),e.setAttribute("color",Uy.call(i,t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let a=new oe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",fP.call(a,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}};tn.prototype.isGeometry=!0;var pu=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,a=r.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.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,a=o[1]&&o[1].length>0,s=r.morphTargets,c=s.length,u;if(c>0){u=[];for(let g=0;g<c;g++)u[g]={name:s[g].name,data:[]};this.morphTargets.position=u}let l=r.morphNormals,d=l.length,p;if(d>0){p=[];for(let g=0;g<d;g++)p[g]={name:l[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 x=e[g];this.vertices.push(t[x.a],t[x.b],t[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let b=x.normal;this.normals.push(b,b,b)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][g];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(a===!0){let b=o[1][g];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<c;b++){let T=s[b].vertices;u[b].data.push(T[x.a],T[x.b],T[x.c])}for(let b=0;b<d;b++){let T=l[b].vertexNormals[g];p[b].data.push(T.a,T.b,T.c)}h&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(m[x.a],m[x.b],m[x.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}},ki=class{constructor(r,e,t,o,i,a=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new oe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}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 fP(n){return this.array.set(n),this}function Uy(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 oe.Color),r[e++]=i.r,r[e++]=i.g,r[e++]=i.b}return this}function Hy(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 oe.Vector2),r[e++]=i.x,r[e++]=i.y}return this}function lc(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 oe.Vector3),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z}return this}function Wy(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 oe.Vector4),r[e++]=i.x,r[e++]=i.y,r[e++]=i.z,r[e++]=i.w}return this}var mP=["a","b","c"];function hP(n,r){switch(r){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function fu(n,r,e){let t=Math.min(n,r),o=Math.max(n,r),i=t+"_"+o;return e.get(i)}function mu(n,r,e,t,o,i){let a=Math.min(n,r),s=Math.max(n,r),c=a+"_"+s,u;if(t.has(c))u=t.get(c);else{let l=e[a],d=e[s];u={a:l,b:d,newEdge:null,faces:[]},t.set(c,u)}u.faces.push(o),i[n].edges.push(u),i[r].edges.push(u)}function yP(n,r,e,t){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=r.length;o<i;o++)a=r[o],mu(a.a,a.b,n,t,a,e),mu(a.b,a.c,n,t,a,e),mu(a.c,a.a,n,t,a,e)}function cc(n,r,e,t,o){n.push(new ki(r,e,t,void 0,void 0,o))}function Ui(n,r){return Math.abs(r-n)/2+Math.min(n,r)}function dc(n,r,e,t){n.push([r.clone(),e.clone(),t.clone()])}var uc=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof To.BufferGeometry?r=new tn().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 To.Vector3,t,o,i,a,s,c=r.vertices,u=r.faces,l=r.faceVertexUvs[0],d=l!==void 0&&l.length>0,p=[],f=new Map;yP(c,u,p,f);let m=[],h,y,g,x,S,w,b;for(let F of Array.from(f.keys())){for(y=f.get(F),g=new To.Vector3,S=3/8,w=1/8,b=y.faces.length,b!=2&&(S=.5,w=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<b;a++){for(x=y.faces[a],s=0;s<3&&(h=c[hP(x,mP[s])],!(h!==y.a&&h!==y.b));s++);h&&e.add(h)}e.multiplyScalar(w),g.add(e),y.newEdge=m.length,m.push(g)}let T,_,v,C,P,N,O,A=[];for(o=0,i=c.length;o<i;o++){for(N=c[o],P=p[o].edges,t=P.length,t==3?T=3/16:t>3&&(T=3/(8*t)),_=1-t*Number(T),v=T,t<=2&&(t==2?(_=3/4,v=1/8):t==1||t==0),O=N.clone().multiplyScalar(_),e.set(0,0,0),a=0;a<t;a++)C=P[a],h=C.a!==N?C.a:C.b,e.add(h);e.multiplyScalar(Number(v)),O.add(e),A.push(O)}let M=A.concat(m),L=A.length,X,R,Z,z=[],V=[],W,$,Y,q,k=new To.Vector2,U=new To.Vector2,B=new To.Vector2;for(o=0,i=u.length;o<i;o++)x=u[o],X=Number(fu(x.a,x.b,f).newEdge)+L,R=Number(fu(x.b,x.c,f).newEdge)+L,Z=Number(fu(x.c,x.a,f).newEdge)+L,cc(z,X,R,Z,x.materialIndex),cc(z,x.a,X,Z,x.materialIndex),cc(z,x.b,R,X,x.materialIndex),cc(z,x.c,Z,R,x.materialIndex),d&&(W=l[o],$=W[0],Y=W[1],q=W[2],k.set(Ui($.x,Y.x),Ui($.y,Y.y)),U.set(Ui(Y.x,q.x),Ui(Y.y,q.y)),B.set(Ui($.x,q.x),Ui($.y,q.y)),dc(V,k,U,B),dc(V,$,k,B),dc(V,Y,U,k),dc(V,q,B,U));r.vertices=M,r.faces=z,d&&(r.faceVertexUvs[0]=V)}};var yt=new Qr.Vector3,qy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,r){let e=n.geometry??r?.geometry??new Qr.BufferGeometry().copy(new Qr.BoxGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(yt),t={width:yt.x,height:yt.y,depth:yt.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 Qr.BufferGeometry().copy(new Qr.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(yt)):yt.set(a.width,a.height,a.depth),(r!==yt.x||e!==yt.y||t!==yt.z)&&i.scale(yt.x===0?1:r/yt.x,yt.y===0?1:e/yt.y,yt.z===0?1:t/yt.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new uc(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,r,e){new Qr.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(yt);let a=100/yt.x;Object.assign(i.parameters,{width:100,height:yt.y*a,depth:yt.z*a}),r(this.build(i))})}};var pc=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 Ee?n.shape:new Ee,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:a,extrudeBevelSegments:s}=n.parameters,c=n.shape,u=r*.5,l=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,x=p+Math.cos(y)*l;c.addPoint(c.createPoint(g,x))}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=Qt.create({shape:c,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(m,{userData:{...n,type:"PolygonGeometry"}})}};var Ae=require("three"),$y=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:a,cornerRadius:s,cornerSegments:c}=n.parameters,u=new yu(r*.5,e,o,i,a,s,c);return u.scale(1,1,t/r),Object.assign(u,{userData:{...n,type:"PyramidGeometry"}})}};function fs(n,r,e){e.x=n.x*r.x,e.y=n.y,e.z=n.x*r.y}function hu(n,r,e,t,o,i){let a=r.clone().sub(n),s=e.clone().sub(n),c=a.angleTo(s);if(a.normalize(),s.normalize(),t===o){let u=a.add(s).normalize();i.copy(n).addScaledVector(u,t/Math.sin(c/2))}else{let u=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(u)),i.addScaledVector(s,t/Math.sin(u))}}function gP(n,r,e){let t=n.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var yu=class extends Ae.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,i=!1,a=0,s=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),s=Math.floor(s);let c=[],u=[],l=[],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,x=Math.PI-g,S=new Ae.Vector3(0,-f,0),w=new Ae.Vector3(0,f,0),b=new Ae.Vector2(r,-f),T=new Ae.Vector2(h,-f),_=new Ae.Vector2(0,w.y).sub(T),v=new Ae.Vector2(0,w.y).sub(b),C=new Ae.Vector2(_.y,-_.x).normalize(),P=new Ae.Vector2(v.y,-v.x).normalize(),O=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-_.angle())/2)-1e-8;a=Math.min(a,O);let A;{let V=new Ae.Vector3(C.x,C.y,0),W=new Ae.Vector3(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);A=V.angleTo(W)}let M=a/Math.tan((Math.PI-_.angle())/2),L=a/Math.tan((Math.PI-A)/2),X=new Ae.Vector3;if(!i){u.push(S.x,S.y,S.z),l.push(0,-1,0),d.push(0,0);let V=p++,W=[],$=b.clone(),Y=M/Math.cos(Math.PI/t);$.x-=Y;for(let q=0;q<t;q++){let k=q/t*Math.PI*2+m,U=new Ae.Vector2(Math.sin(k),Math.cos(k));fs($,U,X),u.push(X.x,X.y,X.z),l.push(0,-1,0),d.push(0,0),W.push(p++)}for(let q=0;q<W.length;q++)c.push(W[q],V,W[(q+1)%W.length])}let R=[];{let V=new Ae.Vector3,W=new Ae.Vector3,$=new Ae.Vector3,Y=new Ae.Vector3,q=new Ae.Vector3,k=new Ae.Vector3;for(let U=0;U<t;U++){let B=U/t*Math.PI*2+m,F=(U+.5)/t*Math.PI*2+m,j=(U+1)/t*Math.PI*2+m,D=new Ae.Vector2(Math.sin(B),Math.cos(B)),ne=new Ae.Vector2(Math.sin(F),Math.cos(F)),ee=new Ae.Vector2(Math.sin(j),Math.cos(j));fs(b,D,W),fs(b,ee,$),fs(C,ne,V),hu(w,W,$,L,L,Y),u.push(Y.x,Y.y,Y.z),hu(W,w,$,L,M,q),u.push(q.x,q.y,q.z),hu($,W,w,M,L,k),u.push(k.x,k.y,k.z),l.push(V.x,V.y,V.z),l.push(V.x,V.y,V.z),l.push(V.x,V.y,V.z),d.push(0,0),d.push(0,0),d.push(0,0);let K=p++,te=p++,Q=p++;if(c.push(K,te,Q),a>0){{let ae=W.clone().add($).multiplyScalar(.5),de=w.clone().sub(ae).normalize(),ue=S.clone().sub(ae).normalize().add(de).normalize().multiplyScalar(-1),ge=k.clone().sub(q);Z(ae,ge,ue,_.angle())}let le,ie;{let ae=new Ae.Vector3;fs(P,ee,ae);let de=k.clone().add(Y).multiplyScalar(.5);de=gP(de,$,w);let ce=k.clone().sub(Y);[le,ie]=Z(de,ce,ae,A,Y.y)}{let ae=le,de=ae.clone().setY(0).normalize(),ce=new Ae.Vector3(0,-1,0),ue=de.clone().cross(ce);z(ae,de,ce,ue)}R.concat(ie);{let ae=_.angle(),de=Math.PI-ae,ce=w.clone();ce.y-=a/Math.sin(ae-Math.PI/2);let ue=new Ae.Vector3,ge=[];for(let Ye=0;Ye<s;Ye++){let Ie=[],ke=Math.PI/2-de*Ye/s,qt=Math.cos(ke),Te=Math.sin(ke),mt=F;for(let bt=0;bt<=Ye;bt++){let Fn=Math.cos(mt),st=Math.sin(mt);V.x=qt*st,V.y=Te,V.z=qt*Fn,ue.copy(ce).addScaledVector(V,a),u.push(ue.x,ue.y,ue.z),l.push(V.x,V.y,V.z),d.push(0,0),Ie.push(p++),mt+=Math.PI*2/Ye/t}ge.push(Ie)}ie.reverse(),ge.push(ie);let Ne=ge.length-1;for(let Ye=0;Ye<Ne;Ye++){let Ie=ge[Ye],ke=ge[Ye+1],qt=Ie.length-1;c.push(ke[1],Ie[0],ke[0]);for(let Te=1;Te<=qt;Te++)c.push(Ie[Te],Ie[Te-1],ke[Te]),c.push(ke[Te+1],Ie[Te],ke[Te])}}}}}this.setIndex(c),this.setAttribute("position",new Ae.Float32BufferAttribute(u,3)),this.setAttribute("normal",new Ae.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Ae.Float32BufferAttribute(d,2));function Z(V,W,$,Y,q){let k=-Y/2,U=(Math.PI-Y)/2,B=W.clone().normalize().cross($);V.addScaledVector($,-a/Math.sin(U));let F=new Ae.Vector3,j=new Ae.Vector3,D=1,ne=p,ee=[];for(let K=0;K<=s;K++){let te=k+K/s*Y;j.set(0,0,0),j.addScaledVector(B,Math.sin(te)),j.addScaledVector($,Math.cos(te));for(let Q=0;Q<=D;Q++){let le=Q/D-.5;if(F.copy(V),F.addScaledVector(W,le),F.addScaledVector(j,a),q!=null){let ie=Math.max(0,F.y-q);F.addScaledVector(W,-ie/W.y)}u.push(F.x,F.y,F.z),l.push(j.x,j.y,j.z),d.push(0,0),Q===0&&ee.push(p),p++}}for(let K=0;K<s;K++)for(let te=0;te<D;te++){let Q=ne+te+(D+1)*K,le=Q+(D+1),ie=le+1,ae=Q+1;c.push(Q,le,ae),c.push(le,ie,ae)}return[V.clone().addScaledVector(W,.5),ee]}function z(V,W,$,Y){let q=Math.PI/2,k=v.angle()-q,U=[],B=new Ae.Vector3,F=new Ae.Vector3;for(let D=0;D<=s;D++){let ne=[],ee=D/s;for(let K=0;K<=D;K++){let Q=((D?K/D:0)-.5)*x,le=Math.cos(Q),ie=Math.sin(Q),ae=Math.atan(Math.tan(k)*le),de=(q+ae)*ee,ce=Math.cos(de),ue=Math.sin(de);B.set(0,0,0),B.addScaledVector(W,ue*le),B.addScaledVector($,ce),B.addScaledVector(Y,ue*ie),F.copy(V).addScaledVector(B,a),u.push(F.x,F.y,F.z),l.push(B.x,B.y,B.z),d.push(0,0),ne.push(p++)}U.push(ne)}let j=U.length-1;for(let D=0;D<j;D++){let ne=U[D],ee=U[D+1],K=ne.length-1;c.push(ne[0],ee[1],ee[0]);for(let te=1;te<=K;te++)c.push(ne[te-1],ne[te],ee[te]),c.push(ne[te],ee[te+1],ee[te])}}}};var fc=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 Ee?n.shape:new Ee,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:a,extrudeBevelSize:s,extrudeBevelSegments:c}=n.parameters,u={x:e*.5,y:t*.5},l={x:-u.x,y:-u.y},d={x:u.x,y:u.y};function p(w,b,T){return b>e&&T>t?Math.min(w*e/b,w*t/T):b>e?w*e/b: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=l.x,h=d.x,y=d.y,g=l.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 x=!0;for(let w=0,b=r.points.length;w<b;w++)r.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(r.roundness=f[0]),r.useCubicForRoundedCorners=i!==1,r.update();let S=Qt.create({shape:r,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:c}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};var _o=require("three"),Yy=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:180},n.parameters);return e.thetaLength=_o.MathUtils.clamp(e.thetaLength,0,180),{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:a,phiLength:s,thetaStart:c,thetaLength:u}=n.parameters,l;return u===0?(l=new _o.BufferGeometry,l.setAttribute("position",new _o.Float32BufferAttribute([],3))):l=new _o.SphereGeometry(.5*r,o,i,a,s,c,u*_o.MathUtils.DEG2RAD),l.scale(1,e/r,t/r),Object.assign(l,{userData:{...n,type:"SphereGeometry"}})}};var Xy=require("three"),Ky=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 Xy.PlaneGeometry(r,e,t,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var rn=require("three"),Zy=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:a}=n.parameters,s=new gu(r,e,t,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},gu=class extends rn.BufferGeometry{constructor(r=1,e=1,t=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],c=[],u=[],l=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-l,o),o*=Math.PI/180;let d=[],p=Math.PI/2,f=(F=0,j=0,D=0)=>new rn.Vector3(F,j,D),m=f(),h=f(),[y,g,x]=[e/2,r/2,t/2],S=-g,w=+g,[b,T,_]=[f(S,-y,+x),f(S,-y,-x),f(S,+y,-x)],v=(F,j=!1)=>Math.sin(F-Math.PI/(1+ +j)),C=(F,j=!1)=>Math.cos(F-Math.PI/(1+ +j));_.y=Math.sin(o)*e-y;let P=Math.cos(o)*e-x,N=b.z-l;o<=p?(_.z=Math.min(P,N),_.z==N&&(_.y-=(P-N)/Math.tan(p-o))):T.z=Math.min(T.z-P-x,b.z-l),m.subVectors(b,T),h.subVectors(_,T);let O=Math.min(m.length(),h.length())*i/100,A=O*Math.tan(o/2),M=O/Math.cos(o/2),L=m.clone().normalize().add(h.normalize()).setLength(M).add(T);m.set(0,v(o,!0),C(o,!0)),d.push([_,m.clone()]);let X=(Math.PI-o)/a;for(let F=0;F<=a;F++){let j=p+o+F*X;m.set(0,Math.sin(j)*A,Math.cos(j)*A),m.add(L),h.set(0,v(j),C(j)),d.push([m.clone(),h.clone()])}d.push([b,f(0,1,0)]);let R=Math.sin(X/2)*A*2,Z=d.length-1,z=d[0][0].distanceTo(d[1][0]),V=d[Z-1][0].distanceTo(d[Z][0]),W=z+R*a+V;d[0].push(1);for(let F=0;F<=a;F++)d[F+1].push(1-(z+F*R)/W);d[Z].push(0);let[$,Y,q]=d[0],k,U,B;for(let F=1;F<d.length;F++)[k,U,B]=d[F],s.push(S,$.y,$.z,S,k.y,k.z,w,$.y,$.z,w,$.y,$.z,S,k.y,k.z,w,k.y,k.z),c.push(0,Y.y,Y.z,0,U.y,U.z,0,Y.y,Y.z,0,Y.y,Y.z,0,U.y,U.z,0,U.y,U.z),u.push(0,q,0,B,1,q,1,q,0,B,1,B),[$,Y,q]=[k,U,B];this.setAttribute("position",new rn.Float32BufferAttribute(s,3)),this.setAttribute("normal",new rn.Float32BufferAttribute(c,3)),this.setAttribute("uv",new rn.Float32BufferAttribute(u,2))}};var mc=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 Ee?n.shape:new Ee,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:a,depth:s,extrudeBevelSize:c,extrudeBevelSegments:u}=n.parameters,l=n.shape,d=r*.5,p=e*.5,f=0,m=0,h=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=d*t/100,x=p*t/100;if(o===3&&t===50){h=2*Math.PI/o;for(let w=0;w<o;w++){let b=h*w,T=f+Math.sin(b)*d,_=m+Math.cos(b)*p;l.addPoint(l.createPoint(T,_))}}else for(let w=0;w<o;w++){let b=f+Math.cos(y)*d,T=m+Math.sin(y)*p;l.addPoint(l.createPoint(b,T)),y+=h,b=f+Math.cos(y)*g,T=m+Math.sin(y)*x,w<=o,l.addPoint(l.createPoint(b,T)),y+=h}l.isClosed=!0;for(let w=0,b=l.points.length;w<b;w++)l.points[w].roundness=i;l.roundness=i,l.update();let S=Qt.create({shape:l,parameters:{roundness:i,depth:s,extrudeBevelSize:c,extrudeBevelSegments:u}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};var Qy=require("three"),Jy=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 Qy.PlaneGeometry(r,e);return Object.assign(t,{userData:{...n,type:"TextFrameGeometry"}})}};var Hi=require("three");var eg=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:360,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:a,cornerRadius:s,cornerSegments:c}=n.parameters,u=xP(r,e,t,r*.5,a,i,0,0,o,s,c);return u.scale(1,e/r,1),Object.assign(u,{userData:{...n,type:"TorusGeometry"}})}};function xP(n,r,e,t,o,i,a,s,c,u,l){[r,e]=[e,r],a=r/2;let d=Hi.MathUtils.clamp(o/360,0,1);if(d===0){let p=new Hi.BufferGeometry;return p.setAttribute("position",new Hi.Float32BufferAttribute([],3)),p}return d===1&&(u=0),new us(!0,n,r,e,t,d,i,a,s,c,u,l)}var tg=require("three"),rg=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:a}=n.parameters,s=r*.5;s!==e&&(s-=e);let c=new tg.TorusKnotGeometry(s,e,t,o,i,a);return Object.assign(c,{userData:{...n,type:"TorusKnotGeometry"}})}};var og=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 Ee?n.shape:new Ee,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:a,isRect:s}=n.parameters,c=n.shape,u=r*.5,l=e*.5;s?(c.addPoint(c.createPoint(-u,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))):(c.addPoint(c.createPoint(0,l)),c.addPoint(c.createPoint(u,-l)),c.addPoint(c.createPoint(-u,-l))),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=Qt.create({shape:c,parameters:{roundness:t,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(d,{userData:{...n,type:"TriangleGeometry"}})}};var ve=require("three");function ng(n,r){let e=2*Math.PI;return(n%e+e)%e===(r%e+e)%e}var vP=new ve.Matrix4,bP=new ve.Matrix4;function SP(n,r,e){let t=[new ve.Vector3,new ve.Vector3,new ve.Vector3],o=[new ve.Vector3,new ve.Vector3,new ve.Vector3];return n.extractBasis(t[0],t[1],t[2]),r.extractBasis(o[0],o[1],o[2]),t.forEach((i,a)=>{let s=o[a],c=ve.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(c)}),new ve.Matrix4().makeBasis(t[0],t[1],t[2])}var ig=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),a=r?.shapeData??Fi.create({parameters:Id}).userData.shape;return{path:n.path??bi.defaultData(),parameters:Object.assign(e,{width:t,height:o,depth:i,extrusion:{...zl,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new xu(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new ve.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},xu=class extends ve.BufferGeometry{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)||!ng(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;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),c=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),u=Math.min(Math.max(2,c-s+1),a+2),l=[],d=[];for(let z=0;z<u;z++){let V=this.inputs.path.isClosed?(z+s)%e.length:Math.min(z+s,e.length-1);l.push(e[V].clone()),d.push(t[V].clone())}let p=(z,V,W)=>{l[z]=l[z].clone().lerp(l[V],W),d[z]=SP(d[z],d[V],W)},f=0,m=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(m||i===0)&&(f=m,p(0,1,f));let h=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(h=y,p(l.length-1,l.length-2,1-h)),o===0){let z=l.length-1;l[z].copy(l[0]),d[z].copy(d[0])}this._applyPathModifiers(d,f,h);let{bevel:g,bevelSides:x}=this.inputs.parameters.extrusion,S=g>0?this.inputs.parameters.extrusion.capType:"flat",w=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(w=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:b,infos:T,vertices:_}=this._computeShapePoints(w),v=0,C;S==="round"&&(C=new en(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=C.getAttribute("position").count);let P=0,N=0;T.sort((z,V)=>z.start-V.start),T.forEach(z=>{z.verticesStart=P,z.verticesCount=z.continuous.reduce((V,W,$)=>V+($===0||!W?2:1),0),N+=z.verticesCount,P=N});let O=N*u,A,M=0;if(this._isOpenEnded()&&S==="flat"){try{A=Nr({windingRule:Ce.ODD,elementType:et.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{A=cu}M=A.vertexCount}let L=O+2*M+v*2,X=O+2*M,R={positions:new Float32Array(L*3),normals:new Float32Array(L*3),uvs:new Float32Array(L*2)},Z=[];if(T.forEach(z=>{this._extrudeRegion(z,_,d,l,R,Z,this._isGeometryClosed()&&!this._isOpenEnded())}),A&&(this._closeEnd(A,O,Z,R,d[0],l[0],!1),this._closeEnd(A,O+M,Z,R,d[d.length-1],l[l.length-1],!0)),C){R.positions.set(C.getAttribute("position").array,X*3),R.normals.set(C.getAttribute("normal").array,X*3),R.uvs.set(C.getAttribute("uv").array,X*2);let z=Z.length;Z.push(...C.getIndex().array.map($=>$+X)),X+=v,R.positions.set(C.getAttribute("position").array,X*3),R.normals.set(C.getAttribute("normal").array,X*3),R.uvs.set(C.getAttribute("uv").array,X*2);let V=Z.length;Z.push(...C.getIndex().array.map($=>$+X)),this.setAttribute("position",new ve.BufferAttribute(R.positions,3)),this.setAttribute("normal",new ve.BufferAttribute(R.normals,3)),this.setAttribute("uv",new ve.BufferAttribute(R.uvs,2)),this.setIndex(Z);let W=vP;W.copy(d[d.length-1]).setPosition(l[l.length-1]),this.applyMatrix4OnRange(W,X,L),W.copy(d[0]).setPosition(l[0]).multiply(bP.makeScale(1,1,-1)),this.applyMatrix4OnRange(W,X-v,X),this.reverseIndicesOnRange(z,V)}else this.setAttribute("position",new ve.BufferAttribute(R.positions,3)),this.setAttribute("normal",new ve.BufferAttribute(R.normals,3)),this.setAttribute("uv",new ve.BufferAttribute(R.uvs,2)),this.setIndex(Z)}_extractPathPoints(){let t=ec(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(t.length<2)return[];let o=[t[0]];return t.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),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,a=new ve.Vector3,s=new ve.Vector3,c=new ve.Vector3,u=new ve.Vector3,l=new ve.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let S;y===o-1?S=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):S=e[y+1];let w=g.clone().sub(x).normalize(),b=S.clone().sub(g).normalize(),T=w.clone().add(b).normalize();c.copy(T),y===0&&(T.equals(l)||T.clone().negate().equals(l))&&l.set(0,0,1);let _=l.clone().cross(T).normalize(),v=T.clone().cross(_).normalize();l.copy(v),u.copy(_),y===0&&(a.copy(v),s.copy(T));let C=new ve.Matrix4().makeBasis(_,v,T);t.push(C)}let d=i?s:c,p=i?a:new ve.Vector3(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 ve.Matrix4().makeRotationZ(m*y/t.length);t[y].multiply(g)}return t}_applyPathModifiers(e,t,o){let i=e.length,{angle:a,twist:s,startScale:c,endScale:u}=this.inputs.parameters.extrusion,l=new ve.Matrix4,d=new ve.Matrix4;return e.forEach((p,f)=>{let m=f===0?0:f===i-1?1:(f-t)/(i-(o===0?0:1)-(t+(1-o)));l.makeRotationZ(ve.MathUtils.lerp(a,a+s,m)*ve.MathUtils.DEG2RAD);let h=ve.MathUtils.lerp(c,u,m);d.makeScale(h,h,h),p.multiply(l).multiply(d)}),e}_computeShapePoints(e=12,t=Ce.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(h=>{let y=h.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let S=y[x-1],w=y[x-0];g.push(S,w)}return g}),s;try{s=Nr({windingRule:t,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=ds}let c;try{c=Nr({windingRule:Ce.ODD,elementType:et.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{c=lu}if(!s)throw new Error("error generating geometry");let u=s.elementCount;if(c){s.elementCount+=c.elementCount;for(let h=0;h<c.elements.length;h++){let y=c.elements[h],g=h%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let h=0;h<c.vertexIndices.length;h++){let y=c.vertexIndices[h],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let h=0;h<c.vertices.length;h++){let y=c.vertices[h];s.vertices.push(y)}}let l=1/0,d=-1/0,p=1/0,f=-1/0;for(let h=0,y=s.vertexCount;h<y;h++){let g=h*2,x=s.vertices[g+0],S=s.vertices[g+1];x<l&&(l=x),x>d&&(d=x),S<p&&(p=S),S>f&&(f=S)}let m=[];for(let h=s.elementCount-1;h>=0;h--){let y=h>=u,g=h*2,x=s.elements[g+0],S=s.elements[g+1],w=x+S,b={start:x,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};m.push(b);let T=x,_=w-1,v=x+1,C=o.roundedCurves.length;do{let P=T-x,N=s.vertices[_*2+0],O=s.vertices[_*2+1],A=s.vertices[T*2+0],M=s.vertices[T*2+1],L=s.vertices[v*2+0],X=s.vertices[v*2+1],R=A-N,Z=M-O,z=Math.sqrt(R*R+Z*Z);R/=z,Z/=z;let V=A-L,W=M-X,$=Math.sqrt(V*V+W*W);V/=$,W/=$,b.normals[P*2+0]=-W,b.normals[P*2+1]=V;let Y=s.vertexIndices[T];if(Array.isArray(Y))b.continuous[P]=!1;else{let[q,k]=o.getCurveIndexFromVertexId(Y-1,!0);if(k>0&&k<1)b.continuous[P]=!0;else{let U=k===1?q+1:q-1;U=(U+C)%C;let B=k===1?0:1,F=o.roundedCurves[q].getTangent(k),j=o.roundedCurves[U].getTangent(B);b.continuous[P]=F.dot(j)>.95}}y&&(b.normals[P*2+0]*=-1,b.normals[P*2+1]*=-1),[_,T,v]=[T,v,v+1],v>=w&&(v-=S)}while(v!==x+1)}return{regions:[i,...a],infos:m,vertices:s.vertices}}_insertVertex(e,t,o,i,a){let s=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[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,t,o,i,a,s,c){let u=new ve.Vector3,l=new ve.Vector3,d=new ve.Vector3,p=new ve.Vector3,f=new ve.Vector2;o.forEach((h,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(u.set(t[w+0],t[w+1],0),d.copy(u).applyMatrix4(h).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let b=S===0?(e.start+e.count-1)*2:w-2;l.set(t[b+0],t[b+1],0),p.copy(u).sub(l),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(h).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(a,x,d,p,f),x++,!e.continuous[S]||S===0){if(S===0)p.set(e.normals[S*2+0],e.normals[S*2+1],0),f.set(0,y/(o.length-1));else{let b=S===e.count-1?e.start*2:w+2;l.set(t[b+0],t[b+1],0),p.copy(l).sub(u),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(h).normalize(),this._insertVertex(a,x,d,p,f),x++}}});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),x=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&x++;let w=S===e.count-1?0:x+1,b=y+x,T=y+w,_=g+w,v=g+x;e.isHole?s.push(b,_,T,b,v,_):s.push(b,T,_,b,_,v),x++}}}_closeEnd(e,t,o,i,a,s,c){let u=e.vertexCount,l=new ve.Vector3(0,0,c?-1:1).applyMatrix4(a),d=new ve.Vector3,p=new ve.Vector2;for(let m=0;m<u;m++){let h=2*m;d.set(e.vertices[h+0],e.vertices[h+1],0).applyMatrix4(a).add(s),this._insertVertex(i,t+m,d,l,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,x=f[h+(c?2:1)]+t;o.push(y,g,x)}}applyMatrix4OnRange(e,t,o){let i=e.elements,a=new ve.Matrix3().getNormalMatrix(e).elements,s,c,u,l,d=this.attributes.position,p=this.attributes.normal;if(!d||!p)return;let f=d.array,m=p.array,h=d.itemSize;for(let y=t*h,g=o*h;y<g;y+=h){if(y===t)debugger;s=f[y+0],c=f[y+1],u=f[y+2],l=1/(i[3]*s+i[7]*c+i[11]*u+i[15]),f[y+0]=(i[0]*s+i[4]*c+i[8]*u+i[12])*l,f[y+1]=(i[1]*s+i[5]*c+i[9]*u+i[13])*l,f[y+2]=(i[2]*s+i[6]*c+i[10]*u+i[14])*l,s=m[y+0],c=m[y+1],u=m[y+2],m[y+0]=a[0]*s+a[3]*c+a[6]*u,m[y+1]=a[1]*s+a[4]*c+a[7]*u,m[y+2]=a[2]*s+a[5]*c+a[8]*u}d.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,t){let o=this.index;if(o){for(let i=e;i<t;i+=3){let a=o.getX(i),s=o.getX(i+1),c=o.getX(i+2);o.setXYZ(i,c,s,a)}o.needsUpdate=!0}}};var _n=require("three"),ag=require("three/examples/jsm/utils/BufferGeometryUtils.js");function sg(){let n=new _n.BufferGeometry;return n.setAttribute("position",new _n.BufferAttribute(new Float32Array([]),3)),n.setIndex(new _n.BufferAttribute(new Uint16Array([]),1)),n}var wP=sg().attributes,TP=12,_P=1,Wi=class extends _n.BufferGeometry{constructor(e,t){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,wP),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:a,extrudeBevelSize:s,extrudeBevelSegments:c,text:u,textTransform:l}=e,d=$l.getDisplayedValue(u),p=l===2?d.toUpperCase():l===3?d.toLowerCase():d,f=PP(e,t,p),{shapes:m,charWidths:h,charCoords:y}=t.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,x=(typeof i=="number"?i:1)*.5,S=m.map(T=>new Ee().fromShape(T,!0));this.vectorShapes=S;let w=S.map(T=>Qt.create({shape:T,parameters:{depth:a,extrudeBevelSegments:c,extrudeBevelSize:s,windingRule:a<=0?Ce.NONZERO:Ce.ODD,subdivisions:this.isLowResolution&&a>0?_P:TP}})),b=w.length?(0,ag.mergeBufferGeometries)(w):sg();b.translate(-g,x,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=h,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([T,_])=>{this.setAttribute(T,_)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=Yt(new _n.BufferGeometry,Wi.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 PP(n,r,e){let t=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
2
|
-
|
|
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}var He=require("three");var cg,qi=new Promise(n=>{cg=n}),lg=!1;var hc;function dg(){if(lg)return;if(hc)return hc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.496/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(u=>u.arrayBuffer())]),s=i.default,c=await s({wasmBinary:a});cg(c),lg=!0}return hc=n(),hc}var ug=require("three");function On(n,r,e,t){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let u of a){let l=i;for(let d of u)l=l[d];for(o in l){let d=l[o];Sh(d)&&(l[o]=r.getVariable(d,[t.uuid,"geometry",...u,o]))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let u=Ee.createFromState(i.shape,i.width,i.height);s.shape=u}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(u=>u.materialIndex=Math.max(u.materialIndex??0,0)),s.geometry=new ug.BufferGeometryLoader().parse(i);else if(i.type==="SubdivGeometry"){let u=new ut(i,e);return u.data=n,u}else if(i.type==="TextGeometry")return new Wi(i,r);let c;try{c=vu(s)}catch(u){console.error(u)}if(!c){let u=Ee.createFromState(vi.defaultData(),100,100);s.shape=u,c=vu(s)}return c}var pg=require("three"),OP=new pg.Matrix4;function ms(n,r,e,t){let o=n.position.array,i=n.normal.array,a=OP.makeScale(r,e,t).invert().elements,s,c,u;for(var l=0,d=o.length;l<d;l+=3)o[l]*=r,o[l+1]*=e,o[l+2]*=t,s=i[l],c=i[l+1],u=i[l+2],i[l]=a[0]*s+a[4]*c+a[8]*u,i[l+1]=a[1]*s+a[5]*c+a[9]*u,i[l+2]=a[2]*s+a[6]*c+a[10]*u;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var yc=new He.Box3,$i=new He.Vector3,fe;qi.then(n=>{fe=n});var fg=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),mg=new Uint32Array([0,1,2,3]),hg=new Uint8Array([4]),ut=class extends He.BufferGeometry{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=zo.div(t,o);this.subdividedGeometry&&ms(this.subdividedGeometry.attributes,...i),this.originalGeometry&&ms(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply($i.fromArray(i));let s=$i.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,t,o;try{({originalGeometry:e,subdividedGeometry:t,subdivPointer:o}=ut.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new He.BoxGeometry(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&&(ut.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new He.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;yc.setFromBufferAttribute(t),yc.getCenter(o),e.boundingSphere.radius=o.distanceTo(yc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),yc.getSize($i);let i={width:$i.x,height:$i.y,depth:$i.z};return this.userData.parameters=i,i}static build(e,t,o,i){let a,s,c,u=e?.phongAngle??35;o===!1&&(u=-1),t&&(fe.free_bvh(t),fe.free_subdivision_surface(t));try{a=ut.allocate(e,i)}catch(l){console.error(l,e),a=ut.allocate({positionWASM:fg,indexWASM:mg,verticesPerFaceWASM:hg},i)}if(fe.set_destination_refinement_level(a,0),s=ut.buildLevel(a,!0,u),e.subdivisions>0)try{fe.set_destination_refinement_level(a,e.subdivisions),c=ut.buildLevel(a,!1,u)}catch{try{fe.set_destination_refinement_level(a,e.subdivisions-1),c=ut.buildLevel(a,!1,u)}catch{c=null}}else c=null;return{subdivPointer:a,originalGeometry:s,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||e.path!==void 0?t.geometry:On(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,c,u,l;({positions:s,triIndices:l}=Tu(i.getAttribute("position"),a));let d;if(e.type==="CylinderGeometry"&&e.cornerRadius===0&&e.hollow===0&&e.openEnded===!1){let p=e.radialSegments*e.heightSegments*3*2,f=p+e.radialSegments*3;d=[p,f]}return{indices:c,verticesPerFace:u}=_u(s,l,i,d),{positions:s,indices:c,verticesPerFace:u}}static allocate(e,t){let o,i,a,s=[],c=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=fg,i=mg,a=hg);let u=o.length,l=i.length,d=a.length,p=o.length+s.length+c.length,f=i.length+a.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=fe._malloc(m),x=new Float32Array(fe.HEAPF32.buffer,g,p),S=new Uint32Array(fe.HEAPU32.buffer,g+h,f);x.set(o,0),x.set(s,o.length),x.set(c,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(T=>T!==1)&&(w=new He.Matrix4().makeScale(...e.scaleBaked)),t&&(w?w.premultiply(t):w=t);let b=w?fe.alloc_subdivision_surface2(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d,w.elements):fe.alloc_subdivision_surface(g,u,g+h,l,g+h+i.length*Uint32Array.BYTES_PER_ELEMENT,d);return fe._free(g),b}static buildLevel(e,t,o,i,a){let s=a?fe.get_mesh_data2(e,t?fe.Level.CONTROL:fe.Level.REFINED,o,a.elements):fe.get_mesh_data(e,t?fe.Level.CONTROL:fe.Level.REFINED,o),c=8,u=fe.HEAPU32.subarray(s>>2,(s>>2)+c),l=u.subarray(4,4+4),d=0,p=fe.HEAPU32[u[d]>>2],f=fe.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let m=fe.HEAPU32[u[d]>>2],h=fe.HEAPF32.subarray(m>>2,(m>>2)+l[d]);d++;let y=fe.HEAPU32[u[d]>>2],g=fe.HEAPU32.subarray(y>>2,(y>>2)+l[d]);d++;let x=fe.HEAPU32[u[d]>>2],S=fe.HEAPU32.subarray(x>>2,(x>>2)+l[d]);if(d++,i===void 0){let w=new He.BufferGeometry;if(w.setIndex(new He.Uint32BufferAttribute(S,1)),w.setAttribute("position",new He.Float32BufferAttribute(f,3)),w.setAttribute("normal",new He.Float32BufferAttribute(h,3)),t){w.setAttribute("faceMap",new He.Uint32BufferAttribute(g,1));let b=new Float32Array(h.length/3*4).fill(0);w.setAttribute("color",new He.BufferAttribute(b,4))}return fe.free_mesh_data(s),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,fe.free_mesh_data(s)}static freeSubdivPointer(e){fe.free_bvh(e),fe.free_subdivision_surface(e)}static buildControlCageWireframe(e,t,o){let i=fe.get_wireframe_data_for_base_level(e),a=4,s=fe.HEAPU32.subarray(i>>2,(i>>2)+a),c=s.subarray(2,2+2),u=0,l=fe.HEAPU32[s[u]>>2],d=fe.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=fe.HEAPU32[s[u]>>2],f=fe.HEAPU32.subarray(p>>2,(p>>2)+c[u]);if(t===void 0){let m=new He.BufferGeometry;m.setAttribute("position",new He.Float32BufferAttribute(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 He.BufferAttribute(h,3)),m.setIndex(new He.Uint32BufferAttribute(f,1)),fe.free_wireframe_data_for_base_level(i),m}t.getAttribute("position").copyArray(d),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,t,o){let i=t===0;i||fe.set_destination_refinement_level(e,t);let a=o?fe.get_topological_data2(e,i?fe.Level.CONTROL:fe.Level.REFINED,o.elements):fe.get_topological_data(e,i?fe.Level.CONTROL:fe.Level.REFINED),s=6,c=fe.HEAPU32.subarray(a>>2,(a>>2)+s),u=c.subarray(3,3+3),l=0,d=fe.HEAPU32[c[l]>>2],p=new Float32Array(fe.HEAPF32.subarray(d>>2,(d>>2)+u[l]));l++;let f=fe.HEAPU32[c[l]>>2],m=new Uint32Array(fe.HEAPU32.subarray(f>>2,(f>>2)+u[l]));l++;let h=fe.HEAPU32[c[l]>>2],y=new Uint8Array(fe.HEAPU32.subarray(h>>2,(h>>2)+u[l]));return fe.free_topological_data(a),{positions:p,indices:m,verticesPerFace:y}}};var yg=["getX","getY","getZ"];function Tu(n,r){let e={},t=r?r.count:n.count,o=0,i=[],a=[],s=1e4;for(let u=0;u<t;u++){let l=r?r.getX(u):u,d="";for(let p=0;p<3;p++)d+=`${~~(n[yg[p]](l)*s)},`;if(d in e)i.push(e[d]);else{for(let p=0;p<3;p++)a.push(n[yg[p]](l));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:a,triIndices:c}}var gc=new He.Vector3,bu=new He.Vector3,Su=new He.Vector3,wu=new He.Vector3;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 c=e.userData.shape.extractShapePointsToFlatArray([]),u=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&u<=24&&u%4===0&&e.userData.parameters.angle>=360){let p=c.length/2/u;c=c.filter((f,m)=>Math.floor(m/2)%p===0)}let l=0;for(let p=0;p<c.length;p+=2)l+=(c[p]-c[(p===0?c.length:p)-2])*(c[p+1]+c[(p===0?c.length:p)-1]);n.length=0;let d=0;if(l<0)for(let p=0;p<c.length;p+=2)n.push(c[p],c[p+1],0),o.push(d++);else for(let p=c.length-2;p>=0;p-=2)n.push(c[p],c[p+1],0),o.push(d++);return i.push(d),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<r.length;){if(e.useNgonForTopBottomFaceDuringBake){let c=0;if((n[r[s]*3+2]===a||n[r[s]*3+2]===0)&&c++,(n[r[s+1]*3+2]===a||n[r[s+1]*3+2]===0)&&c++,(n[r[s+2]*3+2]===a||n[r[s+2]*3+2]===0)&&c++,c===3)break}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]){gc.set(n[r[s]*3],n[r[s]*3+1],n[r[s]*3+2]),bu.set(n[r[s+1]*3],n[r[s+1]*3+1],n[r[s+1]*3+2]),Su.set(n[r[s+4]*3],n[r[s+4]*3+1],n[r[s+4]*3+2]),wu.set(n[r[s+5]*3],n[r[s+5]*3+1],n[r[s+5]*3+2]),bu.sub(gc).normalize(),Su.sub(gc).normalize(),wu.sub(gc).normalize();let c=bu.cross(Su).dot(wu);Math.abs(c)>.005||t&&t.some((u,l)=>l%2===1?!1:s>=t[l]&&s<t[l+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.useNgonForTopBottomFaceDuringBake){let c=[],u=[],l=0;for(let d=0,p=0;d<n.length;d+=3,p++)n[d+2]===0&&(c.push(p),l++),n[d+2]===a&&u.push(p);if(e.userData.parameters.extrudeBevelSize===0){let d=u[0];u[0]=u[1],u[1]=d}c.reverse(),o.push(...c,...u),i.push(l,l)}return{indices:o,verticesPerFace:i}}var mr={};up(mr,{calcBoolean:()=>IP,calcBooleanTopological:()=>NP,freeMeshSet:()=>DP,getMeshSet:()=>MP,hasOpenEdges:()=>EP,transformMeshSet:()=>LP});var AP,gg=new Promise(n=>{AP=n});var hs=require("three");var _e,Yi;gg.then(n=>_e=n);function CP(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:a}=Tu(n.getAttribute("position"),o),s;if(r&&e){let{indices:c,verticesPerFace:u}=_u(i,a,n);s=u.length,t=[];for(let l=0,d=0;l<s;l++){t.push(u[l]);for(let p=0;p<u[l];p++)t.push(c[d++])}}else{let c=a.length;t=Array(c+c/3),s=0;for(let u=0,l=0;l<t.length;)t[l++]=3,s++,t[l++]=a[u++],t[l++]=a[u++],t[l++]=a[u++]}return{positions:i,faceIndices:t,nFaces:s}}function xg(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=_e._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(_e.HEAPU32.buffer,i,r):new Float32Array(_e.HEAPF32.buffer,i,r)).set(n,0),i}function vg(n){switch(n){case 0:return _e.OP.UNION;case 1:return _e.OP.INTERSECTION;case 2:return _e.OP.A_MINUS_B;case 3:return _e.OP.B_MINUS_A;case 4:return _e.OP.SYMMETRIC_DIFFERENCE;case 5:return _e.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function NP(n,r){Yi===void 0&&(Yi=_e.init_csg());let e=xg(n),t=_e.csg_calc_topological(Yi,e,n.length,vg(r));_e._free(e);let o=6,i=_e.HEAPU32.subarray(t>>2,(t>>2)+o),a=i.subarray(3,3+3),s=0,c=_e.HEAPU32[i[s]>>2],u=new Float32Array(_e.HEAPF32.subarray(c>>2,(c>>2)+a[s]));s++;let l=_e.HEAPU32[i[s]>>2],d=new Uint32Array(_e.HEAPU32.subarray(l>>2,(l>>2)+a[s]));s++;let p=_e.HEAPU32[i[s]>>2],f=new Uint8Array(_e.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return _e.free_mesh_data(t),{positions:u,indices:d,verticesPerFace:f}}function IP(n,r,e,t){Yi===void 0&&(Yi=_e.init_csg());let o=xg(n),i=_e.csg_calc(Yi,o,n.length,t,vg(r));_e._free(o);let a=5,s=_e.HEAPU32.subarray(i>>2,(i>>2)+a),c=s.subarray(2,2+3),u=0,l=_e.HEAPU32[s[u]>>2],d=_e.HEAPF32.subarray(l>>2,(l>>2)+c[u]);u++;let p=_e.HEAPU32[s[u]>>2],f=_e.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let m=c[u];e.setAttribute("position",new hs.Float32BufferAttribute(d,3)),e.setAttribute("normal",new hs.Float32BufferAttribute(f,3));let h=_e.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new hs.Sphere),e.boundingSphere.radius=-1,e.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},_e.free_mesh_data(i),m}function MP(n,r,e){if(_e===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,x)=>g+x,0)+i);for(let g=0,x=0,S=0;g<y.verticesPerFace.length;g++){o[S++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[S++]=y.indices[x++]}}else({positions:t,faceIndices:o,nFaces:i}=CP(n,r,e));let a=t.length,s=o.length,c=t.length,u=o.length,l=c*Float32Array.BYTES_PER_ELEMENT+u*Uint32Array.BYTES_PER_ELEMENT,d=c*Float32Array.BYTES_PER_ELEMENT,p=u*Uint32Array.BYTES_PER_ELEMENT,f=_e._malloc(l),m=new Float32Array(_e.HEAPF32.buffer,f,c),h=new Uint32Array(_e.HEAPU32.buffer,f+d,u);return m.set(t,0),h.set(o,0),_e.get_csg_mesh(f,a,f+d,s,i)}function EP(n){return _e.has_open_edges(n)}function LP(n,r){_e.transform_csg_mesh(n,r.elements)}function DP(n){_e.free_csg_mesh(n)}var BP={ConeGeometry:sy,CubeGeometry:ly,CylinderGeometry:ay,DodecahedronGeometry:dy,EllipseGeometry:Fi,HelixGeometry:zy,IcosahedronGeometry:Fy,LatheGeometry:ky,NonParametricGeometry:qy,PolygonGeometry:pc,PyramidGeometry:$y,RectangleGeometry:fc,SphereGeometry:Yy,PlaneGeometry:Ky,BackdropGeometry:Zy,StarGeometry:mc,TextFrameGeometry:Jy,TorusGeometry:eg,TorusKnotGeometry:rg,TriangleGeometry:og,PathGeometry:ig,VectorGeometry:Qt},vu=n=>BP[n.type].create(n);function Xi(n){return n!==null&&"booleanOp"in n}var Ki=class extends Li(xc.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new xc.Matrix4}updateVisible(){super.updateVisible(),this.visible=!Xi(this.parent)&&this.visible,Xi(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(mr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Xi(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof Ki&&(e.freeBooleanPointer(),Xi(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,t){let o=super.updateTransformState(e,t);return o&&Xi(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),Xi(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var vc=new Zi.Box3;function ys(n,r=0,e=n.count,t,o){let i=1/0,a=1/0,s=1/0,c=-1/0,u=-1/0,l=-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<a&&(a=f),m<s&&(s=m),p>c&&(c=p),f>u&&(u=f),m>l&&(l=m)}vc.min.set(i,a,s),vc.max.set(c,u,l),vc.getCenter(t),vc.getSize(o).multiplyScalar(.5)}var RP=new Zi.BufferGeometry,GP=new Zi.MeshBasicMaterial,Et=class extends Ki{constructor(r,e){super(RP,GP),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?ys(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Oo=require("three");var ur=require("three");var kg=require("three");var Dr=require("three");var gs=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}};var bg=require("three"),Pt=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=bg.MathUtils.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,a){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 Pt&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var Pu=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},gt=new Pu;var Ou=require("three");var Sg=require("three"),se=class extends Pt{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 a=this.getUnique(e,t);a&&this.uuid===void 0&&(this.uuid=Sg.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),c=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,t),this.generate(e,t,o)):super.build(e,t,o);if(a)return s.name=s.name||super.build(e,t,o),s.name;if(!this.getLabel()&&(!this.getShared(e,c)||e.context.ignoreCache||s.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,s.output,i);let l=this.generate(e,c,o);return e.addNodeCode(u+" = "+l+";"),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,a){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var ze=class extends se{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,a,s){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,a,s):e.isShader("vertex")?(c.vertex||(c.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(c.vertex.name,i,t)):(c.fragment||(c.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(c.fragment.name,i,t))}};var tt=class extends ze{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ou.Vector2?e:new Ou.Vector2(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,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,t)}};var Au=require("three");var Lt=class extends ze{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof Au.Vector3?e:new Au.Vector3(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,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,t)}};var wg=require("three"),xt=class extends wg.Color{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,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="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(s))return this.a=a==="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 Jt=class extends ze{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof xt?e:new xt(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,t)}};var VP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,Tg=/[a-z_0-9]+/gi,H=class extends se{constructor(e,t,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===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,a){let s,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 l=[];for(;s=Tg.exec(this.src);)l.push(s);for(let d=0;d<l.length;d++){let p=l[d],f=p[0],m=this.isMethod?!this.getInputByName(f):!0,h=f;if(this.keywords[f]||this.useKeywords&&m&>.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=gt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||gt.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&>.contains(h)&&e.include(gt.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 a=VP.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(Tg);if(s){let c=0;for(;c<s.length;){let u=s[c++],l;u==="in"||u==="out"||u==="inout"?l=s[c++]:(l=u,u="");let d=s[c++];this.inputs.push({name:d,type:l,qualifier:u})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var zP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Cu=class extends se{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Cu.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,i,a){this.src=e||"";let s,c,u="",l=zP.exec(e);this.useDefine=a??this.src.charAt(0)==="#",l&&l.length>1?(c=l[1],s=l[2],u=l[3]):(s=this.src,c="f"),this.name=s,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,a){return e.format(this.name,this.getType(e),t)}},Me=Cu;Me.PI="PI",Me.PI2="PI2",Me.RECIPROCAL_PI="RECIPROCAL_PI",Me.RECIPROCAL_PI2="RECIPROCAL_PI2",Me.LOG2="LOG2",Me.EPSILON="EPSILON";var jP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
4
|
-
)
|
|
5
|
-
`)
|
|
6
|
-
`)
|
|
7
|
-
`))}
|
|
1
|
+
"use strict";var Iv=Object.create;var ms=Object.defineProperty;var Nv=Object.getOwnPropertyDescriptor;var Ev=Object.getOwnPropertyNames;var Dv=Object.getPrototypeOf,Lv=Object.prototype.hasOwnProperty;var Bv=(n,t,e)=>t in n?ms(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var ar=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),Qp=(n,t)=>{for(var e in t)ms(n,e,{get:t[e],enumerable:!0})},Zp=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ev(t))!Lv.call(n,o)&&o!==e&&ms(n,o,{get:()=>t[o],enumerable:!(r=Nv(t,o))||r.enumerable});return n};var Qt=(n,t,e)=>(e=n!=null?Iv(Dv(n)):{},Zp(t||!n||!n.__esModule?ms(e,"default",{value:n,enumerable:!0}):e,n)),Rv=n=>Zp(ms({},"__esModule",{value:!0}),n);var Nt=(n,t,e)=>(Bv(n,typeof t!="symbol"?t+"":t,e),e);var Ly=ar((xd,Dy)=>{(function(n,t){typeof xd=="object"?Dy.exports=t():typeof define=="function"&&define.amd?define(t):n.Alea=t()})(xd,function(){"use strict";return n.importState=function(e){var r=new n;return r.importState(e),r},n;function n(){return function(e){var r=0,o=0,i=0,a=1;e.length==0&&(e=[+new Date]);var s=t();r=s(" "),o=s(" "),i=s(" ");for(var l=0;l<e.length;l++)r-=s(e[l]),r<0&&(r+=1),o-=s(e[l]),o<0&&(o+=1),i-=s(e[l]),i<0&&(i+=1);s=null;var d=function(){var c=2091639*r+a*23283064365386963e-26;return r=o,o=i,i=c-(a=c|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[r,o,i,a]},d.importState=function(c){r=+c[0]||0,o=+c[1]||0,i=+c[2]||0,a=+c[3]||0},d}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,r=function(o){o=o.toString();for(var i=0;i<o.length;i++){e+=o.charCodeAt(i);var a=.02519603282416938*e;e=a>>>0,a-=e,a*=e,e=a>>>0,a-=e,e+=a*4294967296}return(e>>>0)*23283064365386963e-26};return r.version="Mash 0.9",r}})});var ky=ar((Oc,zy)=>{(function(n,t){typeof Oc=="object"&&typeof zy<"u"?t(Oc):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Oc,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var a,s,l,d,c,u,p,f,h,m,y,g,x=t[0].length,S=t.length;if(S<x)throw new TypeError("Invalid matrix: m < n");for(var w=[],b=[],_=[],A=e==="f"?S:x,v=m=p=0;v<S;v++)b[v]=new Array(A).fill(0);for(v=0;v<x;v++)_[v]=new Array(x).fill(0);var M,O=new Array(x).fill(0);for(v=0;v<S;v++)for(a=0;a<x;a++)b[v][a]=t[v][a];for(v=0;v<x;v++){for(w[v]=p,h=0,l=v+1,a=v;a<S;a++)h+=Math.pow(b[a][v],2);if(h<i)p=0;else for(f=(u=b[v][v])*(p=u<0?Math.sqrt(h):-Math.sqrt(h))-h,b[v][v]=u-p,a=l;a<x;a++){for(h=0,s=v;s<S;s++)h+=b[s][v]*b[s][a];for(u=h/f,s=v;s<S;s++)b[s][a]=b[s][a]+u*b[s][v]}for(O[v]=p,h=0,a=l;a<x;a++)h+=Math.pow(b[v][a],2);if(h<i)p=0;else{for(f=(u=b[v][v+1])*(p=u<0?Math.sqrt(h):-Math.sqrt(h))-h,b[v][v+1]=u-p,a=l;a<x;a++)w[a]=b[v][a]/f;for(a=l;a<S;a++){for(h=0,s=l;s<x;s++)h+=b[a][s]*b[v][s];for(s=l;s<x;s++)b[a][s]=b[a][s]+h*w[s]}}m<(y=Math.abs(O[v])+Math.abs(w[v]))&&(m=y)}if(r)for(v=x-1;0<=v;v--){if(p!==0){for(f=b[v][v+1]*p,a=l;a<x;a++)_[a][v]=b[v][a]/f;for(a=l;a<x;a++){for(h=0,s=l;s<x;s++)h+=b[v][s]*_[s][a];for(s=l;s<x;s++)_[s][a]=_[s][a]+h*_[s][v]}}for(a=l;a<x;a++)_[v][a]=0,_[a][v]=0;_[v][v]=1,p=w[v],l=v}if(e){if(e==="f")for(v=x;v<S;v++){for(a=x;a<S;a++)b[v][a]=0;b[v][v]=1}for(v=x-1;0<=v;v--){for(l=v+1,p=O[v],a=l;a<A;a++)b[v][a]=0;if(p!==0){for(f=b[v][v]*p,a=l;a<A;a++){for(h=0,s=l;s<S;s++)h+=b[s][v]*b[s][a];for(u=h/f,s=v;s<S;s++)b[s][a]=b[s][a]+u*b[s][v]}for(a=v;a<S;a++)b[a][v]=b[a][v]/p}else for(a=v;a<S;a++)b[a][v]=0;b[v][v]=b[v][v]+1}}for(o*=m,s=x-1;0<=s;s--)for(var T=0;T<50;T++){for(M=!1,l=s;0<=l;l--){if(Math.abs(w[l])<=o){M=!0;break}if(Math.abs(O[l-1])<=o)break}if(!M){for(c=0,d=l-(h=1),v=l;v<s+1&&(u=h*w[v],w[v]=c*w[v],!(Math.abs(u)<=o));v++)if(p=O[v],O[v]=Math.sqrt(u*u+p*p),c=p/(f=O[v]),h=-u/f,e)for(a=0;a<S;a++)y=b[a][d],g=b[a][v],b[a][d]=y*c+g*h,b[a][v]=-y*h+g*c}if(g=O[s],l===s){if(g<0&&(O[s]=-g,r))for(a=0;a<x;a++)_[a][s]=-_[a][s];break}for(m=O[l],u=(((y=O[s-1])-g)*(y+g)+((p=w[s-1])-(f=w[s]))*(p+f))/(2*f*y),p=Math.sqrt(u*u+1),u=((m-g)*(m+g)+f*(y/(u<0?u-p:u+p)-f))/m,v=l+(h=c=1);v<s+1;v++){if(p=w[v],y=O[v],f=h*p,p*=c,g=Math.sqrt(u*u+f*f),u=m*(c=u/(w[v-1]=g))+p*(h=f/g),p=-m*h+p*c,f=y*h,y*=c,r)for(a=0;a<x;a++)m=_[a][v-1],g=_[a][v],_[a][v-1]=m*c+g*h,_[a][v]=-m*h+g*c;if(g=Math.sqrt(u*u+f*f),u=(c=u/(O[v-1]=g))*p+(h=f/g)*y,m=-h*p+c*y,e)for(a=0;a<S;a++)y=b[a][v-1],g=b[a][v],b[a][v-1]=y*c+g*h,b[a][v]=-y*h+g*c}w[l]=0,w[s]=u,O[s]=m}for(v=0;v<x;v++)O[v]<o&&(O[v]=0);return{u:b,q:O,v:_}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});var yg=ar((Vd,Gd)=>{(function(n,t){typeof Vd=="object"&&typeof Gd<"u"?Gd.exports=t():typeof define=="function"&&define.amd?define(t):(n=n||self,n.TinyQueue=t())})(Vd,function(){"use strict";var n=function(r,o){if(r===void 0&&(r=[]),o===void 0&&(o=t),this.data=r,this.length=this.data.length,this.compare=o,this.length>0)for(var i=(this.length>>1)-1;i>=0;i--)this._down(i)};n.prototype.push=function(r){this.data.push(r),this.length++,this._up(this.length-1)},n.prototype.pop=function(){if(this.length!==0){var r=this.data[0],o=this.data.pop();return this.length--,this.length>0&&(this.data[0]=o,this._down(0)),r}},n.prototype.peek=function(){return this.data[0]},n.prototype._up=function(r){for(var o=this,i=o.data,a=o.compare,s=i[r];r>0;){var l=r-1>>1,d=i[l];if(a(s,d)>=0)break;i[r]=d,r=l}i[r]=s},n.prototype._down=function(r){for(var o=this,i=o.data,a=o.compare,s=this.length>>1,l=i[r];r<s;){var d=(r<<1)+1,c=i[d],u=d+1;if(u<this.length&&a(i[u],c)<0&&(d=u,c=i[u]),a(c,l)>=0)break;i[r]=c,r=d}i[r]=l};function t(e,r){return e<r?-1:e>r?1:0}return n})});var xg=ar((hF,zd)=>{"use strict";var Dc=yg();Dc.default&&(Dc=Dc.default);zd.exports=gg;zd.exports.default=gg;function gg(n,t,e){t=t||1;for(var r,o,i,a,s=0;s<n[0].length;s++){var l=n[0][s];(!s||l[0]<r)&&(r=l[0]),(!s||l[1]<o)&&(o=l[1]),(!s||l[0]>i)&&(i=l[0]),(!s||l[1]>a)&&(a=l[1])}var d=i-r,c=a-o,u=Math.min(d,c),p=u/2;if(u===0){var f=[r,o];return f.distance=0,f}for(var h=new Dc(void 0,TC),m=r;m<i;m+=u)for(var y=o;y<a;y+=u)h.push(new bn(m+p,y+p,p,n));var g=PC(n),x=new bn(r+d/2,o+c/2,0,n);x.d>g.d&&(g=x);for(var S=h.length;h.length;){var w=h.pop();w.d>g.d&&(g=w,e&&console.log("found best %d after %d probes",Math.round(1e4*w.d)/1e4,S)),!(w.max-g.d<=t)&&(p=w.h/2,h.push(new bn(w.x-p,w.y-p,p,n)),h.push(new bn(w.x+p,w.y-p,p,n)),h.push(new bn(w.x-p,w.y+p,p,n)),h.push(new bn(w.x+p,w.y+p,p,n)),S+=4)}e&&(console.log("num probes: "+S),console.log("best distance: "+g.d));var b=[g.x,g.y];return b.distance=g.d,b}function TC(n,t){return t.max-n.max}function bn(n,t,e,r){this.x=n,this.y=t,this.h=e,this.d=CC(n,t,r),this.max=this.d+this.h*Math.SQRT2}function CC(n,t,e){for(var r=!1,o=1/0,i=0;i<e.length;i++)for(var a=e[i],s=0,l=a.length,d=l-1;s<l;d=s++){var c=a[s],u=a[d];c[1]>t!=u[1]>t&&n<(u[0]-c[0])*(t-c[1])/(u[1]-c[1])+c[0]&&(r=!r),o=Math.min(o,OC(n,t,c,u))}return o===0?0:(r?1:-1)*Math.sqrt(o)}function PC(n){for(var t=0,e=0,r=0,o=n[0],i=0,a=o.length,s=a-1;i<a;s=i++){var l=o[i],d=o[s],c=l[0]*d[1]-d[0]*l[1];e+=(l[0]+d[0])*c,r+=(l[1]+d[1])*c,t+=c*3}return t===0?new bn(o[0][0],o[0][1],0,n):new bn(e/t,r/t,0,n)}function OC(n,t,e,r){var o=e[0],i=e[1],a=r[0]-o,s=r[1]-i;if(a!==0||s!==0){var l=((n-o)*a+(t-i)*s)/(a*a+s*s);l>1?(o=r[0],i=r[1]):l>0&&(o+=a*l,i+=s*l)}return a=n-o,s=t-i,a*a+s*s}});var M0=ar(lu=>{(function(){"use strict";var n=function(){this.init()};n.prototype={init:function(){var c=this||t;return c._counter=1e3,c._html5AudioPool=[],c.html5PoolSize=10,c._codecs={},c._howls=[],c._muted=!1,c._volume=1,c._canPlayEvent="canplaythrough",c._navigator=typeof window<"u"&&window.navigator?window.navigator:null,c.masterGain=null,c.noAudio=!1,c.usingWebAudio=!0,c.autoSuspend=!0,c.ctx=null,c.autoUnlock=!0,c._setup(),c},volume:function(c){var u=this||t;if(c=parseFloat(c),u.ctx||d(),typeof c<"u"&&c>=0&&c<=1){if(u._volume=c,u._muted)return u;u.usingWebAudio&&u.masterGain.gain.setValueAtTime(c,t.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=u._howls[p]._soundById(f[h]);m&&m._node&&(m._node.volume=m._volume*c)}return u}return u._volume},mute:function(c){var u=this||t;u.ctx||d(),u._muted=c,u.usingWebAudio&&u.masterGain.gain.setValueAtTime(c?0:u._volume,t.ctx.currentTime);for(var p=0;p<u._howls.length;p++)if(!u._howls[p]._webAudio)for(var f=u._howls[p]._getSoundIds(),h=0;h<f.length;h++){var m=u._howls[p]._soundById(f[h]);m&&m._node&&(m._node.muted=c?!0:m._muted)}return u},stop:function(){for(var c=this||t,u=0;u<c._howls.length;u++)c._howls[u].stop();return c},unload:function(){for(var c=this||t,u=c._howls.length-1;u>=0;u--)c._howls[u].unload();return c.usingWebAudio&&c.ctx&&typeof c.ctx.close<"u"&&(c.ctx.close(),c.ctx=null,d()),c},codecs:function(c){return(this||t)._codecs[c.replace(/^x-/,"")]},_setup:function(){var c=this||t;if(c.state=c.ctx&&c.ctx.state||"suspended",c._autoSuspend(),!c.usingWebAudio)if(typeof Audio<"u")try{var u=new Audio;typeof u.oncanplaythrough>"u"&&(c._canPlayEvent="canplay")}catch{c.noAudio=!0}else c.noAudio=!0;try{var u=new Audio;u.muted&&(c.noAudio=!0)}catch{}return c.noAudio||c._setupCodecs(),c},_setupCodecs:function(){var c=this||t,u=null;try{u=typeof Audio<"u"?new Audio:null}catch{return c}if(!u||typeof u.canPlayType!="function")return c;var p=u.canPlayType("audio/mpeg;").replace(/^no$/,""),f=c._navigator?c._navigator.userAgent:"",h=f.match(/OPR\/([0-6].)/g),m=h&&parseInt(h[0].split("/")[1],10)<33,y=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,g=f.match(/Version\/(.*?) /),x=y&&g&&parseInt(g[1],10)<15;return c._codecs={mp3:!!(!m&&(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:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!x&&u.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!u.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(u.canPlayType("audio/x-flac;")||u.canPlayType("audio/flac;")).replace(/^no$/,"")},c},_unlockAudio:function(){var c=this||t;if(!(c._audioUnlocked||!c.ctx)){c._audioUnlocked=!1,c.autoUnlock=!1,!c._mobileUnloaded&&c.ctx.sampleRate!==44100&&(c._mobileUnloaded=!0,c.unload()),c._scratchBuffer=c.ctx.createBuffer(1,1,22050);var u=function(p){for(;c._html5AudioPool.length<c.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,c._releaseHtml5Audio(f)}catch{c.noAudio=!0;break}for(var h=0;h<c._howls.length;h++)if(!c._howls[h]._webAudio)for(var m=c._howls[h]._getSoundIds(),y=0;y<m.length;y++){var g=c._howls[h]._soundById(m[y]);g&&g._node&&!g._node._unlocked&&(g._node._unlocked=!0,g._node.load())}c._autoResume();var x=c.ctx.createBufferSource();x.buffer=c._scratchBuffer,x.connect(c.ctx.destination),typeof x.start>"u"?x.noteOn(0):x.start(0),typeof c.ctx.resume=="function"&&c.ctx.resume(),x.onended=function(){x.disconnect(0),c._audioUnlocked=!0,document.removeEventListener("touchstart",u,!0),document.removeEventListener("touchend",u,!0),document.removeEventListener("click",u,!0),document.removeEventListener("keydown",u,!0);for(var S=0;S<c._howls.length;S++)c._howls[S]._emit("unlock")}};return document.addEventListener("touchstart",u,!0),document.addEventListener("touchend",u,!0),document.addEventListener("click",u,!0),document.addEventListener("keydown",u,!0),c}},_obtainHtml5Audio:function(){var c=this||t;if(c._html5AudioPool.length)return c._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(c){var u=this||t;return c._unlocked&&u._html5AudioPool.push(c),u},_autoSuspend:function(){var c=this;if(!(!c.autoSuspend||!c.ctx||typeof c.ctx.suspend>"u"||!t.usingWebAudio)){for(var u=0;u<c._howls.length;u++)if(c._howls[u]._webAudio){for(var p=0;p<c._howls[u]._sounds.length;p++)if(!c._howls[u]._sounds[p]._paused)return c}return c._suspendTimer&&clearTimeout(c._suspendTimer),c._suspendTimer=setTimeout(function(){if(!!c.autoSuspend){c._suspendTimer=null,c.state="suspending";var f=function(){c.state="suspended",c._resumeAfterSuspend&&(delete c._resumeAfterSuspend,c._autoResume())};c.ctx.suspend().then(f,f)}},3e4),c}},_autoResume:function(){var c=this;if(!(!c.ctx||typeof c.ctx.resume>"u"||!t.usingWebAudio))return c.state==="running"&&c.ctx.state!=="interrupted"&&c._suspendTimer?(clearTimeout(c._suspendTimer),c._suspendTimer=null):c.state==="suspended"||c.state==="running"&&c.ctx.state==="interrupted"?(c.ctx.resume().then(function(){c.state="running";for(var u=0;u<c._howls.length;u++)c._howls[u]._emit("resume")}),c._suspendTimer&&(clearTimeout(c._suspendTimer),c._suspendTimer=null)):c.state==="suspending"&&(c._resumeAfterSuspend=!0),c}};var t=new n,e=function(c){var u=this;if(!c.src||c.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}u.init(c)};e.prototype={init:function(c){var u=this;return t.ctx||d(),u._autoplay=c.autoplay||!1,u._format=typeof c.format!="string"?c.format:[c.format],u._html5=c.html5||!1,u._muted=c.mute||!1,u._loop=c.loop||!1,u._pool=c.pool||5,u._preload=typeof c.preload=="boolean"||c.preload==="metadata"?c.preload:!0,u._rate=c.rate||1,u._sprite=c.sprite||{},u._src=typeof c.src!="string"?c.src:[c.src],u._volume=c.volume!==void 0?c.volume:1,u._xhr={method:c.xhr&&c.xhr.method?c.xhr.method:"GET",headers:c.xhr&&c.xhr.headers?c.xhr.headers:null,withCredentials:c.xhr&&c.xhr.withCredentials?c.xhr.withCredentials:!1},u._duration=0,u._state="unloaded",u._sounds=[],u._endTimers={},u._queue=[],u._playLock=!1,u._onend=c.onend?[{fn:c.onend}]:[],u._onfade=c.onfade?[{fn:c.onfade}]:[],u._onload=c.onload?[{fn:c.onload}]:[],u._onloaderror=c.onloaderror?[{fn:c.onloaderror}]:[],u._onplayerror=c.onplayerror?[{fn:c.onplayerror}]:[],u._onpause=c.onpause?[{fn:c.onpause}]:[],u._onplay=c.onplay?[{fn:c.onplay}]:[],u._onstop=c.onstop?[{fn:c.onstop}]:[],u._onmute=c.onmute?[{fn:c.onmute}]:[],u._onvolume=c.onvolume?[{fn:c.onvolume}]:[],u._onrate=c.onrate?[{fn:c.onrate}]:[],u._onseek=c.onseek?[{fn:c.onseek}]:[],u._onunlock=c.onunlock?[{fn:c.onunlock}]:[],u._onresume=[],u._webAudio=t.usingWebAudio&&!u._html5,typeof t.ctx<"u"&&t.ctx&&t.autoUnlock&&t._unlockAudio(),t._howls.push(u),u._autoplay&&u._queue.push({event:"play",action:function(){u.play()}}),u._preload&&u._preload!=="none"&&u.load(),u},load:function(){var c=this,u=null;if(t.noAudio){c._emit("loaderror",null,"No audio support.");return}typeof c._src=="string"&&(c._src=[c._src]);for(var p=0;p<c._src.length;p++){var f,h;if(c._format&&c._format[p])f=c._format[p];else{if(h=c._src[p],typeof h!="string"){c._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(h),f||(f=/\.([^.]+)$/.exec(h.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&t.codecs(f)){u=c._src[p];break}}if(!u){c._emit("loaderror",null,"No codec support for selected audio sources.");return}return c._src=u,c._state="loading",window.location.protocol==="https:"&&u.slice(0,5)==="http:"&&(c._html5=!0,c._webAudio=!1),new r(c),c._webAudio&&i(c),c},play:function(c,u){var p=this,f=null;if(typeof c=="number")f=c,c=null;else{if(typeof c=="string"&&p._state==="loaded"&&!p._sprite[c])return null;if(typeof c>"u"&&(c="__default",!p._playLock)){for(var h=0,m=0;m<p._sounds.length;m++)p._sounds[m]._paused&&!p._sounds[m]._ended&&(h++,f=p._sounds[m]._id);h===1?c=null:f=null}}var y=f?p._soundById(f):p._inactiveSound();if(!y)return null;if(f&&!c&&(c=y._sprite||"__default"),p._state!=="loaded"){y._sprite=c,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&&t._autoResume();var x=Math.max(0,y._seek>0?y._seek:p._sprite[c][0]/1e3),S=Math.max(0,(p._sprite[c][0]+p._sprite[c][1])/1e3-x),w=S*1e3/Math.abs(y._rate),b=p._sprite[c][0]/1e3,_=(p._sprite[c][0]+p._sprite[c][1])/1e3;y._sprite=c,y._ended=!1;var A=function(){y._paused=!1,y._seek=x,y._start=b,y._stop=_,y._loop=!!(y._loop||p._sprite[c][2])};if(x>=_){p._ended(y);return}var v=y._node;if(p._webAudio){var M=function(){p._playLock=!1,A(),p._refreshBuffer(y);var P=y._muted||p._muted?0:y._volume;v.gain.setValueAtTime(P,t.ctx.currentTime),y._playStart=t.ctx.currentTime,typeof v.bufferSource.start>"u"?y._loop?v.bufferSource.noteGrainOn(0,x,86400):v.bufferSource.noteGrainOn(0,x,S):y._loop?v.bufferSource.start(0,x,86400):v.bufferSource.start(0,x,S),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)};t.state==="running"&&t.ctx.state!=="interrupted"?M():(p._playLock=!0,p.once("resume",M),p._clearTimer(y._id))}else{var O=function(){v.currentTime=x,v.muted=y._muted||p._muted||t._muted||v.muted,v.volume=y._volume*t.volume(),v.playbackRate=y._rate;try{var P=v.play();if(P&&typeof Promise<"u"&&(P instanceof Promise||typeof P.then=="function")?(p._playLock=!0,A(),P.then(function(){p._playLock=!1,v._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,A(),p._emit("play",y._id)),v.playbackRate=y._rate,v.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}c!=="__default"||y._loop?p._endTimers[y._id]=setTimeout(p._ended.bind(p,y),w):(p._endTimers[y._id]=function(){p._ended(y),v.removeEventListener("ended",p._endTimers[y._id],!1)},v.addEventListener("ended",p._endTimers[y._id],!1))}catch(I){p._emit("playerror",y._id,I)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=p._src,v.load());var T=window&&window.ejecta||!v.readyState&&t._navigator.isCocoonJS;if(v.readyState>=3||T)O();else{p._playLock=!0,p._state="loading";var C=function(){p._state="loaded",O(),v.removeEventListener(t._canPlayEvent,C,!1)};v.addEventListener(t._canPlayEvent,C,!1),p._clearTimer(y._id)}}return y._id},pause:function(c){var u=this;if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"pause",action:function(){u.pause(c)}}),u;for(var p=u._getSoundIds(c),f=0;f<p.length;f++){u._clearTimer(p[f]);var h=u._soundById(p[f]);if(h&&!h._paused&&(h._seek=u.seek(p[f]),h._rateSeek=0,h._paused=!0,u._stopFade(p[f]),h._node))if(u._webAudio){if(!h._node.bufferSource)continue;typeof h._node.bufferSource.stop>"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),u._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||u._emit("pause",h?h._id:null)}return u},stop:function(c,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"stop",action:function(){p.stop(c)}}),p;for(var f=p._getSoundIds(c),h=0;h<f.length;h++){p._clearTimer(f[h]);var m=p._soundById(f[h]);m&&(m._seek=m._start||0,m._rateSeek=0,m._paused=!0,m._ended=!0,p._stopFade(f[h]),m._node&&(p._webAudio?m._node.bufferSource&&(typeof m._node.bufferSource.stop>"u"?m._node.bufferSource.noteOff(0):m._node.bufferSource.stop(0),p._cleanBuffer(m._node)):(!isNaN(m._node.duration)||m._node.duration===1/0)&&(m._node.currentTime=m._start||0,m._node.pause(),m._node.duration===1/0&&p._clearSound(m._node))),u||p._emit("stop",m._id))}return p},mute:function(c,u){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"mute",action:function(){p.mute(c,u)}}),p;if(typeof u>"u")if(typeof c=="boolean")p._muted=c;else return p._muted;for(var f=p._getSoundIds(u),h=0;h<f.length;h++){var m=p._soundById(f[h]);m&&(m._muted=c,m._interval&&p._stopFade(m._id),p._webAudio&&m._node?m._node.gain.setValueAtTime(c?0:m._volume,t.ctx.currentTime):m._node&&(m._node.muted=t._muted?!0:c),p._emit("mute",m._id))}return p},volume:function(){var c=this,u=arguments,p,f;if(u.length===0)return c._volume;if(u.length===1||u.length===2&&typeof u[1]>"u"){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=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(c._state!=="loaded"||c._playLock)return c._queue.push({event:"volume",action:function(){c.volume.apply(c,u)}}),c;typeof f>"u"&&(c._volume=p),f=c._getSoundIds(f);for(var g=0;g<f.length;g++)y=c._soundById(f[g]),y&&(y._volume=p,u[2]||c._stopFade(f[g]),c._webAudio&&y._node&&!y._muted?y._node.gain.setValueAtTime(p,t.ctx.currentTime):y._node&&!y._muted&&(y._node.volume=p*t.volume()),c._emit("volume",y._id))}else return y=f?c._soundById(f):c._sounds[0],y?y._volume:0;return c},fade:function(c,u,p,f){var h=this;if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"fade",action:function(){h.fade(c,u,p,f)}}),h;c=Math.min(Math.max(0,parseFloat(c)),1),u=Math.min(Math.max(0,parseFloat(u)),1),p=parseFloat(p),h.volume(c,f);for(var m=h._getSoundIds(f),y=0;y<m.length;y++){var g=h._soundById(m[y]);if(g){if(f||h._stopFade(m[y]),h._webAudio&&!g._muted){var x=t.ctx.currentTime,S=x+p/1e3;g._volume=c,g._node.gain.setValueAtTime(c,x),g._node.gain.linearRampToValueAtTime(u,S)}h._startFadeInterval(g,c,u,p,m[y],typeof f>"u")}}return h},_startFadeInterval:function(c,u,p,f,h,m){var y=this,g=u,x=p-u,S=Math.abs(x/.01),w=Math.max(4,S>0?f/S:f),b=Date.now();c._fadeTo=p,c._interval=setInterval(function(){var _=(Date.now()-b)/f;b=Date.now(),g+=x*_,g=Math.round(g*100)/100,x<0?g=Math.max(p,g):g=Math.min(p,g),y._webAudio?c._volume=g:y.volume(g,c._id,!0),m&&(y._volume=g),(p<u&&g<=p||p>u&&g>=p)&&(clearInterval(c._interval),c._interval=null,c._fadeTo=null,y.volume(p,c._id),y._emit("fade",c._id))},w)},_stopFade:function(c){var u=this,p=u._soundById(c);return p&&p._interval&&(u._webAudio&&p._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(p._interval),p._interval=null,u.volume(p._fadeTo,c),p._fadeTo=null,u._emit("fade",c)),u},loop:function(){var c=this,u=arguments,p,f,h;if(u.length===0)return c._loop;if(u.length===1)if(typeof u[0]=="boolean")p=u[0],c._loop=p;else return h=c._soundById(parseInt(u[0],10)),h?h._loop:!1;else u.length===2&&(p=u[0],f=parseInt(u[1],10));for(var m=c._getSoundIds(f),y=0;y<m.length;y++)h=c._soundById(m[y]),h&&(h._loop=p,c._webAudio&&h._node&&h._node.bufferSource&&(h._node.bufferSource.loop=p,p&&(h._node.bufferSource.loopStart=h._start||0,h._node.bufferSource.loopEnd=h._stop,c.playing(m[y])&&(c.pause(m[y],!0),c.play(m[y],!0)))));return c},rate:function(){var c=this,u=arguments,p,f;if(u.length===0)f=c._sounds[0]._id;else if(u.length===1){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=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(c._state!=="loaded"||c._playLock)return c._queue.push({event:"rate",action:function(){c.rate.apply(c,u)}}),c;typeof f>"u"&&(c._rate=p),f=c._getSoundIds(f);for(var g=0;g<f.length;g++)if(y=c._soundById(f[g]),y){c.playing(f[g])&&(y._rateSeek=c.seek(f[g]),y._playStart=c._webAudio?t.ctx.currentTime:y._playStart),y._rate=p,c._webAudio&&y._node&&y._node.bufferSource?y._node.bufferSource.playbackRate.setValueAtTime(p,t.ctx.currentTime):y._node&&(y._node.playbackRate=p);var x=c.seek(f[g]),S=(c._sprite[y._sprite][0]+c._sprite[y._sprite][1])/1e3-x,w=S*1e3/Math.abs(y._rate);(c._endTimers[f[g]]||!y._paused)&&(c._clearTimer(f[g]),c._endTimers[f[g]]=setTimeout(c._ended.bind(c,y),w)),c._emit("rate",y._id)}}else return y=c._soundById(f),y?y._rate:c._rate;return c},seek:function(){var c=this,u=arguments,p,f;if(u.length===0)c._sounds.length&&(f=c._sounds[0]._id);else if(u.length===1){var h=c._getSoundIds(),m=h.indexOf(u[0]);m>=0?f=parseInt(u[0],10):c._sounds.length&&(f=c._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"&&(c._state!=="loaded"||c._playLock))return c._queue.push({event:"seek",action:function(){c.seek.apply(c,u)}}),c;var y=c._soundById(f);if(y)if(typeof p=="number"&&p>=0){var g=c.playing(f);g&&c.pause(f,!0),y._seek=p,y._ended=!1,c._clearTimer(f),!c._webAudio&&y._node&&!isNaN(y._node.duration)&&(y._node.currentTime=p);var x=function(){g&&c.play(f,!0),c._emit("seek",f)};if(g&&!c._webAudio){var S=function(){c._playLock?setTimeout(S,0):x()};setTimeout(S,0)}else x()}else if(c._webAudio){var w=c.playing(f)?t.ctx.currentTime-y._playStart:0,b=y._rateSeek?y._rateSeek-y._seek:0;return y._seek+(b+w*Math.abs(y._rate))}else return y._node.currentTime;return c},playing:function(c){var u=this;if(typeof c=="number"){var p=u._soundById(c);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(c){var u=this,p=u._duration,f=u._soundById(c);return f&&(p=u._sprite[f._sprite][1]/1e3),p},state:function(){return this._state},unload:function(){for(var c=this,u=c._sounds,p=0;p<u.length;p++)u[p]._paused||c.stop(u[p]._id),c._webAudio||(c._clearSound(u[p]._node),u[p]._node.removeEventListener("error",u[p]._errorFn,!1),u[p]._node.removeEventListener(t._canPlayEvent,u[p]._loadFn,!1),u[p]._node.removeEventListener("ended",u[p]._endFn,!1),t._releaseHtml5Audio(u[p]._node)),delete u[p]._node,c._clearTimer(u[p]._id);var f=t._howls.indexOf(c);f>=0&&t._howls.splice(f,1);var h=!0;for(p=0;p<t._howls.length;p++)if(t._howls[p]._src===c._src||c._src.indexOf(t._howls[p]._src)>=0){h=!1;break}return o&&h&&delete o[c._src],t.noAudio=!1,c._state="unloaded",c._sounds=[],c=null,null},on:function(c,u,p,f){var h=this,m=h["_on"+c];return typeof u=="function"&&m.push(f?{id:p,fn:u,once:f}:{id:p,fn:u}),h},off:function(c,u,p){var f=this,h=f["_on"+c],m=0;if(typeof u=="number"&&(p=u,u=null),u||p)for(m=0;m<h.length;m++){var y=p===h[m].id;if(u===h[m].fn&&y||!u&&y){h.splice(m,1);break}}else if(c)f["_on"+c]=[];else{var g=Object.keys(f);for(m=0;m<g.length;m++)g[m].indexOf("_on")===0&&Array.isArray(f[g[m]])&&(f[g[m]]=[])}return f},once:function(c,u,p){var f=this;return f.on(c,u,p,1),f},_emit:function(c,u,p){for(var f=this,h=f["_on"+c],m=h.length-1;m>=0;m--)(!h[m].id||h[m].id===u||c==="load")&&(setTimeout(function(y){y.call(this,u,p)}.bind(f,h[m].fn),0),h[m].once&&f.off(c,h[m].fn,h[m].id));return f._loadQueue(c),f},_loadQueue:function(c){var u=this;if(u._queue.length>0){var p=u._queue[0];p.event===c&&(u._queue.shift(),u._loadQueue()),c||p.action()}return u},_ended:function(c){var u=this,p=c._sprite;if(!u._webAudio&&c._node&&!c._node.paused&&!c._node.ended&&c._node.currentTime<c._stop)return setTimeout(u._ended.bind(u,c),100),u;var f=!!(c._loop||u._sprite[p][2]);if(u._emit("end",c._id),!u._webAudio&&f&&u.stop(c._id,!0).play(c._id),u._webAudio&&f){u._emit("play",c._id),c._seek=c._start||0,c._rateSeek=0,c._playStart=t.ctx.currentTime;var h=(c._stop-c._start)*1e3/Math.abs(c._rate);u._endTimers[c._id]=setTimeout(u._ended.bind(u,c),h)}return u._webAudio&&!f&&(c._paused=!0,c._ended=!0,c._seek=c._start||0,c._rateSeek=0,u._clearTimer(c._id),u._cleanBuffer(c._node),t._autoSuspend()),!u._webAudio&&!f&&u.stop(c._id,!0),u},_clearTimer:function(c){var u=this;if(u._endTimers[c]){if(typeof u._endTimers[c]!="function")clearTimeout(u._endTimers[c]);else{var p=u._soundById(c);p&&p._node&&p._node.removeEventListener("ended",u._endTimers[c],!1)}delete u._endTimers[c]}return u},_soundById:function(c){for(var u=this,p=0;p<u._sounds.length;p++)if(c===u._sounds[p]._id)return u._sounds[p];return null},_inactiveSound:function(){var c=this;c._drain();for(var u=0;u<c._sounds.length;u++)if(c._sounds[u]._ended)return c._sounds[u].reset();return new r(c)},_drain:function(){var c=this,u=c._pool,p=0,f=0;if(!(c._sounds.length<u)){for(f=0;f<c._sounds.length;f++)c._sounds[f]._ended&&p++;for(f=c._sounds.length-1;f>=0;f--){if(p<=u)return;c._sounds[f]._ended&&(c._webAudio&&c._sounds[f]._node&&c._sounds[f]._node.disconnect(0),c._sounds.splice(f,1),p--)}}},_getSoundIds:function(c){var u=this;if(typeof c>"u"){for(var p=[],f=0;f<u._sounds.length;f++)p.push(u._sounds[f]._id);return p}else return[c]},_refreshBuffer:function(c){var u=this;return c._node.bufferSource=t.ctx.createBufferSource(),c._node.bufferSource.buffer=o[u._src],c._panner?c._node.bufferSource.connect(c._panner):c._node.bufferSource.connect(c._node),c._node.bufferSource.loop=c._loop,c._loop&&(c._node.bufferSource.loopStart=c._start||0,c._node.bufferSource.loopEnd=c._stop||0),c._node.bufferSource.playbackRate.setValueAtTime(c._rate,t.ctx.currentTime),u},_cleanBuffer:function(c){var u=this,p=t._navigator&&t._navigator.vendor.indexOf("Apple")>=0;if(t._scratchBuffer&&c.bufferSource&&(c.bufferSource.onended=null,c.bufferSource.disconnect(0),p))try{c.bufferSource.buffer=t._scratchBuffer}catch{}return c.bufferSource=null,u},_clearSound:function(c){var u=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);u||(c.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(c){this._parent=c,this.init()};r.prototype={init:function(){var c=this,u=c._parent;return c._muted=u._muted,c._loop=u._loop,c._volume=u._volume,c._rate=u._rate,c._seek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,u._sounds.push(c),c.create(),c},create:function(){var c=this,u=c._parent,p=t._muted||c._muted||c._parent._muted?0:c._volume;return u._webAudio?(c._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),c._node.gain.setValueAtTime(p,t.ctx.currentTime),c._node.paused=!0,c._node.connect(t.masterGain)):t.noAudio||(c._node=t._obtainHtml5Audio(),c._errorFn=c._errorListener.bind(c),c._node.addEventListener("error",c._errorFn,!1),c._loadFn=c._loadListener.bind(c),c._node.addEventListener(t._canPlayEvent,c._loadFn,!1),c._endFn=c._endListener.bind(c),c._node.addEventListener("ended",c._endFn,!1),c._node.src=u._src,c._node.preload=u._preload===!0?"auto":u._preload,c._node.volume=p*t.volume(),c._node.load()),c},reset:function(){var c=this,u=c._parent;return c._muted=u._muted,c._loop=u._loop,c._volume=u._volume,c._rate=u._rate,c._seek=0,c._rateSeek=0,c._paused=!0,c._ended=!0,c._sprite="__default",c._id=++t._counter,c},_errorListener:function(){var c=this;c._parent._emit("loaderror",c._id,c._node.error?c._node.error.code:0),c._node.removeEventListener("error",c._errorFn,!1)},_loadListener:function(){var c=this,u=c._parent;u._duration=Math.ceil(c._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()),c._node.removeEventListener(t._canPlayEvent,c._loadFn,!1)},_endListener:function(){var c=this,u=c._parent;u._duration===1/0&&(u._duration=Math.ceil(c._node.duration*10)/10,u._sprite.__default[1]===1/0&&(u._sprite.__default[1]=u._duration*1e3),u._ended(c)),c._node.removeEventListener("ended",c._endFn,!1)}};var o={},i=function(c){var u=c._src;if(o[u]){c._duration=o[u].duration,l(c);return}if(/^data:[^;]+;base64,/.test(u)){for(var p=atob(u.split(",")[1]),f=new Uint8Array(p.length),h=0;h<p.length;++h)f[h]=p.charCodeAt(h);s(f.buffer,c)}else{var m=new XMLHttpRequest;m.open(c._xhr.method,u,!0),m.withCredentials=c._xhr.withCredentials,m.responseType="arraybuffer",c._xhr.headers&&Object.keys(c._xhr.headers).forEach(function(y){m.setRequestHeader(y,c._xhr.headers[y])}),m.onload=function(){var y=(m.status+"")[0];if(y!=="0"&&y!=="2"&&y!=="3"){c._emit("loaderror",null,"Failed loading audio file with status: "+m.status+".");return}s(m.response,c)},m.onerror=function(){c._webAudio&&(c._html5=!0,c._webAudio=!1,c._sounds=[],delete o[u],c.load())},a(m)}},a=function(c){try{c.send()}catch{c.onerror()}},s=function(c,u){var p=function(){u._emit("loaderror",null,"Decoding audio data failed.")},f=function(h){h&&u._sounds.length>0?(o[u._src]=h,l(u,h)):p()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(c).then(f).catch(p):t.ctx.decodeAudioData(c,f,p)},l=function(c,u){u&&!c._duration&&(c._duration=u.duration),Object.keys(c._sprite).length===0&&(c._sprite={__default:[0,c._duration*1e3]}),c._state!=="loaded"&&(c._state="loaded",c._emit("load"),c._loadQueue())},d=function(){if(!!t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch{t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var c=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),u=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),p=u?parseInt(u[1],10):null;if(c&&p&&p<9){var f=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!f&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:t,Howl:e}}),typeof lu<"u"&&(lu.Howler=t,lu.Howl=e),typeof global<"u"?(global.HowlerGlobal=n,global.Howler=t,global.Howl=e,global.Sound=r):typeof window<"u"&&(window.HowlerGlobal=n,window.Howler=t,window.Howl=e,window.Sound=r)})();(function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var r=e._howls.length-1;r>=0;r--)e._howls[r].stereo(t);return e},HowlerGlobal.prototype.pos=function(t,e,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(e=typeof e!="number"?o._pos[1]:e,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,e,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,e,r,o,i,a){var s=this;if(!s.ctx||!s.ctx.listener)return s;var l=s._orientation;if(e=typeof e!="number"?l[1]:e,r=typeof r!="number"?l[2]:r,o=typeof o!="number"?l[3]:o,i=typeof i!="number"?l[4]:i,a=typeof a!="number"?l[5]:a,typeof t=="number")s._orientation=[t,e,r,o,i,a],typeof s.ctx.listener.forwardX<"u"?(s.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),s.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),s.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),s.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),s.ctx.listener.upY.setTargetAtTime(i,Howler.ctx.currentTime,.1),s.ctx.listener.upZ.setTargetAtTime(a,Howler.ctx.currentTime,.1)):s.ctx.listener.setOrientation(t,e,r,o,i,a);else return l;return s},Howl.prototype.init=function(t){return function(e){var r=this;return r._orientation=e.orientation||[1,0,0],r._stereo=e.stereo||null,r._pos=e.pos||null,r._pannerAttr={coneInnerAngle:typeof e.coneInnerAngle<"u"?e.coneInnerAngle:360,coneOuterAngle:typeof e.coneOuterAngle<"u"?e.coneOuterAngle:360,coneOuterGain:typeof e.coneOuterGain<"u"?e.coneOuterGain:0,distanceModel:typeof e.distanceModel<"u"?e.distanceModel:"inverse",maxDistance:typeof e.maxDistance<"u"?e.maxDistance:1e4,panningModel:typeof e.panningModel<"u"?e.panningModel:"HRTF",refDistance:typeof e.refDistance<"u"?e.refDistance:1,rolloffFactor:typeof e.rolloffFactor<"u"?e.rolloffFactor:1},r._onstereo=e.onstereo?[{fn:e.onstereo}]:[],r._onpos=e.onpos?[{fn:e.onpos}]:[],r._onorientation=e.onorientation?[{fn:e.onorientation}]:[],t.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,e){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,e)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var i=r._getSoundIds(e),a=0;a<i.length;a++){var s=r._soundById(i[a]);if(s)if(typeof t=="number")s._stereo=t,s._pos=[t,0,0],s._node&&(s._pannerAttr.panningModel="equalpower",(!s._panner||!s._panner.pan)&&n(s,o),o==="spatial"?typeof s._panner.positionX<"u"?(s._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),s._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),s._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):s._panner.setPosition(t,0,0):s._panner.pan.setValueAtTime(t,Howler.ctx.currentTime)),r._emit("stereo",s._id);else return s._stereo}return r},Howl.prototype.pos=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"pos",action:function(){i.pos(t,e,r,o)}}),i;if(e=typeof e!="number"?0:e,r=typeof r!="number"?-.5:r,typeof o>"u")if(typeof t=="number")i._pos=[t,e,r];else return i._pos;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._pos=[t,e,r],l._node&&((!l._panner||l._panner.pan)&&n(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setPosition(t,e,r)),i._emit("pos",l._id);else return l._pos}return i},Howl.prototype.orientation=function(t,e,r,o){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"orientation",action:function(){i.orientation(t,e,r,o)}}),i;if(e=typeof e!="number"?i._orientation[1]:e,r=typeof r!="number"?i._orientation[2]:r,typeof o>"u")if(typeof t=="number")i._orientation=[t,e,r];else return i._orientation;for(var a=i._getSoundIds(o),s=0;s<a.length;s++){var l=i._soundById(a[s]);if(l)if(typeof t=="number")l._orientation=[t,e,r],l._node&&(l._panner||(l._pos||(l._pos=i._pos||[0,0,-.5]),n(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(t,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setOrientation(t,e,r)),i._emit("orientation",l._id);else return l._orientation}return i},Howl.prototype.pannerAttr=function(){var t=this,e=arguments,r,o,i;if(!t._webAudio)return t;if(e.length===0)return t._pannerAttr;if(e.length===1)if(typeof e[0]=="object")r=e[0],typeof o>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return i=t._soundById(parseInt(e[0],10)),i?i._pannerAttr:t._pannerAttr;else e.length===2&&(r=e[0],o=parseInt(e[1],10));for(var a=t._getSoundIds(o),s=0;s<a.length;s++)if(i=t._soundById(a[s]),i){var l=i._pannerAttr;l={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:l.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:l.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:l.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:l.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:l.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:l.panningModel};var d=i._panner;d?(d.coneInnerAngle=l.coneInnerAngle,d.coneOuterAngle=l.coneOuterAngle,d.coneOuterGain=l.coneOuterGain,d.distanceModel=l.distanceModel,d.maxDistance=l.maxDistance,d.refDistance=l.refDistance,d.rolloffFactor=l.rolloffFactor,d.panningModel=l.panningModel):(i._pos||(i._pos=t._pos||[0,0,-.5]),n(i,"spatial"))}return t},Sound.prototype.init=function(t){return function(){var e=this,r=e._parent;e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,t.call(this),e._stereo?r.stereo(e._stereo):e._pos&&r.pos(e._pos[0],e._pos[1],e._pos[2],e._id)}}(Sound.prototype.init),Sound.prototype.reset=function(t){return function(){var e=this,r=e._parent;return e._orientation=r._orientation,e._stereo=r._stereo,e._pos=r._pos,e._pannerAttr=r._pannerAttr,e._stereo?r.stereo(e._stereo):e._pos?r.pos(e._pos[0],e._pos[1],e._pos[2],e._id):e._panner&&(e._panner.disconnect(0),e._panner=void 0,r._refreshBuffer(e)),t.call(this)}}(Sound.prototype.reset);var n=function(t,e){e=e||"spatial",e==="spatial"?(t._panner=Howler.ctx.createPanner(),t._panner.coneInnerAngle=t._pannerAttr.coneInnerAngle,t._panner.coneOuterAngle=t._pannerAttr.coneOuterAngle,t._panner.coneOuterGain=t._pannerAttr.coneOuterGain,t._panner.distanceModel=t._pannerAttr.distanceModel,t._panner.maxDistance=t._pannerAttr.maxDistance,t._panner.refDistance=t._pannerAttr.refDistance,t._panner.rolloffFactor=t._pannerAttr.rolloffFactor,t._panner.panningModel=t._pannerAttr.panningModel,typeof t._panner.positionX<"u"?(t._panner.positionX.setValueAtTime(t._pos[0],Howler.ctx.currentTime),t._panner.positionY.setValueAtTime(t._pos[1],Howler.ctx.currentTime),t._panner.positionZ.setValueAtTime(t._pos[2],Howler.ctx.currentTime)):t._panner.setPosition(t._pos[0],t._pos[1],t._pos[2]),typeof t._panner.orientationX<"u"?(t._panner.orientationX.setValueAtTime(t._orientation[0],Howler.ctx.currentTime),t._panner.orientationY.setValueAtTime(t._orientation[1],Howler.ctx.currentTime),t._panner.orientationZ.setValueAtTime(t._orientation[2],Howler.ctx.currentTime)):t._panner.setOrientation(t._orientation[0],t._orientation[1],t._orientation[2])):(t._panner=Howler.ctx.createStereoPanner(),t._panner.pan.setValueAtTime(t._stereo,Howler.ctx.currentTime)),t._panner.connect(t._node),t._paused||t._parent.pause(t._id,!0).play(t._id,!0)}})()});var Ix=ar((PQ,Mx)=>{"use strict";function a2(n){for(var t=new Array(n),e=0;e<n;++e)t[e]=e;return t}Mx.exports=a2});var Dx=ar((OQ,Ex)=>{Ex.exports=function(n){return n!=null&&(Nx(n)||s2(n)||!!n._isBuffer)};function Nx(n){return!!n.constructor&&typeof n.constructor.isBuffer=="function"&&n.constructor.isBuffer(n)}function s2(n){return typeof n.readFloatLE=="function"&&typeof n.slice=="function"&&Nx(n.slice(0,0))}});var fs=ar((MQ,Lx)=>{var l2=Ix(),c2=Dx(),u2=typeof Float64Array<"u";function d2(n,t){return n[0]-t[0]}function p2(){var n=this.stride,t=new Array(n.length),e;for(e=0;e<t.length;++e)t[e]=[Math.abs(n[e]),e];t.sort(d2);var r=new Array(t.length);for(e=0;e<r.length;++e)r[e]=t[e][1];return r}function f2(n,t){var e=["View",t,"d",n].join("");t<0&&(e="View_Nil"+n);var r=n==="generic";if(t===-1){var o="function "+e+"(a){this.data=a;};var proto="+e+".prototype;proto.dtype='"+n+"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new "+e+"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_"+e+"(a){return new "+e+"(a);}",m=new Function(o);return m()}else if(t===0){var o="function "+e+"(a,d) {this.data = a;this.offset = d};var proto="+e+".prototype;proto.dtype='"+n+"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function "+e+"_copy() {return new "+e+"(this.data,this.offset)};proto.pick=function "+e+"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function "+e+"_get(){return "+(r?"this.data.get(this.offset)":"this.data[this.offset]")+"};proto.set=function "+e+"_set(v){return "+(r?"this.data.set(this.offset,v)":"this.data[this.offset]=v")+"};return function construct_"+e+"(a,b,c,d){return new "+e+"(a,d)}",m=new Function("TrivialArray",o);return m(Mu[n][0])}var o=["'use strict'"],i=l2(t),a=i.map(function(y){return"i"+y}),s="this.offset+"+i.map(function(y){return"this.stride["+y+"]*i"+y}).join("+"),l=i.map(function(y){return"b"+y}).join(","),d=i.map(function(y){return"c"+y}).join(",");o.push("function "+e+"(a,"+l+","+d+",d){this.data=a","this.shape=["+l+"]","this.stride=["+d+"]","this.offset=d|0}","var proto="+e+".prototype","proto.dtype='"+n+"'","proto.dimension="+t),o.push("Object.defineProperty(proto,'size',{get:function "+e+"_size(){return "+i.map(function(y){return"this.shape["+y+"]"}).join("*"),"}})"),t===1?o.push("proto.order=[0]"):(o.push("Object.defineProperty(proto,'order',{get:"),t<4?(o.push("function "+e+"_order(){"),t===2?o.push("return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})"):t===3&&o.push("var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})")):o.push("ORDER})")),o.push("proto.set=function "+e+"_set("+a.join(",")+",v){"),r?o.push("return this.data.set("+s+",v)}"):o.push("return this.data["+s+"]=v}"),o.push("proto.get=function "+e+"_get("+a.join(",")+"){"),r?o.push("return this.data.get("+s+")}"):o.push("return this.data["+s+"]}"),o.push("proto.index=function "+e+"_index(",a.join(),"){return "+s+"}"),o.push("proto.hi=function "+e+"_hi("+a.join(",")+"){return new "+e+"(this.data,"+i.map(function(y){return["(typeof i",y,"!=='number'||i",y,"<0)?this.shape[",y,"]:i",y,"|0"].join("")}).join(",")+","+i.map(function(y){return"this.stride["+y+"]"}).join(",")+",this.offset)}");var c=i.map(function(y){return"a"+y+"=this.shape["+y+"]"}),u=i.map(function(y){return"c"+y+"=this.stride["+y+"]"});o.push("proto.lo=function "+e+"_lo("+a.join(",")+"){var b=this.offset,d=0,"+c.join(",")+","+u.join(","));for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'&&i"+p+">=0){d=i"+p+"|0;b+=c"+p+"*d;a"+p+"-=d}");o.push("return new "+e+"(this.data,"+i.map(function(y){return"a"+y}).join(",")+","+i.map(function(y){return"c"+y}).join(",")+",b)}"),o.push("proto.step=function "+e+"_step("+a.join(",")+"){var "+i.map(function(y){return"a"+y+"=this.shape["+y+"]"}).join(",")+","+i.map(function(y){return"b"+y+"=this.stride["+y+"]"}).join(",")+",c=this.offset,d=0,ceil=Math.ceil");for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'){d=i"+p+"|0;if(d<0){c+=b"+p+"*(a"+p+"-1);a"+p+"=ceil(-a"+p+"/d)}else{a"+p+"=ceil(a"+p+"/d)}b"+p+"*=d}");o.push("return new "+e+"(this.data,"+i.map(function(y){return"a"+y}).join(",")+","+i.map(function(y){return"b"+y}).join(",")+",c)}");for(var f=new Array(t),h=new Array(t),p=0;p<t;++p)f[p]="a[i"+p+"]",h[p]="b[i"+p+"]";o.push("proto.transpose=function "+e+"_transpose("+a+"){"+a.map(function(y,g){return y+"=("+y+"===undefined?"+g+":"+y+"|0)"}).join(";"),"var a=this.shape,b=this.stride;return new "+e+"(this.data,"+f.join(",")+","+h.join(",")+",this.offset)}"),o.push("proto.pick=function "+e+"_pick("+a+"){var a=[],b=[],c=this.offset");for(var p=0;p<t;++p)o.push("if(typeof i"+p+"==='number'&&i"+p+">=0){c=(c+this.stride["+p+"]*i"+p+")|0}else{a.push(this.shape["+p+"]);b.push(this.stride["+p+"])}");o.push("var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}"),o.push("return function construct_"+e+"(data,shape,stride,offset){return new "+e+"(data,"+i.map(function(y){return"shape["+y+"]"}).join(",")+","+i.map(function(y){return"stride["+y+"]"}).join(",")+",offset)}");var m=new Function("CTOR_LIST","ORDER",o.join(`
|
|
2
|
+
`));return m(Mu[n],p2)}function h2(n){if(c2(n))return"buffer";if(u2)switch(Object.prototype.toString.call(n)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(n)?"array":"generic"}var Mu={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],bigint64:[],biguint64:[],buffer:[],generic:[]};function m2(n,t,e,r){if(n===void 0){var d=Mu.array[0];return d([])}else typeof n=="number"&&(n=[n]);t===void 0&&(t=[n.length]);var o=t.length;if(e===void 0){e=new Array(o);for(var i=o-1,a=1;i>=0;--i)e[i]=a,a*=t[i]}if(r===void 0){r=0;for(var i=0;i<o;++i)e[i]<0&&(r-=(t[i]-1)*e[i])}for(var s=h2(n),l=Mu[s];l.length<=o+1;)l.push(f2(s,l.length-1));var d=l[o+1];return d(n,t,e,r)}Lx.exports=m2});var Rx=ar((IQ,Bx)=>{"use strict";function y2(n,t){for(var e=1,r=n.length,o=n[0],i=n[0],a=1;a<r;++a)if(i=o,o=n[a],t(o,i)){if(a===e){e++;continue}n[e++]=o}return n.length=e,n}function g2(n){for(var t=1,e=n.length,r=n[0],o=n[0],i=1;i<e;++i,o=r)if(o=r,r=n[i],r!==o){if(i===t){t++;continue}n[t++]=r}return n.length=t,n}function x2(n,t,e){return n.length===0?n:t?(e||n.sort(t),y2(n,t)):(e||n.sort(),g2(n))}Bx.exports=x2});var zx=ar((NQ,Gx)=>{"use strict";var v2=Rx();function Vx(n,t,e){var r=n.length,o=t.arrayArgs.length,i=t.indexArgs.length>0,a=[],s=[],l=0,d=0,c,u;for(c=0;c<r;++c)s.push(["i",c,"=0"].join(""));for(u=0;u<o;++u)for(c=0;c<r;++c)d=l,l=n[c],c===0?s.push(["d",u,"s",c,"=t",u,"p",l].join("")):s.push(["d",u,"s",c,"=(t",u,"p",l,"-s",d,"*t",u,"p",d,")"].join(""));for(s.length>0&&a.push("var "+s.join(",")),c=r-1;c>=0;--c)l=n[c],a.push(["for(i",c,"=0;i",c,"<s",l,";++i",c,"){"].join(""));for(a.push(e),c=0;c<r;++c){for(d=l,l=n[c],u=0;u<o;++u)a.push(["p",u,"+=d",u,"s",c].join(""));i&&(c>0&&a.push(["index[",d,"]-=s",d].join("")),a.push(["++index[",l,"]"].join(""))),a.push("}")}return a.join(`
|
|
3
|
+
`)}function b2(n,t,e,r){for(var o=t.length,i=e.arrayArgs.length,a=e.blockSize,s=e.indexArgs.length>0,l=[],d=0;d<i;++d)l.push(["var offset",d,"=p",d].join(""));for(var d=n;d<o;++d)l.push(["for(var j"+d+"=SS[",t[d],"]|0;j",d,">0;){"].join("")),l.push(["if(j",d,"<",a,"){"].join("")),l.push(["s",t[d],"=j",d].join("")),l.push(["j",d,"=0"].join("")),l.push(["}else{s",t[d],"=",a].join("")),l.push(["j",d,"-=",a,"}"].join("")),s&&l.push(["index[",t[d],"]=j",d].join(""));for(var d=0;d<i;++d){for(var c=["offset"+d],u=n;u<o;++u)c.push(["j",u,"*t",d,"p",t[u]].join(""));l.push(["p",d,"=(",c.join("+"),")"].join(""))}l.push(Vx(t,e,r));for(var d=n;d<o;++d)l.push("}");return l.join(`
|
|
4
|
+
`)}function S2(n){for(var t=0,e=n[0].length;t<e;){for(var r=1;r<n.length;++r)if(n[r][t]!==n[0][t])return t;++t}return t}function jp(n,t,e){for(var r=n.body,o=[],i=[],a=0;a<n.args.length;++a){var s=n.args[a];if(!(s.count<=0)){var l=new RegExp(s.name,"g"),d="",c=t.arrayArgs.indexOf(a);switch(t.argTypes[a]){case"offset":var u=t.offsetArgIndex.indexOf(a),p=t.offsetArgs[u];c=p.array,d="+q"+u;case"array":d="p"+c+d;var f="l"+a,h="a"+c;if(t.arrayBlockIndices[c]===0)s.count===1?e[c]==="generic"?s.lvalue?(o.push(["var ",f,"=",h,".get(",d,")"].join("")),r=r.replace(l,f),i.push([h,".set(",d,",",f,")"].join(""))):r=r.replace(l,[h,".get(",d,")"].join("")):r=r.replace(l,[h,"[",d,"]"].join("")):e[c]==="generic"?(o.push(["var ",f,"=",h,".get(",d,")"].join("")),r=r.replace(l,f),s.lvalue&&i.push([h,".set(",d,",",f,")"].join(""))):(o.push(["var ",f,"=",h,"[",d,"]"].join("")),r=r.replace(l,f),s.lvalue&&i.push([h,"[",d,"]=",f].join("")));else{for(var m=[s.name],y=[d],g=0;g<Math.abs(t.arrayBlockIndices[c]);g++)m.push("\\s*\\[([^\\]]+)\\]"),y.push("$"+(g+1)+"*t"+c+"b"+g);if(l=new RegExp(m.join(""),"g"),d=y.join("+"),e[c]==="generic")throw new Error("cwise: Generic arrays not supported in combination with blocks!");r=r.replace(l,[h,"[",d,"]"].join(""))}break;case"scalar":r=r.replace(l,"Y"+t.scalarArgs.indexOf(a));break;case"index":r=r.replace(l,"index");break;case"shape":r=r.replace(l,"shape");break}}}return[o.join(`
|
|
5
|
+
`),r,i.join(`
|
|
6
|
+
`)].join(`
|
|
7
|
+
`).trim()}function w2(n){for(var t=new Array(n.length),e=!0,r=0;r<n.length;++r){var o=n[r],i=o.match(/\d+/);i?i=i[0]:i="",o.charAt(0)===0?t[r]="u"+o.charAt(1)+i:t[r]=o.charAt(0)+i,r>0&&(e=e&&t[r]===t[r-1])}return e?t[0]:t.join("")}function _2(n,t){for(var e=t[1].length-Math.abs(n.arrayBlockIndices[0])|0,r=new Array(n.arrayArgs.length),o=new Array(n.arrayArgs.length),i=0;i<n.arrayArgs.length;++i)o[i]=t[2*i],r[i]=t[2*i+1];for(var a=[],s=[],l=[],d=[],c=[],i=0;i<n.arrayArgs.length;++i){n.arrayBlockIndices[i]<0?(l.push(0),d.push(e),a.push(e),s.push(e+n.arrayBlockIndices[i])):(l.push(n.arrayBlockIndices[i]),d.push(n.arrayBlockIndices[i]+e),a.push(0),s.push(n.arrayBlockIndices[i]));for(var u=[],p=0;p<r[i].length;p++)l[i]<=r[i][p]&&r[i][p]<d[i]&&u.push(r[i][p]-l[i]);c.push(u)}for(var f=["SS"],h=["'use strict'"],m=[],p=0;p<e;++p)m.push(["s",p,"=SS[",p,"]"].join(""));for(var i=0;i<n.arrayArgs.length;++i){f.push("a"+i),f.push("t"+i),f.push("p"+i);for(var p=0;p<e;++p)m.push(["t",i,"p",p,"=t",i,"[",l[i]+p,"]"].join(""));for(var p=0;p<Math.abs(n.arrayBlockIndices[i]);++p)m.push(["t",i,"b",p,"=t",i,"[",a[i]+p,"]"].join(""))}for(var i=0;i<n.scalarArgs.length;++i)f.push("Y"+i);if(n.shapeArgs.length>0&&m.push("shape=SS.slice(0)"),n.indexArgs.length>0){for(var y=new Array(e),i=0;i<e;++i)y[i]="0";m.push(["index=[",y.join(","),"]"].join(""))}for(var i=0;i<n.offsetArgs.length;++i){for(var g=n.offsetArgs[i],x=[],p=0;p<g.offset.length;++p)g.offset[p]!==0&&(g.offset[p]===1?x.push(["t",g.array,"p",p].join("")):x.push([g.offset[p],"*t",g.array,"p",p].join("")));x.length===0?m.push("q"+i+"=0"):m.push(["q",i,"=",x.join("+")].join(""))}var S=v2([].concat(n.pre.thisVars).concat(n.body.thisVars).concat(n.post.thisVars));m=m.concat(S),m.length>0&&h.push("var "+m.join(","));for(var i=0;i<n.arrayArgs.length;++i)h.push("p"+i+"|=0");n.pre.body.length>3&&h.push(jp(n.pre,n,o));var w=jp(n.body,n,o),b=S2(c);b<e?h.push(b2(b,c[0],n,w)):h.push(Vx(c[0],n,w)),n.post.body.length>3&&h.push(jp(n.post,n,o)),n.debug&&console.log("-----Generated cwise routine for ",t,`:
|
|
8
|
+
`+h.join(`
|
|
9
|
+
`)+`
|
|
10
|
+
----------`);var _=[n.funcName||"unnamed","_cwise_loop_",r[0].join("s"),"m",b,w2(o)].join(""),A=new Function(["function ",_,"(",f.join(","),"){",h.join(`
|
|
11
|
+
`),"} return ",_].join(""));return A()}Gx.exports=_2});var Fx=ar((EQ,kx)=>{"use strict";var A2=zx();function T2(n){var t=["'use strict'","var CACHED={}"],e=[],r=n.funcName+"_cwise_thunk";t.push(["return function ",r,"(",n.shimArgs.join(","),"){"].join(""));for(var o=[],i=[],a=[["array",n.arrayArgs[0],".shape.slice(",Math.max(0,n.arrayBlockIndices[0]),n.arrayBlockIndices[0]<0?","+n.arrayBlockIndices[0]+")":")"].join("")],s=[],l=[],d=0;d<n.arrayArgs.length;++d){var c=n.arrayArgs[d];e.push(["t",c,"=array",c,".dtype,","r",c,"=array",c,".order"].join("")),o.push("t"+c),o.push("r"+c),i.push("t"+c),i.push("r"+c+".join()"),a.push("array"+c+".data"),a.push("array"+c+".stride"),a.push("array"+c+".offset|0"),d>0&&(s.push("array"+n.arrayArgs[0]+".shape.length===array"+c+".shape.length+"+(Math.abs(n.arrayBlockIndices[0])-Math.abs(n.arrayBlockIndices[d]))),l.push("array"+n.arrayArgs[0]+".shape[shapeIndex+"+Math.max(0,n.arrayBlockIndices[0])+"]===array"+c+".shape[shapeIndex+"+Math.max(0,n.arrayBlockIndices[d])+"]"))}n.arrayArgs.length>1&&(t.push("if (!("+s.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same dimensionality!')"),t.push("for(var shapeIndex=array"+n.arrayArgs[0]+".shape.length-"+Math.abs(n.arrayBlockIndices[0])+"; shapeIndex-->0;) {"),t.push("if (!("+l.join(" && ")+")) throw new Error('cwise: Arrays do not all have the same shape!')"),t.push("}"));for(var d=0;d<n.scalarArgs.length;++d)a.push("scalar"+n.scalarArgs[d]);e.push(["type=[",i.join(","),"].join()"].join("")),e.push("proc=CACHED[type]"),t.push("var "+e.join(",")),t.push(["if(!proc){","CACHED[type]=proc=compile([",o.join(","),"])}","return proc(",a.join(","),")}"].join("")),n.debug&&console.log(`-----Generated thunk:
|
|
12
|
+
`+t.join(`
|
|
13
|
+
`)+`
|
|
14
|
+
----------`);var u=new Function("compile",t.join(`
|
|
15
|
+
`));return u(A2.bind(void 0,n))}kx.exports=T2});var Ux=ar((DQ,jx)=>{"use strict";var C2=Fx();function P2(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName="",this.pre=null,this.body=null,this.post=null,this.debug=!1}function O2(n){var t=new P2;t.pre=n.pre,t.body=n.body,t.post=n.post;var e=n.args.slice(0);t.argTypes=e;for(var r=0;r<e.length;++r){var o=e[r];if(o==="array"||typeof o=="object"&&o.blockIndices){if(t.argTypes[r]="array",t.arrayArgs.push(r),t.arrayBlockIndices.push(o.blockIndices?o.blockIndices:0),t.shimArgs.push("array"+r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array args");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array args")}else if(o==="scalar")t.scalarArgs.push(r),t.shimArgs.push("scalar"+r);else if(o==="index"){if(t.indexArgs.push(r),r<t.pre.args.length&&t.pre.args[r].count>0)throw new Error("cwise: pre() block may not reference array index");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array index");if(r<t.post.args.length&&t.post.args[r].count>0)throw new Error("cwise: post() block may not reference array index")}else if(o==="shape"){if(t.shapeArgs.push(r),r<t.pre.args.length&&t.pre.args[r].lvalue)throw new Error("cwise: pre() block may not write to array shape");if(r<t.body.args.length&&t.body.args[r].lvalue)throw new Error("cwise: body() block may not write to array shape");if(r<t.post.args.length&&t.post.args[r].lvalue)throw new Error("cwise: post() block may not write to array shape")}else if(typeof o=="object"&&o.offset)t.argTypes[r]="offset",t.offsetArgs.push({array:o.array,offset:o.offset}),t.offsetArgIndex.push(r);else throw new Error("cwise: Unknown argument type "+e[r])}if(t.arrayArgs.length<=0)throw new Error("cwise: No array arguments specified");if(t.pre.args.length>e.length)throw new Error("cwise: Too many arguments in pre() block");if(t.body.args.length>e.length)throw new Error("cwise: Too many arguments in body() block");if(t.post.args.length>e.length)throw new Error("cwise: Too many arguments in post() block");return t.debug=!!n.printCode||!!n.debug,t.funcName=n.funcName||"cwise",t.blockSize=n.blockSize||64,C2(t)}jx.exports=O2});var hs=ar(Me=>{"use strict";var gr=Ux(),Iu={body:"",args:[],thisVars:[],localVars:[]};function Up(n){if(!n)return Iu;for(var t=0;t<n.args.length;++t){var e=n.args[t];t===0?n.args[t]={name:e,lvalue:!0,rvalue:!!n.rvalue,count:n.count||1}:n.args[t]={name:e,lvalue:!1,rvalue:!0,count:1}}return n.thisVars||(n.thisVars=[]),n.localVars||(n.localVars=[]),n}function M2(n){return gr({args:n.args,pre:Up(n.pre),body:Up(n.body),post:Up(n.proc),funcName:n.funcName})}function ct(n){for(var t=[],e=0;e<n.args.length;++e)t.push("a"+e);var r=new Function("P",["return function ",n.funcName,"_ndarrayops(",t.join(","),") {P(",t.join(","),");return a0}"].join(""));return r(M2(n))}var Hx={add:"+",sub:"-",mul:"*",div:"/",mod:"%",band:"&",bor:"|",bxor:"^",lshift:"<<",rshift:">>",rrshift:">>>"};(function(){for(var n in Hx){var t=Hx[n];Me[n]=ct({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Me[n+"eq"]=ct({args:["array","array"],body:{args:["a","b"],body:"a"+t+"=b"},rvalue:!0,funcName:n+"eq"}),Me[n+"s"]=ct({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Me[n+"seq"]=ct({args:["array","scalar"],body:{args:["a","s"],body:"a"+t+"=s"},rvalue:!0,funcName:n+"seq"})}})();var qx={not:"!",bnot:"~",neg:"-",recip:"1.0/"};(function(){for(var n in qx){var t=qx[n];Me[n]=ct({args:["array","array"],body:{args:["a","b"],body:"a="+t+"b"},funcName:n}),Me[n+"eq"]=ct({args:["array"],body:{args:["a"],body:"a="+t+"a"},rvalue:!0,count:2,funcName:n+"eq"})}})();var Wx={and:"&&",or:"||",eq:"===",neq:"!==",lt:"<",gt:">",leq:"<=",geq:">="};(function(){for(var n in Wx){var t=Wx[n];Me[n]=ct({args:["array","array","array"],body:{args:["a","b","c"],body:"a=b"+t+"c"},funcName:n}),Me[n+"s"]=ct({args:["array","array","scalar"],body:{args:["a","b","s"],body:"a=b"+t+"s"},funcName:n+"s"}),Me[n+"eq"]=ct({args:["array","array"],body:{args:["a","b"],body:"a=a"+t+"b"},rvalue:!0,count:2,funcName:n+"eq"}),Me[n+"seq"]=ct({args:["array","scalar"],body:{args:["a","s"],body:"a=a"+t+"s"},rvalue:!0,count:2,funcName:n+"seq"})}})();var $x=["abs","acos","asin","atan","ceil","cos","exp","floor","log","round","sin","sqrt","tan"];(function(){for(var n=0;n<$x.length;++n){var t=$x[n];Me[t]=ct({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b)",thisVars:["this_f"]},funcName:t}),Me[t+"eq"]=ct({args:["array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a"],body:"a=this_f(a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"})}})();var Yx=["max","min","atan2","pow"];(function(){for(var n=0;n<Yx.length;++n){var t=Yx[n];Me[t]=ct({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t}),Me[t+"s"]=ct({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(b,c)",thisVars:["this_f"]},funcName:t+"s"}),Me[t+"eq"]=ct({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"eq"}),Me[t+"seq"]=ct({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(a,b)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"seq"})}})();var Xx=["atan2","pow"];(function(){for(var n=0;n<Xx.length;++n){var t=Xx[n];Me[t+"op"]=ct({args:["array","array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"op"}),Me[t+"ops"]=ct({args:["array","array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b","c"],body:"a=this_f(c,b)",thisVars:["this_f"]},funcName:t+"ops"}),Me[t+"opeq"]=ct({args:["array","array"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opeq"}),Me[t+"opseq"]=ct({args:["array","scalar"],pre:{args:[],body:"this_f=Math."+t,thisVars:["this_f"]},body:{args:["a","b"],body:"a=this_f(b,a)",thisVars:["this_f"]},rvalue:!0,count:2,funcName:t+"opseq"})}})();Me.any=gr({args:["array"],pre:Iu,body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"if(a){return true}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return false"},funcName:"any"});Me.all=gr({args:["array"],pre:Iu,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1}],body:"if(!x){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"all"});Me.sum=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s+=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"sum"});Me.prod=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=1"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:1}],body:"this_s*=a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"prod"});Me.norm2squared=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm2squared"});Me.norm2=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:2}],body:"this_s+=a*a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return Math.sqrt(this_s)"},funcName:"norm2"});Me.norminf=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:4}],body:"if(-a>this_s){this_s=-a}else if(a>this_s){this_s=a}",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norminf"});Me.norm1=gr({args:["array"],pre:{args:[],localVars:[],thisVars:["this_s"],body:"this_s=0"},body:{args:[{name:"a",lvalue:!1,rvalue:!0,count:3}],body:"this_s+=a<0?-a:a",localVars:[],thisVars:["this_s"]},post:{args:[],localVars:[],thisVars:["this_s"],body:"return this_s"},funcName:"norm1"});Me.sup=gr({args:["array"],pre:{body:"this_h=-Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Me.inf=gr({args:["array"],pre:{body:"this_h=Infinity",args:[],thisVars:["this_h"],localVars:[]},body:{body:"if(_inline_1_arg0_<this_h)this_h=_inline_1_arg0_",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_h"],localVars:[]},post:{body:"return this_h",args:[],thisVars:["this_h"],localVars:[]}});Me.argmin=gr({args:["index","array","shape"],pre:{body:"{this_v=Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_<this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Me.argmax=gr({args:["index","array","shape"],pre:{body:"{this_v=-Infinity;this_i=_inline_0_arg2_.slice(0)}",args:[{name:"_inline_0_arg0_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg1_",lvalue:!1,rvalue:!1,count:0},{name:"_inline_0_arg2_",lvalue:!1,rvalue:!0,count:1}],thisVars:["this_i","this_v"],localVars:[]},body:{body:"{if(_inline_1_arg1_>this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}",args:[{name:"_inline_1_arg0_",lvalue:!1,rvalue:!0,count:2},{name:"_inline_1_arg1_",lvalue:!1,rvalue:!0,count:2}],thisVars:["this_i","this_v"],localVars:["_inline_1_k"]},post:{body:"{return this_i}",args:[],thisVars:["this_i"],localVars:[]}});Me.random=ct({args:["array"],pre:{args:[],body:"this_f=Math.random",thisVars:["this_f"]},body:{args:["a"],body:"a=this_f()",thisVars:["this_f"]},funcName:"random"});Me.assign=ct({args:["array","array"],body:{args:["a","b"],body:"a=b"},funcName:"assign"});Me.assigns=ct({args:["array","scalar"],body:{args:["a","b"],body:"a=b"},funcName:"assigns"});Me.equals=gr({args:["array","array"],pre:Iu,body:{args:[{name:"x",lvalue:!1,rvalue:!0,count:1},{name:"y",lvalue:!1,rvalue:!0,count:1}],body:"if(x!==y){return false}",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:"return true"},funcName:"equals"})});var vv=ar((see,xv)=>{xv.exports=function(t,e){for(var r=t.split("."),o=e.split("."),i=0;i<3;i++){var a=Number(r[i]),s=Number(o[i]);if(a>s)return 1;if(s>a)return-1;if(!isNaN(a)&&isNaN(s))return 1;if(isNaN(a)&&!isNaN(s))return-1}return 0}});var F2={};Qp(F2,{default:()=>Lu});module.exports=Rv(F2);var Bu=require("three");function Jp(n){for(let t of Object.keys(n))n[t]===void 0&&delete n[t];return n}function sr(n,t){return Object.setPrototypeOf(n,t),n}function vl(n){return Array.isArray(n)?n:[n]}function ef(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var Vv=typeof global=="object"&&global&&global.Object===Object&&global,bl=Vv;var Gv=typeof self=="object"&&self&&self.Object===Object&&self,zv=bl||Gv||Function("return this")(),wt=zv;var kv=wt.Symbol,Et=kv;var tf=Object.prototype,Fv=tf.hasOwnProperty,jv=tf.toString,ys=Et?Et.toStringTag:void 0;function Uv(n){var t=Fv.call(n,ys),e=n[ys];try{n[ys]=void 0;var r=!0}catch{}var o=jv.call(n);return r&&(t?n[ys]=e:delete n[ys]),o}var rf=Uv;var Hv=Object.prototype,qv=Hv.toString;function Wv(n){return qv.call(n)}var of=Wv;var $v="[object Null]",Yv="[object Undefined]",nf=Et?Et.toStringTag:void 0;function Xv(n){return n==null?n===void 0?Yv:$v:nf&&nf in Object(n)?rf(n):of(n)}var br=Xv;function Kv(n){return n!=null&&typeof n=="object"}var kt=Kv;var Qv="[object Symbol]";function Zv(n){return typeof n=="symbol"||kt(n)&&br(n)==Qv}var yi=Zv;function Jv(n,t){for(var e=-1,r=n==null?0:n.length,o=Array(r);++e<r;)o[e]=t(n[e],e,n);return o}var Sl=Jv;var eb=Array.isArray,ut=eb;var tb=1/0,af=Et?Et.prototype:void 0,sf=af?af.toString:void 0;function lf(n){if(typeof n=="string")return n;if(ut(n))return Sl(n,lf)+"";if(yi(n))return sf?sf.call(n):"";var t=n+"";return t=="0"&&1/n==-tb?"-0":t}var cf=lf;function rb(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var Sr=rb;function ob(n){return n}var uf=ob;var nb="[object AsyncFunction]",ib="[object Function]",ab="[object GeneratorFunction]",sb="[object Proxy]";function lb(n){if(!Sr(n))return!1;var t=br(n);return t==ib||t==ab||t==nb||t==sb}var wl=lb;var cb=wt["__core-js_shared__"],_l=cb;var df=function(){var n=/[^.]+$/.exec(_l&&_l.keys&&_l.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function ub(n){return!!df&&df in n}var pf=ub;var db=Function.prototype,pb=db.toString;function fb(n){if(n!=null){try{return pb.call(n)}catch{}try{return n+""}catch{}}return""}var No=fb;var hb=/[\\^$.*+?()[\]{}|]/g,mb=/^\[object .+?Constructor\]$/,yb=Function.prototype,gb=Object.prototype,xb=yb.toString,vb=gb.hasOwnProperty,bb=RegExp("^"+xb.call(vb).replace(hb,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Sb(n){if(!Sr(n)||pf(n))return!1;var t=wl(n)?bb:mb;return t.test(No(n))}var ff=Sb;function wb(n,t){return n?.[t]}var hf=wb;function _b(n,t){var e=hf(n,t);return ff(e)?e:void 0}var lr=_b;var Ab=lr(wt,"WeakMap"),Al=Ab;var mf=Object.create,Tb=function(){function n(){}return function(t){if(!Sr(t))return{};if(mf)return mf(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),yf=Tb;function Cb(n,t,e){switch(e.length){case 0:return n.call(t);case 1:return n.call(t,e[0]);case 2:return n.call(t,e[0],e[1]);case 3:return n.call(t,e[0],e[1],e[2])}return n.apply(t,e)}var gf=Cb;function Pb(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var xf=Pb;var Ob=800,Mb=16,Ib=Date.now;function Nb(n){var t=0,e=0;return function(){var r=Ib(),o=Mb-(r-e);if(e=r,o>0){if(++t>=Ob)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var vf=Nb;function Eb(n){return function(){return n}}var bf=Eb;var Db=function(){try{var n=lr(Object,"defineProperty");return n({},"",{}),n}catch{}}(),gi=Db;var Lb=gi?function(n,t){return gi(n,"toString",{configurable:!0,enumerable:!1,value:bf(t),writable:!0})}:uf,Sf=Lb;var Bb=vf(Sf),wf=Bb;function Rb(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var _f=Rb;var Vb=9007199254740991,Gb=/^(?:0|[1-9]\d*)$/;function zb(n,t){var e=typeof n;return t=t??Vb,!!t&&(e=="number"||e!="symbol"&&Gb.test(n))&&n>-1&&n%1==0&&n<t}var xi=zb;function kb(n,t,e){t=="__proto__"&&gi?gi(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Tl=kb;function Fb(n,t){return n===t||n!==n&&t!==t}var vi=Fb;var jb=Object.prototype,Ub=jb.hasOwnProperty;function Hb(n,t,e){var r=n[t];(!(Ub.call(n,t)&&vi(r,e))||e===void 0&&!(t in n))&&Tl(n,t,e)}var bi=Hb;function qb(n,t,e,r){var o=!e;e||(e={});for(var i=-1,a=t.length;++i<a;){var s=t[i],l=r?r(e[s],n[s],s,e,n):void 0;l===void 0&&(l=n[s]),o?Tl(e,s,l):bi(e,s,l)}return e}var oo=qb;var Af=Math.max;function Wb(n,t,e){return t=Af(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Af(r.length-t,0),a=Array(i);++o<i;)a[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=e(a),gf(n,this,s)}}var Tf=Wb;var $b=9007199254740991;function Yb(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=$b}var Si=Yb;function Xb(n){return n!=null&&Si(n.length)&&!wl(n)}var Cl=Xb;var Kb=Object.prototype;function Qb(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||Kb;return n===e}var wi=Qb;function Zb(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var Cf=Zb;var Jb="[object Arguments]";function eS(n){return kt(n)&&br(n)==Jb}var Vu=eS;var Pf=Object.prototype,tS=Pf.hasOwnProperty,rS=Pf.propertyIsEnumerable,oS=Vu(function(){return arguments}())?Vu:function(n){return kt(n)&&tS.call(n,"callee")&&!rS.call(n,"callee")},_i=oS;function nS(){return!1}var Of=nS;var Nf=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Mf=Nf&&typeof module=="object"&&module&&!module.nodeType&&module,iS=Mf&&Mf.exports===Nf,If=iS?wt.Buffer:void 0,aS=If?If.isBuffer:void 0,sS=aS||Of,Gn=sS;var lS="[object Arguments]",cS="[object Array]",uS="[object Boolean]",dS="[object Date]",pS="[object Error]",fS="[object Function]",hS="[object Map]",mS="[object Number]",yS="[object Object]",gS="[object RegExp]",xS="[object Set]",vS="[object String]",bS="[object WeakMap]",SS="[object ArrayBuffer]",wS="[object DataView]",_S="[object Float32Array]",AS="[object Float64Array]",TS="[object Int8Array]",CS="[object Int16Array]",PS="[object Int32Array]",OS="[object Uint8Array]",MS="[object Uint8ClampedArray]",IS="[object Uint16Array]",NS="[object Uint32Array]",rt={};rt[_S]=rt[AS]=rt[TS]=rt[CS]=rt[PS]=rt[OS]=rt[MS]=rt[IS]=rt[NS]=!0;rt[lS]=rt[cS]=rt[SS]=rt[uS]=rt[wS]=rt[dS]=rt[pS]=rt[fS]=rt[hS]=rt[mS]=rt[yS]=rt[gS]=rt[xS]=rt[vS]=rt[bS]=!1;function ES(n){return kt(n)&&Si(n.length)&&!!rt[br(n)]}var Ef=ES;function DS(n){return function(t){return n(t)}}var Ai=DS;var Df=typeof exports=="object"&&exports&&!exports.nodeType&&exports,gs=Df&&typeof module=="object"&&module&&!module.nodeType&&module,LS=gs&&gs.exports===Df,Gu=LS&&bl.process,BS=function(){try{var n=gs&&gs.require&&gs.require("util").types;return n||Gu&&Gu.binding&&Gu.binding("util")}catch{}}(),Eo=BS;var Lf=Eo&&Eo.isTypedArray,RS=Lf?Ai(Lf):Ef,Pl=RS;var VS=Object.prototype,GS=VS.hasOwnProperty;function zS(n,t){var e=ut(n),r=!e&&_i(n),o=!e&&!r&&Gn(n),i=!e&&!r&&!o&&Pl(n),a=e||r||o||i,s=a?Cf(n.length,String):[],l=s.length;for(var d in n)(t||GS.call(n,d))&&!(a&&(d=="length"||o&&(d=="offset"||d=="parent")||i&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||xi(d,l)))&&s.push(d);return s}var Ol=zS;function kS(n,t){return function(e){return n(t(e))}}var Ml=kS;var FS=Ml(Object.keys,Object),Bf=FS;var jS=Object.prototype,US=jS.hasOwnProperty;function HS(n){if(!wi(n))return Bf(n);var t=[];for(var e in Object(n))US.call(n,e)&&e!="constructor"&&t.push(e);return t}var Rf=HS;function qS(n){return Cl(n)?Ol(n):Rf(n)}var Ti=qS;function WS(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var Vf=WS;var $S=Object.prototype,YS=$S.hasOwnProperty;function XS(n){if(!Sr(n))return Vf(n);var t=wi(n),e=[];for(var r in n)r=="constructor"&&(t||!YS.call(n,r))||e.push(r);return e}var Gf=XS;function KS(n){return Cl(n)?Ol(n,!0):Gf(n)}var Ci=KS;var QS=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ZS=/^\w*$/;function JS(n,t){if(ut(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||yi(n)?!0:ZS.test(n)||!QS.test(n)||t!=null&&n in Object(t)}var zf=JS;var e1=lr(Object,"create"),Do=e1;function t1(){this.__data__=Do?Do(null):{},this.size=0}var kf=t1;function r1(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var Ff=r1;var o1="__lodash_hash_undefined__",n1=Object.prototype,i1=n1.hasOwnProperty;function a1(n){var t=this.__data__;if(Do){var e=t[n];return e===o1?void 0:e}return i1.call(t,n)?t[n]:void 0}var jf=a1;var s1=Object.prototype,l1=s1.hasOwnProperty;function c1(n){var t=this.__data__;return Do?t[n]!==void 0:l1.call(t,n)}var Uf=c1;var u1="__lodash_hash_undefined__";function d1(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Do&&t===void 0?u1:t,this}var Hf=d1;function Pi(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Pi.prototype.clear=kf;Pi.prototype.delete=Ff;Pi.prototype.get=jf;Pi.prototype.has=Uf;Pi.prototype.set=Hf;var zu=Pi;function p1(){this.__data__=[],this.size=0}var qf=p1;function f1(n,t){for(var e=n.length;e--;)if(vi(n[e][0],t))return e;return-1}var Ko=f1;var h1=Array.prototype,m1=h1.splice;function y1(n){var t=this.__data__,e=Ko(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():m1.call(t,e,1),--this.size,!0}var Wf=y1;function g1(n){var t=this.__data__,e=Ko(t,n);return e<0?void 0:t[e][1]}var $f=g1;function x1(n){return Ko(this.__data__,n)>-1}var Yf=x1;function v1(n,t){var e=this.__data__,r=Ko(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var Xf=v1;function Oi(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Oi.prototype.clear=qf;Oi.prototype.delete=Wf;Oi.prototype.get=$f;Oi.prototype.has=Yf;Oi.prototype.set=Xf;var Qo=Oi;var b1=lr(wt,"Map"),Zo=b1;function S1(){this.size=0,this.__data__={hash:new zu,map:new(Zo||Qo),string:new zu}}var Kf=S1;function w1(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var Qf=w1;function _1(n,t){var e=n.__data__;return Qf(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Jo=_1;function A1(n){var t=Jo(this,n).delete(n);return this.size-=t?1:0,t}var Zf=A1;function T1(n){return Jo(this,n).get(n)}var Jf=T1;function C1(n){return Jo(this,n).has(n)}var eh=C1;function P1(n,t){var e=Jo(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var th=P1;function Mi(n){var t=-1,e=n==null?0:n.length;for(this.clear();++t<e;){var r=n[t];this.set(r[0],r[1])}}Mi.prototype.clear=Kf;Mi.prototype.delete=Zf;Mi.prototype.get=Jf;Mi.prototype.has=eh;Mi.prototype.set=th;var zn=Mi;var O1="Expected a function";function ku(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(O1);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var a=n.apply(this,r);return e.cache=i.set(o,a)||i,a};return e.cache=new(ku.Cache||zn),e}ku.Cache=zn;var rh=ku;var M1=500;function I1(n){var t=rh(n,function(r){return e.size===M1&&e.clear(),r}),e=t.cache;return t}var oh=I1;var N1=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,E1=/\\(\\)?/g,D1=oh(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(N1,function(e,r,o,i){t.push(o?i.replace(E1,"$1"):r||e)}),t}),nh=D1;function L1(n){return n==null?"":cf(n)}var ih=L1;function B1(n,t){return ut(n)?n:zf(n,t)?[n]:nh(ih(n))}var Pr=B1;var R1=1/0;function V1(n){if(typeof n=="string"||yi(n))return n;var t=n+"";return t=="0"&&1/n==-R1?"-0":t}var en=V1;function G1(n,t){t=Pr(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[en(t[e++])];return e&&e==r?n:void 0}var Il=G1;function z1(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var Ii=z1;var ah=Et?Et.isConcatSpreadable:void 0;function k1(n){return ut(n)||_i(n)||!!(ah&&n&&n[ah])}var sh=k1;function lh(n,t,e,r,o){var i=-1,a=n.length;for(e||(e=sh),o||(o=[]);++i<a;){var s=n[i];t>0&&e(s)?t>1?lh(s,t-1,e,r,o):Ii(o,s):r||(o[o.length]=s)}return o}var ch=lh;function F1(n){var t=n==null?0:n.length;return t?ch(n,1):[]}var uh=F1;function j1(n){return wf(Tf(n,void 0,uh),n+"")}var Nl=j1;var U1=Ml(Object.getPrototypeOf,Object),Ni=U1;var H1="[object Object]",q1=Function.prototype,W1=Object.prototype,dh=q1.toString,$1=W1.hasOwnProperty,Y1=dh.call(Object);function X1(n){if(!kt(n)||br(n)!=H1)return!1;var t=Ni(n);if(t===null)return!0;var e=$1.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&dh.call(e)==Y1}var ph=X1;function K1(n,t,e){var r=-1,o=n.length;t<0&&(t=-t>o?0:o+t),e=e>o?o:e,e<0&&(e+=o),o=t>e?0:e-t>>>0,t>>>=0;for(var i=Array(o);++r<o;)i[r]=n[r+t];return i}var fh=K1;function Q1(){this.__data__=new Qo,this.size=0}var hh=Q1;function Z1(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var mh=Z1;function J1(n){return this.__data__.get(n)}var yh=J1;function ew(n){return this.__data__.has(n)}var gh=ew;var tw=200;function rw(n,t){var e=this.__data__;if(e instanceof Qo){var r=e.__data__;if(!Zo||r.length<tw-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new zn(r)}return e.set(n,t),this.size=e.size,this}var xh=rw;function Ei(n){var t=this.__data__=new Qo(n);this.size=t.size}Ei.prototype.clear=hh;Ei.prototype.delete=mh;Ei.prototype.get=yh;Ei.prototype.has=gh;Ei.prototype.set=xh;var Di=Ei;function ow(n,t){return n&&oo(t,Ti(t),n)}var vh=ow;function nw(n,t){return n&&oo(t,Ci(t),n)}var bh=nw;var Ah=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Sh=Ah&&typeof module=="object"&&module&&!module.nodeType&&module,iw=Sh&&Sh.exports===Ah,wh=iw?wt.Buffer:void 0,_h=wh?wh.allocUnsafe:void 0;function aw(n,t){if(t)return n.slice();var e=n.length,r=_h?_h(e):new n.constructor(e);return n.copy(r),r}var Th=aw;function sw(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var a=n[e];t(a,e,n)&&(i[o++]=a)}return i}var Ch=sw;function lw(){return[]}var El=lw;var cw=Object.prototype,uw=cw.propertyIsEnumerable,Ph=Object.getOwnPropertySymbols,dw=Ph?function(n){return n==null?[]:(n=Object(n),Ch(Ph(n),function(t){return uw.call(n,t)}))}:El,Li=dw;function pw(n,t){return oo(n,Li(n),t)}var Oh=pw;var fw=Object.getOwnPropertySymbols,hw=fw?function(n){for(var t=[];n;)Ii(t,Li(n)),n=Ni(n);return t}:El,Dl=hw;function mw(n,t){return oo(n,Dl(n),t)}var Mh=mw;function yw(n,t,e){var r=t(n);return ut(n)?r:Ii(r,e(n))}var Ll=yw;function gw(n){return Ll(n,Ti,Li)}var xs=gw;function xw(n){return Ll(n,Ci,Dl)}var Bl=xw;var vw=lr(wt,"DataView"),Rl=vw;var bw=lr(wt,"Promise"),Vl=bw;var Sw=lr(wt,"Set"),Gl=Sw;var Ih="[object Map]",ww="[object Object]",Nh="[object Promise]",Eh="[object Set]",Dh="[object WeakMap]",Lh="[object DataView]",_w=No(Rl),Aw=No(Zo),Tw=No(Vl),Cw=No(Gl),Pw=No(Al),kn=br;(Rl&&kn(new Rl(new ArrayBuffer(1)))!=Lh||Zo&&kn(new Zo)!=Ih||Vl&&kn(Vl.resolve())!=Nh||Gl&&kn(new Gl)!=Eh||Al&&kn(new Al)!=Dh)&&(kn=function(n){var t=br(n),e=t==ww?n.constructor:void 0,r=e?No(e):"";if(r)switch(r){case _w:return Lh;case Aw:return Ih;case Tw:return Nh;case Cw:return Eh;case Pw:return Dh}return t});var Lo=kn;var Ow=Object.prototype,Mw=Ow.hasOwnProperty;function Iw(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&Mw.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Bh=Iw;var Nw=wt.Uint8Array,Bi=Nw;function Ew(n){var t=new n.constructor(n.byteLength);return new Bi(t).set(new Bi(n)),t}var Ri=Ew;function Dw(n,t){var e=t?Ri(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var Rh=Dw;var Lw=/\w*$/;function Bw(n){var t=new n.constructor(n.source,Lw.exec(n));return t.lastIndex=n.lastIndex,t}var Vh=Bw;var Gh=Et?Et.prototype:void 0,zh=Gh?Gh.valueOf:void 0;function Rw(n){return zh?Object(zh.call(n)):{}}var kh=Rw;function Vw(n,t){var e=t?Ri(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var Fh=Vw;var Gw="[object Boolean]",zw="[object Date]",kw="[object Map]",Fw="[object Number]",jw="[object RegExp]",Uw="[object Set]",Hw="[object String]",qw="[object Symbol]",Ww="[object ArrayBuffer]",$w="[object DataView]",Yw="[object Float32Array]",Xw="[object Float64Array]",Kw="[object Int8Array]",Qw="[object Int16Array]",Zw="[object Int32Array]",Jw="[object Uint8Array]",e_="[object Uint8ClampedArray]",t_="[object Uint16Array]",r_="[object Uint32Array]";function o_(n,t,e){var r=n.constructor;switch(t){case Ww:return Ri(n);case Gw:case zw:return new r(+n);case $w:return Rh(n,e);case Yw:case Xw:case Kw:case Qw:case Zw:case Jw:case e_:case t_:case r_:return Fh(n,e);case kw:return new r;case Fw:case Hw:return new r(n);case jw:return Vh(n);case Uw:return new r;case qw:return kh(n)}}var jh=o_;function n_(n){return typeof n.constructor=="function"&&!wi(n)?yf(Ni(n)):{}}var Uh=n_;var i_="[object Map]";function a_(n){return kt(n)&&Lo(n)==i_}var Hh=a_;var qh=Eo&&Eo.isMap,s_=qh?Ai(qh):Hh,Wh=s_;var l_="[object Set]";function c_(n){return kt(n)&&Lo(n)==l_}var $h=c_;var Yh=Eo&&Eo.isSet,u_=Yh?Ai(Yh):$h,Xh=u_;var d_=1,p_=2,f_=4,Kh="[object Arguments]",h_="[object Array]",m_="[object Boolean]",y_="[object Date]",g_="[object Error]",Qh="[object Function]",x_="[object GeneratorFunction]",v_="[object Map]",b_="[object Number]",Zh="[object Object]",S_="[object RegExp]",w_="[object Set]",__="[object String]",A_="[object Symbol]",T_="[object WeakMap]",C_="[object ArrayBuffer]",P_="[object DataView]",O_="[object Float32Array]",M_="[object Float64Array]",I_="[object Int8Array]",N_="[object Int16Array]",E_="[object Int32Array]",D_="[object Uint8Array]",L_="[object Uint8ClampedArray]",B_="[object Uint16Array]",R_="[object Uint32Array]",Je={};Je[Kh]=Je[h_]=Je[C_]=Je[P_]=Je[m_]=Je[y_]=Je[O_]=Je[M_]=Je[I_]=Je[N_]=Je[E_]=Je[v_]=Je[b_]=Je[Zh]=Je[S_]=Je[w_]=Je[__]=Je[A_]=Je[D_]=Je[L_]=Je[B_]=Je[R_]=!0;Je[g_]=Je[Qh]=Je[T_]=!1;function zl(n,t,e,r,o,i){var a,s=t&d_,l=t&p_,d=t&f_;if(e&&(a=o?e(n,r,o,i):e(n)),a!==void 0)return a;if(!Sr(n))return n;var c=ut(n);if(c){if(a=Bh(n),!s)return xf(n,a)}else{var u=Lo(n),p=u==Qh||u==x_;if(Gn(n))return Th(n,s);if(u==Zh||u==Kh||p&&!o){if(a=l||p?{}:Uh(n),!s)return l?Mh(n,bh(a,n)):Oh(n,vh(a,n))}else{if(!Je[u])return o?n:{};a=jh(n,u,s)}}i||(i=new Di);var f=i.get(n);if(f)return f;i.set(n,a),Xh(n)?n.forEach(function(y){a.add(zl(y,t,e,y,n,i))}):Wh(n)&&n.forEach(function(y,g){a.set(g,zl(y,t,e,g,n,i))});var h=d?l?Bl:xs:l?Ci:Ti,m=c?void 0:h(n);return _f(m||n,function(y,g){m&&(g=y,y=n[g]),bi(a,g,zl(y,t,e,g,n,i))}),a}var kl=zl;var V_=1,G_=4;function z_(n){return kl(n,V_|G_)}var Bo=z_;var k_="__lodash_hash_undefined__";function F_(n){return this.__data__.set(n,k_),this}var Jh=F_;function j_(n){return this.__data__.has(n)}var em=j_;function Fl(n){var t=-1,e=n==null?0:n.length;for(this.__data__=new zn;++t<e;)this.add(n[t])}Fl.prototype.add=Fl.prototype.push=Jh;Fl.prototype.has=em;var tm=Fl;function U_(n,t){for(var e=-1,r=n==null?0:n.length;++e<r;)if(t(n[e],e,n))return!0;return!1}var rm=U_;function H_(n,t){return n.has(t)}var om=H_;var q_=1,W_=2;function $_(n,t,e,r,o,i){var a=e&q_,s=n.length,l=t.length;if(s!=l&&!(a&&l>s))return!1;var d=i.get(n),c=i.get(t);if(d&&c)return d==t&&c==n;var u=-1,p=!0,f=e&W_?new tm:void 0;for(i.set(n,t),i.set(t,n);++u<s;){var h=n[u],m=t[u];if(r)var y=a?r(m,h,u,t,n,i):r(h,m,u,n,t,i);if(y!==void 0){if(y)continue;p=!1;break}if(f){if(!rm(t,function(g,x){if(!om(f,x)&&(h===g||o(h,g,e,r,i)))return f.push(x)})){p=!1;break}}else if(!(h===m||o(h,m,e,r,i))){p=!1;break}}return i.delete(n),i.delete(t),p}var jl=$_;function Y_(n){var t=-1,e=Array(n.size);return n.forEach(function(r,o){e[++t]=[o,r]}),e}var nm=Y_;function X_(n){var t=-1,e=Array(n.size);return n.forEach(function(r){e[++t]=r}),e}var im=X_;var K_=1,Q_=2,Z_="[object Boolean]",J_="[object Date]",eA="[object Error]",tA="[object Map]",rA="[object Number]",oA="[object RegExp]",nA="[object Set]",iA="[object String]",aA="[object Symbol]",sA="[object ArrayBuffer]",lA="[object DataView]",am=Et?Et.prototype:void 0,Fu=am?am.valueOf:void 0;function cA(n,t,e,r,o,i,a){switch(e){case lA:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;n=n.buffer,t=t.buffer;case sA:return!(n.byteLength!=t.byteLength||!i(new Bi(n),new Bi(t)));case Z_:case J_:case rA:return vi(+n,+t);case eA:return n.name==t.name&&n.message==t.message;case oA:case iA:return n==t+"";case tA:var s=nm;case nA:var l=r&K_;if(s||(s=im),n.size!=t.size&&!l)return!1;var d=a.get(n);if(d)return d==t;r|=Q_,a.set(n,t);var c=jl(s(n),s(t),r,o,i,a);return a.delete(n),c;case aA:if(Fu)return Fu.call(n)==Fu.call(t)}return!1}var sm=cA;var uA=1,dA=Object.prototype,pA=dA.hasOwnProperty;function fA(n,t,e,r,o,i){var a=e&uA,s=xs(n),l=s.length,d=xs(t),c=d.length;if(l!=c&&!a)return!1;for(var u=l;u--;){var p=s[u];if(!(a?p in t:pA.call(t,p)))return!1}var f=i.get(n),h=i.get(t);if(f&&h)return f==t&&h==n;var m=!0;i.set(n,t),i.set(t,n);for(var y=a;++u<l;){p=s[u];var g=n[p],x=t[p];if(r)var S=a?r(x,g,p,t,n,i):r(g,x,p,n,t,i);if(!(S===void 0?g===x||o(g,x,e,r,i):S)){m=!1;break}y||(y=p=="constructor")}if(m&&!y){var w=n.constructor,b=t.constructor;w!=b&&"constructor"in n&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof b=="function"&&b instanceof b)&&(m=!1)}return i.delete(n),i.delete(t),m}var lm=fA;var hA=1,cm="[object Arguments]",um="[object Array]",Ul="[object Object]",mA=Object.prototype,dm=mA.hasOwnProperty;function yA(n,t,e,r,o,i){var a=ut(n),s=ut(t),l=a?um:Lo(n),d=s?um:Lo(t);l=l==cm?Ul:l,d=d==cm?Ul:d;var c=l==Ul,u=d==Ul,p=l==d;if(p&&Gn(n)){if(!Gn(t))return!1;a=!0,c=!1}if(p&&!c)return i||(i=new Di),a||Pl(n)?jl(n,t,e,r,o,i):sm(n,t,l,e,r,o,i);if(!(e&hA)){var f=c&&dm.call(n,"__wrapped__"),h=u&&dm.call(t,"__wrapped__");if(f||h){var m=f?n.value():n,y=h?t.value():t;return i||(i=new Di),o(m,y,e,r,i)}}return p?(i||(i=new Di),lm(n,t,e,r,o,i)):!1}var pm=yA;function fm(n,t,e,r,o){return n===t?!0:n==null||t==null||!kt(n)&&!kt(t)?n!==n&&t!==t:pm(n,t,e,r,fm,o)}var hm=fm;function gA(n,t){return n!=null&&t in Object(n)}var mm=gA;function xA(n,t,e){t=Pr(t,n);for(var r=-1,o=t.length,i=!1;++r<o;){var a=en(t[r]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++r!=o?i:(o=n==null?0:n.length,!!o&&Si(o)&&xi(a,o)&&(ut(n)||_i(n)))}var ym=xA;function vA(n,t){return n!=null&&ym(n,t,mm)}var gm=vA;function bA(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var xm=bA;function SA(n,t){return t.length<2?n:Il(n,fh(t,0,-1))}var vm=SA;function wA(n,t){return hm(n,t)}var ju=wA;function _A(n,t){return t=Pr(t,n),n=vm(n,t),n==null||delete n[en(xm(t))]}var bm=_A;function AA(n){return ph(n)?void 0:n}var Sm=AA;var TA=1,CA=2,PA=4,OA=Nl(function(n,t){var e={};if(n==null)return e;var r=!1;t=Sl(t,function(i){return i=Pr(i,n),r||(r=i.length>1),i}),oo(n,Bl(n),e),r&&(e=kl(e,TA|CA|PA,Sm));for(var o=t.length;o--;)bm(e,t[o]);return e}),Vi=OA;function MA(n,t,e,r){if(!Sr(n))return n;t=Pr(t,n);for(var o=-1,i=t.length,a=i-1,s=n;s!=null&&++o<i;){var l=en(t[o]),d=e;if(l==="__proto__"||l==="constructor"||l==="prototype")return n;if(o!=a){var c=s[l];d=r?r(c,l,s):void 0,d===void 0&&(d=Sr(c)?c:xi(t[o+1])?[]:{})}bi(s,l,d),s=s[l]}return n}var wm=MA;function IA(n,t,e){for(var r=-1,o=t.length,i={};++r<o;){var a=t[r],s=Il(n,a);e(s,a)&&wm(i,Pr(a,n),s)}return i}var _m=IA;function NA(n,t){return _m(n,t,function(e,r){return gm(n,r)})}var Am=NA;var EA=Nl(function(n,t){return n==null?{}:Am(n,t)}),zr=EA;var me=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i={...r,[t]:e};return Object.setPrototypeOf(i,me.prototype),i}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:a}=t,s={...e,[i]:a};return Object.setPrototypeOf(s,me.prototype),{data:s,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i={...e};return Object.setPrototypeOf(i,me.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}return null}};function vs(n){if(n.deepFreeze!==void 0){n.deepFreeze(n);return}let t=Object.getOwnPropertyNames(n);for(let e of t){let r=n[e];r&&typeof r=="object"&&vs(r)}return Object.freeze(n)}function Tm(n,t){let e=0;for(;e<n.length&&e<t.length;){if(n[e]<t[e])return-1;if(n[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==n.length?1:0}var Gi=class extends Error{};function Hl(n){let t={...n};return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}function no(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let a=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(a)}return r}function zi(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 Cm(){return typeof process<"u"}function Pm(n,t){for(let e of n)t(e.id,e.data)!==!0&&Pm(e.children,t)}function Om(n,t){if(t(n.id,n.data)!==!0)for(let e of n.children)Om(e,t)}var it=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,it.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vs(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}nonExistOrDescendantOf(e,r){if(!this.has(e))return!0;for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}rootAcestor(e){for(;e;){let r=this.parent(e);if(r)e=r;else return e}return e}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Om(o,r)}}traverse(e){Pm(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),a=this.childrenArray(i),s=a.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let l=a[s];return a=[...a],a[s]={...l,data:r},this.modifyArrayBy(i,a)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let s=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let d=i.findIndex(c=>c.id===l);if(d<0)throw new Error;i=[...i],i[d]={...i[d],children:s}}Object.setPrototypeOf(i,it.prototype);let a=i;return a.fillCaches(),a}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}return null}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:a,children:s}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,d=this.childrenArray(l),c={fi:o,id:i,data:a,children:s};return d=[...d,c],d.sort((p,f)=>p.fi-f.fi),e.localIndex=d.indexOf(c),{data:this.modifyArrayBy(l,d),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),a=i.findIndex(d=>d.id===r);e.localIndex=a,i=[...i];let s=i.splice(a,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:{type:7,...s,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:i}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:i});if(r!==null){let f=r;for(;f!==null;){if(f===void 0)throw new Error;if(f===i)throw new Gi("cyclic tree");f=this.parent(f)}}let a=this.parent(i);if(a===void 0)return null;let s=a,l=this.childrenArray(a),d=l.findIndex(f=>f.id===i);l=[...l];let c=l.splice(d,1)[0],u=this.modifyArrayBy(a,l);a=r,l=u.childrenArray(a);let p=c.fi;return c={...c,fi:o},l=[...l,c],l.sort((f,h)=>f.fi-h.fi),e.localIndex=l.indexOf(c),u=u.modifyArrayBy(a,l),{data:u,actual:e,reverse:{type:9,parent:s,fi:p,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(a=>a.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push({...o,...i})}r.sort((o,i)=>Tm(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),a=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return{...a,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return no(0,o,o);{let a=i[0].fi;return no(a-o,a,o)}}else{let a=this.get(r);if(a===void 0||this.parent(r)!==e)throw new Error("illegal args");let s=i.find(l=>l.fi>a.fi);if(s===void 0){let l=i[i.length-1].fi;return no(l,l+o,o)}else return no(a.fi,s.fi,o)}}};var ki;(t=>{function n(e,r){if(r.type!==0)return null;if(Array.isArray(e)){let o=r.props,i={},a=[...e],s=!1;if(o)for(let l of Object.keys(o)){let d=parseInt(l);if(isNaN(d))throw new Error("wrong index");i[l]=a[d],a[d]=o[l],s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},a={...e},s=!1;if(o)for(let l of Object.keys(o)){i[l]=a[l];let d=o[l];d===void 0?delete a[l]:a[l]=d,s=!0}return s?{data:a,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(ki||(ki={}));var ge=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,ge.prototype)}deepFreeze(){let e=0;for(;e<this.length;)vs(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,a=i.findIndex(d=>d.id===e);if(a<0)throw new Error("not expected");let s=i[a];return i=[...i],i[a]={...s,data:r},this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,ge.prototype);let r=e;return Cm()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}return null}addOp(e){let{fi:r,id:o,data:i}=e,a=this,s={fi:r,id:o,data:i};return a=[...a,s],a.sort((d,c)=>d.fi-c.fi),e.localIndex=a.indexOf(s),{data:this.modifyArrayBy(a),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let a=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...a}}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let a=i.findIndex(c=>c.id===o);if(a===-1)return null;let s=i[a].fi,l={...i[a],fi:r};return i[a]=l,i.sort((c,u)=>c.fi-u.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:s,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return no(0,r,r);{let i=o[0].fi;return no(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let a=o.find(s=>s.fi>i.fi);if(a===void 0){let s=o[o.length-1].fi;return no(s,s+r,r)}else return no(i.fi,a.fi,r)}}};function Fi(n){return n&&typeof n=="object"&&n instanceof Ke}var Ke=class{unusedFunOverridesTable(t){}runOp(t){let e=[],r=this,o=0,i={};for(;o<t.path.length;){if(e.push(r),r=r===void 0?void 0:r[t.path[o]],r!==void 0&&!Fi(r))return null;o+=1}r=r?Hl(r):new Ke;for(let[l,d]of Object.entries(t.props)){let c=r[l];i[l]=c,d===void 0?delete r[l]:r[l]=d}for(;o>0;){if(Object.keys(r).length===0){let l=e[o-1];l&&(r=Hl(l),delete r[t.path[o-1]])}else{let l=e[o-1];if(l){let d=Hl(l);d[t.path[o-1]]=r,r=d}else{let d=new Ke;d[t.path[o-1]]=r,r=d}}o-=1}let a=Object.setPrototypeOf(r,Ke.prototype),s={...t,props:i};return{data:a,actual:t,reverse:s}}},io;(r=>{function n(o,i){return bs(o,i)??o}r.apply=n;function t(o,i){return Hu(o,i)}r.merge=t;function e(o,i){let a=0,s=i.path,l=o;for(;a<s.length&&l!==void 0;){if(l=gt.zoomOnce(l,s[a]),l===void 0)return i;if(!Fi(l))return;a+=1}if(l===void 0)return i;if(!!Fi(l))if(i.type===0){let d={...i.props};for(let c of Object.keys(l))delete d[c];return{...i,props:d}}else if(i.type===1||i.type===4||i.type===7){let d=Uu([i],l);return d?(console.log(d),d):i}else return i}r.filterOp=e})(io||(io={}));function Uu(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=bs(o.data,t[i]);if(e=e||a!==void 0,a===void 0&&(a=o.data),o.children){let s=Uu(o.children,t);return s!==void 0?e=!0:s=o.children,{...o,id:i,data:a,children:s}}else return{...o,id:i,data:a}});if(e)return r}function DA(n,t){if(t===void 0)return;let e=!1,r=n.map(o=>{let i=o.id,a=bs(o.data,t[i]);return e=e||a!==void 0,a===void 0&&(a=o.data),{...o,id:i,data:a}});if(e)return Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}function bs(n,t){if(!Fi(t))return t;if(n instanceof it){let e=Uu(n,t);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e}else{if(n instanceof ge)return DA(n,t);if(Array.isArray(n)){let e=!1,r=n.map((o,i)=>{let a=bs(o,t[i]);return e=e||a!==void 0,a===void 0&&(a=o),a});return e?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else{if(n instanceof Ke)return Hu(n,t);if(n&&typeof n=="object"){let e={},r=!1;for(let[o,i]of Object.entries(n)){let a=bs(i,t[o]);r=r||a!==void 0,a===void 0&&(a=i),e[o]=a}return r?(Object.setPrototypeOf(e,Object.getPrototypeOf(n)),e):void 0}}}}function Hu(n,t){if(n===void 0)return t;if(t===void 0)return n;if(!Fi(t))return t;if(!Fi(n))return io.apply(n,t);let e=new Set;for(let o of Object.keys(n))e.add(o);for(let o of Object.keys(t))e.add(o);let r=new Ke;for(let o of e){let i=Hu(n===void 0?void 0:n[o],t===void 0?void 0:t[o]);r[o]=i}return r}function Mm(n,t){let e={cur:[],result:[],len:0};return n=Ss(n,t,e)??n,[n,e.result]}function ql(n,t){return n===null?null:(n.cur[n.len]=t,n.len+=1,n)}function Wl(n){n&&(n.len-=1)}function LA(n){if(n===null)return null;n.result.push(n.cur.slice(0,n.len))}function Im(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ss(i.data,t,ql(e,a));Wl(e),r=r||l!==void 0,l===void 0&&(l=i.data);let d=Im(i.children,t,e);return d!==void 0?r=!0:d=i.children,{...i,id:a,data:l,children:d}});if(r)return o}function BA(n,t,e){let r=!1,o=n.map(i=>{let a=i.id,s=t[a];if(s!==void 0&&typeof s=="string"&&(r=!0,a=s,e!==null))throw new Error("not supported");let l=Ss(i.data,t,ql(e,a));return Wl(e),r=r||l!==void 0,l===void 0&&(l=i.data),{...i,id:a,data:l}});if(r)return Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o}function Ss(n,t,e){if(n instanceof it){let r=Im(n,t,e);return r!==void 0&&Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r}else{if(n instanceof ge)return BA(n,t,e);if(Array.isArray(n)){let r=!1,o=n.map((i,a)=>{let s=Ss(i,t,ql(e,a));return Wl(e),r=r||s!==void 0,s===void 0&&(s=i),s});return r?(Object.setPrototypeOf(o,Object.getPrototypeOf(n)),o):void 0}else if(n&&typeof n=="object"&&!zi(n)){let r={},o=!1;for(let[i,a]of Object.entries(n))if(i!=="name"){let s=t[i];if(typeof s=="string"){if(e!==null)throw new Error("not supported");o=!0,i=s}let l=Ss(a,t,ql(e,i));Wl(e),o=o||l!==void 0,l===void 0&&(l=a),r[i]=l}else r[i]=a;return o?(Object.setPrototypeOf(r,Object.getPrototypeOf(n)),r):void 0}else if(typeof n=="string"){let r=t[n];return r!==void 0&&LA(e),r}else return}}var $l;(t=>{function n(e,r){let o=gt.zoom(r,e.path);if(typeof o=="object"){let i={};for(let a of Object.keys(e.props))i[a]=o[a];return{...e,props:i}}else return{...e,props:{}}}t.replaceProps=n})($l||($l={}));var xt;(s=>{function n(l,d){return{...l,path:l.path.slice(d)}}s.drop=n;function t(l,d){return e(l,d)?.data??l}s.applySimple=t;function e(l,d){let c=d.path;for(var u=[];;){let p;if(l instanceof Ke&&d.type===0&&(p=l.runOp({...d,path:c.slice(u.length)}),p===null&&(p=void 0)),p===void 0&&u.length===c.length&&(l instanceof it||l instanceof ge||l instanceof me?p=l.runOp(d):p=ki.runOp(l,d)),p!==void 0)if(p!==null){let m=p.data;for(let y=u.length-1;y>=0;y--){let g=c[y],x=u[y];if(x instanceof it){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof ge){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof me){if(typeof g=="number")throw new Error("illegal arg");m=x.modifyById(g,m)}else if(x instanceof Ke){let S={...x,[g]:m};m=Object.setPrototypeOf(S,Ke.prototype)}else if(typeof x=="object")if(Array.isArray(x)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");let S=m;m=[...x],m[g]=S}else m={...x,[g]:m};else return null}return{data:m,actual:{...p.actual,path:c},reverse:{...p.reverse,path:c}}}else return null;let f=c[u.length],h;if(l instanceof it){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else if(l instanceof ge){if(typeof f=="number")throw new Error("");h=l.get(f)?.data}else l!==null&&(h=l[f]);if(h!==void 0)u.push(l),l=h;else return null}}s.apply=e;function r(l,d){for(let c=0;c<l.length&&c<d.length;c++)if(l[c]!==d[c])return!0;return!1}s.pathDisjoint=r;function o(l,d){if(l.length!==d.length)return!1;for(let c=0;c<l.length;c++)if(l[c]!==d[c])return!1;return!0}s.pathEq=o;function i(l,d){return r(l.path,d.path)}s.commutative=i;function a(l,d){return l.type===0&&d.type===0&&o(l.path,d.path)?Object.keys(l.props).every(c=>d.props[c]!==void 0):!1}s.subsumed=a})(xt||(xt={}));var ws;(l=>{function n(){return[]}l.empty=n;function t(d,c){let u=[];for(let p of d){let[f,...h]=p.path;f===c&&u.push({...p,path:h})}return u}l.removePrefix=t;function e(d,c){return d.map(u=>({...u,path:[c,...u.path]}))}l.addPrefix=e;function r(d,c){return[...d,...c]}l.concat=r;function o(d,c){return[...d.filter(p=>!c.some(f=>xt.subsumed(p,f))),...c]}l.compress=o;function i(d,c){return d.every(u=>c.every(p=>xt.commutative(u,p)))}l.commutative=i;function a(d,c){for(let u of c){let p=s(d,u);p!==null&&(d=p.data)}return d}l.applyAll=a;function s(d,c){var u=d;let p=[],f=[];for(let h of c)try{if(h.type===3||h.type===5&&h.path[h.path.length-1]==="variables"){let m,y,g;if(h.type===3?(m=gt.zoom(u,[...h.path,h.id]),g=xt.apply(u,{...h,type:2})):(m=gt.zoom(u,[...h.path,h.id,"value"]),g=xt.apply(u,h)),g!==null){u=g.data;let[x,S]=Mm(u,{[h.id]:m});u=x;for(let w=0;w<S.length;w++){let b=S[w],_=b.pop();if(typeof _=="number"){let A=[_];for(let M=w+1;M<S.length;M++){let O=S[M],T=O[O.length-1];if(typeof T=="number"&>.equal(b,O.slice(0,O.length-1)))A.push(T),S.splice(M,1);else break}let v=gt.zoom(u,b);y=v.map((M,O)=>A.includes(O)?h.id:M),m=v,_=b.pop()}else{if(_==="alphaOverride"||_==="alpha"){m/=100;let A=m,v=gt.zoom(u,b.slice(0,b.length-2)),M=v.layers.map(O=>O.id===b[b.length-1]?{...O,data:{...O.data,[_]:A}}:O);Object.setPrototypeOf(M,Object.getPrototypeOf(v.layers)),v.layers=M}y=h.id}p.push({type:0,path:b,props:{[_]:m}}),f.push({type:0,path:b,props:{[_]:y}})}f.push(g.reverse),p.push(g.actual)}}else{let m=xt.apply(u,h);m!==null&&(p.push(m.actual),u=m.data,f.push(m.reverse))}}catch(m){if(m instanceof Gi)return null;throw m}return{data:u,actual:p,reverse:f.reverse()}}l.apply=s})(ws||(ws={}));var Nm=Symbol(),RA=Symbol(),Xl=Symbol(),Fn=class{reportOp(t,e,r=[]){let o=this;if(e===null)return;o._current=e.data;let i=r;for(;!(o instanceof Yl);){let a=o._path,s=o._current;if(a!==""&&i.splice(0,0,a),o=o._parent,o===null)return;o.update(a,s)}o.push(i,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Xl];r&&r(),delete this._children[t]}}}},Wu=class extends Fn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,ki.runOp(this._current,t),t.path)}},$u=class extends Fn{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,me.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Em={get(n,t){if(t===Xl)return()=>{n._parent=null};if(t===Nm)return n._current;if(t===RA)return n;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],a=Kl(n,t,i);return a!==i?(r===void 0&&(r={},n._children=r),r[t]=a,a):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},VA={...Em,set(n,t,e){let r={type:0,props:{[t]:at(e)??e}};return n.deleteChildren(t),n.runOp(r),!0},deleteProperty(n,t){let e={type:0,props:{[t]:void 0}};return n.deleteChildren(t),n.runOp(e),!0}},GA={...Em,set(n,t,e){return e===void 0?this.deleteProperty(n,t):(n.deleteChildren(t),n.runOp({type:1,id:t,data:e})),!0},deleteProperty(n,t){return n.runOp({type:2,id:t}),!0}},ji=class extends Fn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Xl]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Kl(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.add(t,o[i],a.id,a.data,a.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let a=r[i];this.move(t,o[i],a)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Ui=class extends Fn{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Xl]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id,i=this._current[r].fi;t(this.data(this._current[r].id),o,i)}}find(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;if(t(this.data(o),o))return this.get(o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e.get(t)?.data,a=Kl(this,t,i);return a!==i?(r===void 0&&(r={},this._children=r),r[t]=a,a):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function qu(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&>.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push({...t,path:e})}var Yl=class extends Fn{constructor(t){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){qu(this.ts,e,t),qu(this.actual,r,t),qu(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Kl(n,t,e){return e instanceof it?new ji(n,t,e):e instanceof ge?new Ui(n,t,e):e instanceof me?new Proxy(new $u(n,t,e),GA):e!==null&&typeof e=="object"?zi(e)?e:new Proxy(new Wu(n,t,e),VA):e}function Yu(n){let t=new Yl(n);return[Kl(t,"",n),t]}function tn(n,t){let[e,r]=Yu(n);return t(e),r.result()}function at(n){return n instanceof ji||n instanceof Ui?n._current:n!==null&&typeof n=="object"?n[Nm]:n}var gt;(o=>{function n(i,a){if(a.length===i.length)for(var s=0;s<i.length;){if(i[s]!==a[s])return!1;s+=1}else return!1;return!0}o.equal=n;function t(i,a,s){let l=r(s,i);if(l!==void 0&&typeof l=="object"&&l!==null){let d={...a};return Object.keys(l).forEach(c=>{delete d[c]}),d}else return a}o.removeOverridden=t;function e(i,a){if((i instanceof it||i instanceof ji)&&typeof a=="string")return i.data(a);if((i instanceof ge||i instanceof Ui)&&typeof a=="string")return i.data(a);if(typeof a=="number"&&Array.isArray(i))return i[a];if(typeof a=="string"&&typeof i=="object"&&i!==null)return i[a]}o.zoomOnce=e;function r(i,a,s=0){for(;s<a.length&&i!==void 0;)i=e(i,a[s]),s+=1;return i}o.zoom=r})(gt||(gt={}));function Dm(n,t){let e=[];if(t.length===n.length)for(var r=0;r<n.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}function Yt(n,t){let e=[];if(t.length<=n.length)for(var r=0;r<t.length;){if(t[r]==="*")e.push(n[r]);else if(n[r]!==t[r])return null;r+=1}else return null;return e}var Ql=class{},_s=class extends Ql{constructor(e){super();this.id=e}},As=class extends Ql{constructor(e){super();this.data=e}};var Ku;try{Ku=new TextDecoder}catch{}var re,on,N=0;var Fm=[],Qu=Fm,Zu=0,cr={},ze,rn,Or=0,ao=0,wr,Ro,Zt=[],je,Lm={useRecords:!1,mapsAsObjects:!0},Ts=class{},ed=new Ts;ed.name="MessagePack 0xC1";var Hi=!1,so=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(re)return Wm(()=>(Jl(),this?this.unpack(t,e):so.prototype.unpack.call(Lm,t,e)));on=e>-1?e:t.length,N=0,Zu=0,ao=0,rn=null,Qu=Fm,wr=null,re=t;try{je=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw re=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof so){if(cr=this,this.structures)return ze=this.structures,Zl();(!ze||ze.length>0)&&(ze=[])}else cr=Lm,(!ze||ze.length>0)&&(ze=[]);return Zl()}unpackMultiple(t,e){let r,o=0;try{Hi=!0;let i=t.length,a=this?this.unpack(t,i):rc.unpack(t,i);if(e){for(e(a);N<i;)if(o=N,e(Zl())===!1)return}else{for(r=[a];N<i;)o=N,r.push(Zl());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Hi=!1,Jl()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let i=t[r];i&&(i.isShared=!0,r>=32&&(i.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],i=e[r];i&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=i)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Zl(){try{if(!cr.trusted&&!Hi){let t=ze.sharedLength||0;t<ze.length&&(ze.length=t)}let n=dt();if(N==on)ze.restoreStructures&&Bm(),ze=null,re=null,Ro&&(Ro=null);else if(N>on){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Hi)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw ze.restoreStructures&&Bm(),Jl(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Bm(){for(let n in ze.restoreStructures)ze[n]=ze.restoreStructures[n];ze.restoreStructures=null}function dt(){let n=re[N++];if(n<160)if(n<128){if(n<64)return n;{let t=ze[n&63]||cr.getStructures&&jm()[n&63];return t?(t.read||(t.read=td(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,cr.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Hm()]=dt();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(dt(),dt());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=dt();return t}else if(n<192){let t=n-160;if(ao>=N)return rn.slice(N-Or,(N+=t)-Or);if(ao==0&&on<140){let e=t<16?rd(t):Um(t);if(e!=null)return e}return Ju(t)}else{let t;switch(n){case 192:return null;case 193:return wr?(t=dt(),t>0?wr[1].slice(wr.position1,wr.position1+=t):wr[0].slice(wr.position0,wr.position0-=t)):ed;case 194:return!1;case 195:return!0;case 196:return Xu(re[N++]);case 197:return t=je.getUint16(N),N+=2,Xu(t);case 198:return t=je.getUint32(N),N+=4,Xu(t);case 199:return jn(re[N++]);case 200:return t=je.getUint16(N),N+=2,jn(t);case 201:return t=je.getUint32(N),N+=4,jn(t);case 202:if(t=je.getFloat32(N),cr.useFloat32>2){let e=tc[(re[N]&127)<<1|re[N+1]>>7];return N+=4,(e*t+(t>0?.5:-.5)>>0)/e}return N+=4,t;case 203:return t=je.getFloat64(N),N+=8,t;case 204:return re[N++];case 205:return t=je.getUint16(N),N+=2,t;case 206:return t=je.getUint32(N),N+=4,t;case 207:return cr.int64AsNumber?(t=je.getUint32(N)*4294967296,t+=je.getUint32(N+4)):t=je.getBigUint64(N),N+=8,t;case 208:return je.getInt8(N++);case 209:return t=je.getInt16(N),N+=2,t;case 210:return t=je.getInt32(N),N+=4,t;case 211:return cr.int64AsNumber?(t=je.getInt32(N)*4294967296,t+=je.getUint32(N+4)):t=je.getBigInt64(N),N+=8,t;case 212:if(t=re[N++],t==114)return km(re[N++]&63);{let e=Zt[t];if(e)return e.read?(N++,e.read(dt())):e.noBuffer?(N++,e()):e(re.subarray(N,++N));throw new Error("Unknown extension "+t)}case 213:return t=re[N],t==114?(N++,km(re[N++]&63,re[N++])):jn(2);case 214:return jn(4);case 215:return jn(8);case 216:return jn(16);case 217:return t=re[N++],ao>=N?rn.slice(N-Or,(N+=t)-Or):kA(t);case 218:return t=je.getUint16(N),N+=2,ao>=N?rn.slice(N-Or,(N+=t)-Or):FA(t);case 219:return t=je.getUint32(N),N+=4,ao>=N?rn.slice(N-Or,(N+=t)-Or):jA(t);case 220:return t=je.getUint16(N),N+=2,Vm(t);case 221:return t=je.getUint32(N),N+=4,Vm(t);case 222:return t=je.getUint16(N),N+=2,Gm(t);case 223:return t=je.getUint32(N),N+=4,Gm(t);default:if(n>=224)return n-256;if(n===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+n)}}}var zA=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function td(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>zA.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(dt);return n.highByte===0&&(n.read=Rm(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let a=n[o];r[a]=dt()}return r}return e.count=0,n.highByte===0?Rm(t,e):e}var Rm=(n,t)=>function(){let e=re[N++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=ze[r]||jm()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=td(o,n)),o.read()};function jm(){let n=Wm(()=>(re=null,cr.getStructures()));return ze=cr._mergeStructures(n,ze)}var Ju=ec,kA=ec,FA=ec,jA=ec;function ec(n){let t;if(n<16&&(t=rd(n)))return t;if(n>64&&Ku)return Ku.decode(re.subarray(N,N+=n));let e=N+n,r=[];for(t="";N<e;){let o=re[N++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=re[N++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=re[N++]&63,a=re[N++]&63;r.push((o&31)<<12|i<<6|a)}else if((o&248)===240){let i=re[N++]&63,a=re[N++]&63,s=re[N++]&63,l=(o&7)<<18|i<<12|a<<6|s;l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|l&1023),r.push(l)}else r.push(o);r.length>=4096&&(t+=Dt.apply(String,r),r.length=0)}return r.length>0&&(t+=Dt.apply(String,r)),t}function Vm(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=dt();return t}function Gm(n){if(cr.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[Hm()]=dt();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(dt(),dt());return t}}var Dt=String.fromCharCode;function Um(n){let t=N,e=new Array(n);for(let r=0;r<n;r++){let o=re[N++];if((o&128)>0){N=t;return}e[r]=o}return Dt.apply(String,e)}function rd(n){if(n<4)if(n<2){if(n===0)return"";{let t=re[N++];if((t&128)>1){N-=1;return}return Dt(t)}}else{let t=re[N++],e=re[N++];if((t&128)>0||(e&128)>0){N-=2;return}if(n<3)return Dt(t,e);let r=re[N++];if((r&128)>0){N-=3;return}return Dt(t,e,r)}else{let t=re[N++],e=re[N++],r=re[N++],o=re[N++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){N-=4;return}if(n<6){if(n===4)return Dt(t,e,r,o);{let i=re[N++];if((i&128)>0){N-=5;return}return Dt(t,e,r,o,i)}}else if(n<8){let i=re[N++],a=re[N++];if((i&128)>0||(a&128)>0){N-=6;return}if(n<7)return Dt(t,e,r,o,i,a);let s=re[N++];if((s&128)>0){N-=7;return}return Dt(t,e,r,o,i,a,s)}else{let i=re[N++],a=re[N++],s=re[N++],l=re[N++];if((i&128)>0||(a&128)>0||(s&128)>0||(l&128)>0){N-=8;return}if(n<10){if(n===8)return Dt(t,e,r,o,i,a,s,l);{let d=re[N++];if((d&128)>0){N-=9;return}return Dt(t,e,r,o,i,a,s,l,d)}}else if(n<12){let d=re[N++],c=re[N++];if((d&128)>0||(c&128)>0){N-=10;return}if(n<11)return Dt(t,e,r,o,i,a,s,l,d,c);let u=re[N++];if((u&128)>0){N-=11;return}return Dt(t,e,r,o,i,a,s,l,d,c,u)}else{let d=re[N++],c=re[N++],u=re[N++],p=re[N++];if((d&128)>0||(c&128)>0||(u&128)>0||(p&128)>0){N-=12;return}if(n<14){if(n===12)return Dt(t,e,r,o,i,a,s,l,d,c,u,p);{let f=re[N++];if((f&128)>0){N-=13;return}return Dt(t,e,r,o,i,a,s,l,d,c,u,p,f)}}else{let f=re[N++],h=re[N++];if((f&128)>0||(h&128)>0){N-=14;return}if(n<15)return Dt(t,e,r,o,i,a,s,l,d,c,u,p,f,h);let m=re[N++];if((m&128)>0){N-=15;return}return Dt(t,e,r,o,i,a,s,l,d,c,u,p,f,h,m)}}}}}function Xu(n){return cr.copyBuffers?Uint8Array.prototype.slice.call(re,N,N+=n):re.subarray(N,N+=n)}function jn(n){let t=re[N++];if(Zt[t])return Zt[t](re.subarray(N,N+=n));throw new Error("Unknown extension type "+t)}var zm=new Array(4096);function Hm(){let n=re[N++];if(n>=160&&n<192){if(n=n-160,ao>=N)return rn.slice(N-Or,(N+=n)-Or);if(!(ao==0&&on<180))return Ju(n)}else return N--,dt();let t=(n<<5^(n>1?je.getUint16(N):n>0?re[N]:0))&4095,e=zm[t],r=N,o=N+n-3,i,a=0;if(e&&e.bytes==n){for(;r<o;){if(i=je.getUint32(r),i!=e[a++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=re[r++],i!=e[a++]){r=1879048192;break}if(r===o)return N=r,e.string;o-=3,r=N}for(e=[],zm[t]=e,e.bytes=n;r<o;)i=je.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=re[r++],e.push(i);let s=n<16?rd(n):Um(n);return s!=null?e.string=s:e.string=Ju(n)}var km=(n,t)=>{var e=dt();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=ze[n];return o&&o.isShared&&((ze.restoreStructures||(ze.restoreStructures=[]))[n]=o),ze[n]=e,e.read=td(e,r),e.read()},qm=typeof self=="object"?self:global;Zt[0]=()=>{};Zt[0].noBuffer=!0;Zt[101]=()=>{let n=dt();return(qm[n[0]]||Error)(n[1])};Zt[105]=n=>{let t=je.getUint32(N-4);Ro||(Ro=new Map);let e=re[N],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Ro.set(t,o);let i=dt();return o.used?Object.assign(r,i):(o.target=i,i)};Zt[112]=n=>{let t=je.getUint32(N-4),e=Ro.get(t);return e.used=!0,e.target};Zt[115]=()=>new Set(dt());var od=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Zt[116]=n=>{let t=n[0],e=od[t];if(!e)throw new Error("Could not find typed array for code "+t);return new qm[e](Uint8Array.prototype.slice.call(n,1).buffer)};Zt[120]=()=>{let n=dt();return new RegExp(n[0],n[1])};Zt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=N;N+=t-4,wr=[dt(),dt()],wr.position0=0,wr.position1=0;let r=N;N=e;try{return dt()}finally{N=r}};Zt[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 Wm(n){let t=on,e=N,r=Zu,o=Or,i=ao,a=rn,s=Qu,l=Ro,d=wr,c=new Uint8Array(re.slice(0,on)),u=ze,p=ze.slice(0,ze.length),f=cr,h=Hi,m=n();return on=t,N=e,Zu=r,Or=o,ao=i,rn=a,Qu=s,Ro=l,wr=d,re=c,Hi=h,ze=u,ze.splice(0,ze.length,...p),cr=f,je=new DataView(re.buffer,re.byteOffset,re.byteLength),m}function Jl(){re=null,Ro=null,ze=null}function $m(n){n.unpack?Zt[n.type]=n.unpack:Zt[n.type]=n}var tc=new Array(147);for(let n=0;n<256;n++)tc[n]=+("1e"+Math.floor(45.15-n*.30103));var rc=new so({useRecords:!1}),UA=rc.unpack,HA=rc.unpackMultiple,qA=rc.unpack,oc={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},WA=new Float32Array(1),aR=new Uint8Array(WA.buffer,0,4);var nc;try{nc=new TextEncoder}catch{}var ic,id,ac=typeof Buffer<"u",nd=ac?Buffer.allocUnsafeSlow:Uint8Array,Qm=ac?Buffer:Uint8Array,Ym=ac?4294967296:2144337920,F,vt,L=0,lo,co=null,$A=/[\u0080-\uFFFF]/,Cs=Symbol("record-id"),Un=class extends so{constructor(t){super(t),this.offset=0;let e,r,o,i,a,s,l=0,d=Qm.prototype.utf8Write?function(v,M,O){return F.utf8Write(v,M,O)}:nc&&nc.encodeInto?function(v,M){return nc.encodeInto(v,F.subarray(M)).written}:!1,c=this;t||(t={});let u=t&&t.sequential,p=t.structures||t.saveStructures,f=t.maxSharedStructures;if(f==null&&(f=p?32:0),f>8160)throw new Error("Maximum maxSharedStructure is 8160");let h=t.maxOwnStructures;h==null&&(h=p?32:64),u&&!t.saveStructures&&(this.structures=[]);let m=f>32||h+f>64,y=f+64,g=f+h+64;if(g>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let x=[],S=0,w=0;this.pack=this.encode=function(v,M){if(F||(F=new nd(8192),vt=new DataView(F.buffer,0,8192),L=0),lo=F.length-10,lo-L<2048?(F=new nd(F.length),vt=new DataView(F.buffer,0,F.length),lo=F.length-10,L=0):L=L+7&2147483640,r=L,s=c.structuredClone?new Map:null,c.bundleStrings?(co=["",""],F[L++]=214,F[L++]=98,co.position=L-r,L+=4):co=null,o=c.structures,o){o.uninitialized&&(o=c._mergeStructures(c.getStructures()));let O=o.sharedLength||0;if(O>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 T=0;T<O;T++){let C=o[T];if(!C)continue;let P,I=o.transitions;for(let E=0,R=C.length;E<R;E++){let D=C[E];P=I[D],P||(P=I[D]=Object.create(null)),I=P}I[Cs]=T+64}l=O}u||(o.nextId=O+64)}i&&(i=!1),a=o||[];try{if(b(v),co){vt.setUint32(co.position+r,L-co.position-r);let O=co;co=null,b(O[0]),b(O[1])}if(c.offset=L,s&&s.idsToInsert){L+=s.idsToInsert.length*6,L>lo&&A(L),c.offset=L;let O=XA(F.subarray(r,L),s.idsToInsert);return s=null,O}return M&Jm?(F.start=r,F.end=L,F):F.subarray(r,L)}finally{if(o){if(w<10&&w++,S>1e4)o.transitions=null,w=0,S=0,x.length>0&&(x=[]);else if(x.length>0&&!u){for(let O=0,T=x.length;O<T;O++)x[O][Cs]=0;x=[]}if(i&&c.saveStructures){let O=o.sharedLength||f;o.length>O&&(o=o.slice(0,O));let T=F.subarray(r,L);return c.saveStructures(o,l)===!1?(c._mergeStructures(c.getStructures()),c.pack(v)):(l=O,T)}}M&rT&&(L=r)}};let b=v=>{L>lo&&(F=A(L));var M=typeof v,O;if(M==="string"){let T=v.length;if(co&&T>=8&&T<4096){let I=$A.test(v);co[I?0:1]+=v,F[L++]=193,b(I?-T:T);return}let C;T<32?C=1:T<256?C=2:T<65536?C=3:C=5;let P=T*3;if(L+P>lo&&(F=A(L+P)),T<64||!d){let I,E,R,D=L+C;for(I=0;I<T;I++)E=v.charCodeAt(I),E<128?F[D++]=E:E<2048?(F[D++]=E>>6|192,F[D++]=E&63|128):(E&64512)===55296&&((R=v.charCodeAt(I+1))&64512)===56320?(E=65536+((E&1023)<<10)+(R&1023),I++,F[D++]=E>>18|240,F[D++]=E>>12&63|128,F[D++]=E>>6&63|128,F[D++]=E&63|128):(F[D++]=E>>12|224,F[D++]=E>>6&63|128,F[D++]=E&63|128);O=D-L-C}else O=d(v,L+C,P);O<32?F[L++]=160|O:O<256?(C<2&&F.copyWithin(L+2,L+1,L+1+O),F[L++]=217,F[L++]=O):O<65536?(C<3&&F.copyWithin(L+3,L+2,L+2+O),F[L++]=218,F[L++]=O>>8,F[L++]=O&255):(C<5&&F.copyWithin(L+5,L+3,L+3+O),F[L++]=219,vt.setUint32(L,O),L+=4),L+=O}else if(M==="number")if(v>>>0===v)v<64?F[L++]=v:v<256?(F[L++]=204,F[L++]=v):v<65536?(F[L++]=205,F[L++]=v>>8,F[L++]=v&255):(F[L++]=206,vt.setUint32(L,v),L+=4);else if(v>>0===v)v>=-32?F[L++]=256+v:v>=-128?(F[L++]=208,F[L++]=v+256):v>=-32768?(F[L++]=209,vt.setInt16(L,v),L+=2):(F[L++]=210,vt.setInt32(L,v),L+=4);else{let T;if((T=this.useFloat32)>0&&v<4294967296&&v>=-2147483648){F[L++]=202,vt.setFloat32(L,v);let C;if(T<4||(C=v*tc[(F[L]&127)<<1|F[L+1]>>7])>>0===C){L+=4;return}else L--}F[L++]=203,vt.setFloat64(L,v),L+=8}else if(M==="object")if(!v)F[L++]=192;else{if(s){let C=s.get(v);if(C){if(!C.id){let P=s.idsToInsert||(s.idsToInsert=[]);C.id=P.push(C)}F[L++]=214,F[L++]=112,vt.setUint32(L,C.id),L+=4;return}else s.set(v,{offset:L-r})}let T=v.constructor;if(T===Object)_(v,!0);else if(T===Array){O=v.length,O<16?F[L++]=144|O:O<65536?(F[L++]=220,F[L++]=O>>8,F[L++]=O&255):(F[L++]=221,vt.setUint32(L,O),L+=4);for(let C=0;C<O;C++)b(v[C])}else if(T===Map){O=v.size,O<16?F[L++]=128|O:O<65536?(F[L++]=222,F[L++]=O>>8,F[L++]=O&255):(F[L++]=223,vt.setUint32(L,O),L+=4);for(let[C,P]of v)b(C),b(P)}else{for(let C=0,P=ic.length;C<P;C++){let I=id[C];if(v instanceof I){let E=ic[C];if(E.write){E.type&&(F[L++]=212,F[L++]=E.type,F[L++]=0),b(E.write.call(this,v));return}let R=F,D=vt,z=L;F=null;let B;try{B=E.pack.call(this,v,V=>(F=R,R=null,L+=V,L>lo&&A(L),{target:F,targetView:vt,position:L-V}),b)}finally{R&&(F=R,vt=D,L=z,lo=F.length-10)}B&&(B.length+L>lo&&A(B.length+L),L=YA(B,F,L,E.type));return}}_(v,!v.hasOwnProperty)}}else if(M==="boolean")F[L++]=v?195:194;else if(M==="bigint"){if(v<BigInt(1)<<BigInt(63)&&v>=-(BigInt(1)<<BigInt(63)))F[L++]=211,vt.setBigInt64(L,v);else if(v<BigInt(1)<<BigInt(64)&&v>0)F[L++]=207,vt.setBigUint64(L,v);else if(this.largeBigIntToFloat)F[L++]=203,vt.setFloat64(L,Number(v));else throw new RangeError(v+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");L+=8}else if(M==="undefined")this.encodeUndefinedAsNil?F[L++]=192:(F[L++]=212,F[L++]=0,F[L++]=0);else if(M==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+M)},_=this.useRecords===!1?this.variableMapSize?v=>{let M=Object.keys(v),O=M.length;O<16?F[L++]=128|O:O<65536?(F[L++]=222,F[L++]=O>>8,F[L++]=O&255):(F[L++]=223,vt.setUint32(L,O),L+=4);let T;for(let C=0;C<O;C++)b(T=M[C]),b(v[T])}:(v,M)=>{F[L++]=222;let O=L-r;L+=2;let T=0;for(let C in v)(M||v.hasOwnProperty(C))&&(b(C),b(v[C]),T++);F[O+++r]=T>>8,F[O+r]=T&255}:v=>{let M=Object.keys(v),O,T=a.transitions||(a.transitions=Object.create(null)),C=0;for(let I=0,E=M.length;I<E;I++){let R=M[I];O=T[R],O||(O=T[R]=Object.create(null),C++),T=O}let P=T[Cs];if(P)P>=96&&m?(F[L++]=((P-=96)&31)+96,F[L++]=P>>5):F[L++]=P;else{P=a.nextId,P||(P=64),P<y&&this.shouldShareStructure&&!this.shouldShareStructure(M)?(P=a.nextOwnId,P<g||(P=y),a.nextOwnId=P+1):(P>=g&&(P=y),a.nextId=P+1);let I=M.highByte=P>=96&&m?P-96>>5:-1;T[Cs]=P,a[P-64]=M,P<y?(M.isShared=!0,a.sharedLength=P-63,i=!0,I>=0?(F[L++]=(P&31)+96,F[L++]=I):F[L++]=P):(I>=0?(F[L++]=213,F[L++]=114,F[L++]=(P&31)+96,F[L++]=I):(F[L++]=212,F[L++]=114,F[L++]=P),C&&(S+=w*C),x.length>=h&&(x.shift()[Cs]=0),x.push(T),b(M))}for(let I=0,E=M.length;I<E;I++)b(v[M[I]])},A=v=>{let M;if(v>16777216){if(v-r>Ym)throw new Error("Packed buffer would be larger than maximum buffer size");M=Math.min(Ym,Math.round(Math.max((v-r)*(v>67108864?1.25:2),4194304)/4096)*4096)}else M=(Math.max(v-r<<2,F.length-1)>>12)+1<<12;let O=new nd(M);return vt=new DataView(O.buffer,0,M),F.copy?F.copy(O,0,r,v):O.set(F.slice(r,v)),L-=r,r=0,lo=O.length-10,F=O}}useBuffer(t){F=t,vt=new DataView(F.buffer,F.byteOffset,F.byteLength),L=0}};id=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ts];ic=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:a}=t(6);o[a++]=214,o[a++]=255,i.setUint32(a,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:a}=t(10);o[a++]=215,o[a++]=255,i.setUint32(a,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(a+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:a}=t(3);o[a++]=212,o[a++]=255,o[a++]=255}else{let{target:o,targetView:i,position:a}=t(15);o[a++]=199,o[a++]=12,o[a++]=255,i.setUint32(a,n.getMilliseconds()*1e6),i.setBigInt64(a+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?Xm(n,16,t):Km(ac?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==Qm&&this.structuredClone?Xm(n,od.indexOf(e.name),t):Km(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Xm(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:a}=e(4+o);i[a++]=199,i[a++]=o+1}else if(o+1<65536){var{target:i,position:a}=e(5+o);i[a++]=200,i[a++]=o+1>>8,i[a++]=o+1&255}else{var{target:i,position:a,targetView:s}=e(7+o);i[a++]=201,s.setUint32(a,o+1),a+=4}i[a++]=116,i[a++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),a)}function Km(n,t){let e=n.byteLength;var r,o;if(e<256){var{target:r,position:o}=t(e+2);r[o++]=196,r[o++]=e}else if(e<65536){var{target:r,position:o}=t(e+3);r[o++]=197,r[o++]=e>>8,r[o++]=e&255}else{var{target:r,position:o,targetView:i}=t(e+5);r[o++]=198,i.setUint32(o,e),o+=4}r.set(n,o)}function YA(n,t,e,r){let o=n.length;switch(o){case 1:t[e++]=212;break;case 2:t[e++]=213;break;case 4:t[e++]=214;break;case 8:t[e++]=215;break;case 16:t[e++]=216;break;default:o<256?(t[e++]=199,t[e++]=o):o<65536?(t[e++]=200,t[e++]=o>>8,t[e++]=o&255):(t[e++]=201,t[e++]=o>>24,t[e++]=o>>16&255,t[e++]=o>>8&255,t[e++]=o&255)}return t[e++]=r,t.set(n,e),e+=o,e}function XA(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,a)=>i.offset>a.offset?1:-1);e=t.pop();){let i=e.offset,a=e.id;n.copyWithin(i+r,i,o),r-=6;let s=i+r;n[s++]=214,n[s++]=105,n[s++]=a>>24,n[s++]=a>>16&255,n[s++]=a>>8&255,n[s++]=a&255,o=i}return n}function nn(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)");id.unshift(n.Class),ic.unshift(n)}$m(n)}var Zm=new Un({useRecords:!1}),KA=Zm.pack,QA=Zm.pack;var{NEVER:ZA,ALWAYS:JA,DECIMAL_ROUND:eT,DECIMAL_FIT:tT}=oc,Jm=512,rT=1024;var ey=new Un({structuredClone:!0});nn({Class:me.prototype.constructor,type:1,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,me.prototype),n}});nn({Class:ge.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,ge.prototype),n}});nn({Class:it.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,it.prototype),n}});nn({Class:_s.prototype.constructor,type:4,write(n){return n.id},read(n){return new _s(n)}});nn({Class:As.prototype.constructor,type:5,write(n){return n.data},read(n){return new As(n)}});nn({Class:Ke.prototype.constructor,type:6,write(n){return{...n}},read(n){return Object.setPrototypeOf(n,Ke.prototype),n}});function oT(n){var t=0;if(n.length===0)return t;for(let e=0;e<n.length;e++){let r=n[e];t=(t<<5)-t+r,t=t&t}return t}function ad(n){if(zi(n))return n;if(Array.isArray(n))return n.map(ad);if(typeof n=="object"&&n!==null){let t={};for(let e of Object.keys(n).sort())t[e]=ad(n[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(n)),t}else return n}var sc;(r=>{function n(o){return ey.pack(o)}r.serialize=n;function t(o){return ey.unpack(o)}r.deserialize=t;function e(o){return oT(n(ad(o))).toString()}r.checksum=e})(sc||(sc={}));var ln="personal camera",cn="a218fcc3-276b-49b9-b485-49037fd14f5f",ay=2960946,Tt=5526619;var ty;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i]}e.lerp=t})(ty||(ty={}));var an;(s=>{function n(l,d){return l[0]===d[0]&&l[1]===d[1]&&l[2]===d[2]}s.isEqual=n;function t(l,d){return[l[0]+d[0],l[1]+d[1],l[2]+d[2]]}s.add=t;function e(l,d){return[l[0]-d[0],l[1]-d[1],l[2]-d[2]]}s.sub=e;function r(l,d){return[l[0]/d[0],l[1]/d[1],l[2]/d[2]]}s.div=r;function o(l,d){return[l[0]*d[0],l[1]*d[1],l[2]*d[2]]}s.mul=o;function i(l,d){return Math.hypot(l[0]-d[0],l[1]-d[1],l[2]-d[2])}s.dist=i;function a(l,d,c){return[l[0]+(d[0]-l[0])*c,l[1]+(d[1]-l[1])*c,l[2]+(d[2]-l[2])*c]}s.lerp=a})(an||(an={}));var ry;(e=>{function n(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=n;function t(r,o,i){return[r[0]+(o[0]-r[0])*i,r[1]+(o[1]-r[1])*i,r[2]+(o[2]-r[2])*i,r[3]+(o[3]-r[3])*i]}e.lerp=t})(ry||(ry={}));var sn;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,a){for(let s=0;s<16;s++)if(i[s]!==a[s])return!1;return!0}o.isEqual=t;function e(i){return i??o.identity}o.simplify=e;function r(i,a){let s=a.slice(0);for(var l=0,d=a.length;l<d;l+=3){let c=i[3]*a[l]+i[7]*a[l+1]+i[11]*a[l+2]+i[15];s[l]=(i[0]*a[l]+i[4]*a[l+1]+i[8]*a[l+2]+i[12])/c,s[l+1]=(i[1]*a[l]+i[5]*a[l+1]+i[9]*a[l+2]+i[13])/c,s[l+2]=(i[2]*a[l]+i[6]*a[l+1]+i[10]*a[l+2]+i[14])/c}return s}o.applyMatrix4=r})(sn||(sn={}));var Lt;(c=>{function n(u){return typeof u=="object"&&typeof u.r=="number"&&typeof u.g=="number"&&typeof u.b=="number"}c.isRGB=n,c.white={r:1,g:1,b:1},c.red={r:1,g:0,b:0},c.black={r:0,g:0,b:0};function o(u){return{r:Math.round(u.r*255),g:Math.round(u.g*255),b:Math.round(u.b*255),a:1}}c.toRgb255a1=o;function i(u){return{r:u.r,g:u.g,b:u.b}}c.clone=i;function a(u){return u=Math.floor(u),{r:(u>>16&255)/255,g:(u>>8&255)/255,b:(u&255)/255}}c.fromHex=a;function s(u){return Math.round(u.r*255)*65536+Math.round(u.g*255)*256+Math.round(u.b*255)}c.toHex=s;function l(u,p){return u.r===p.r&&u.g===p.g&&u.b===p.b}c.equals=l;function d(u,p,f){return{r:u.r+(p.r-u.r)*f,g:u.g+(p.g-u.g)*f,b:u.b+(p.b-u.b)*f}}c.lerp=d})(Lt||(Lt={}));var Jt;(s=>{s.white={...Lt.white,a:1},s.transparent={...Lt.white,a:0};function e(l){return{r:l[0],g:l[1],b:l[2],a:l[3]}}s.from0to1=e;function r(l,d){return{...Lt.fromHex(l),a:d}}s.fromHexAndA=r;function o(l){return{r:Math.round(l.r*255),g:Math.round(l.g*255),b:Math.round(l.b*255),a:l.a}}s.toRgb255a1=o;function i(l,d){return Lt.equals(l,d)&&l.a===d.a}s.equals=i;function a(l,d,c){return{r:l.r+(d.r-l.r)*c,g:l.g+(d.g-l.g)*c,b:l.b+(d.b-l.b)*c,a:l.a+(d.a-l.a)*c}}s.lerp=a})(Jt||(Jt={}));var lc;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(lc||(lc={}));var oy;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(oy||(oy={}));var ny;(t=>t.defaultData={control1:[.5,0],control2:[.5,1]})(ny||(ny={}));var iy;(i=>(i.linear=[0,0,1,1],i.ease=[.25,.1,.25,1],i.easeIn=[.42,0,1,1],i.easeOut=[0,0,.58,1],i.easeInOut=[.42,0,.58,1]))(iy||(iy={}));function sy(n){return typeof n=="string"&&n.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(n):!1}var kr;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(kr||(kr={}));var un;(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},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(un||(un={}));var uo;(e=>{function n(r,o=.1){return{disabled:!1,type:"linear",hideBase:!1,count:3,radial:{radius:Math.max(r[0],r[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[r[0]+r[0]*o,0,0]},grid:{count:[2,2,2],size:r.map(i=>i*(1+o)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}e.defaultData=n;function t(r,o){let i={...r};if(nT.forEach(a=>{Object.assign(i,{[a]:o[a]??r[a]})}),i.radial={...r.radial},o.radial){let a=r.radial,s=o.radial;iT.forEach(l=>{Object.assign(i.radial,{[l]:s[l]??a[l]})})}if(i.linear={...r.linear},o.linear){let a=r.linear,s=o.linear;aT.forEach(l=>{Object.assign(i.linear,{[l]:s[l]??a[l]})})}if(i.grid={...r.grid},o.grid){let a=r.grid,s=o.grid;sT.forEach(l=>{Object.assign(i.grid,{[l]:s[l]??a[l]})})}if(i.toObject={...r.toObject},o.toObject){let a=r.toObject,s=o.toObject;lT.forEach(l=>{Object.assign(i.toObject,{[l]:s[l]??a[l]})})}if(i.randomnessObject={...r.randomnessObject},o.randomnessObject){let a=r.randomnessObject,s=o.randomnessObject;cT.forEach(l=>{Object.assign(i.randomnessObject,{[l]:s[l]??a[l]})})}return i}e.merge=t})(uo||(uo={}));var cc;(r=>{r.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let t=["radial","linear","grid","toObject","randomnessObject"];function e(o,i){let a=[];o.count!==void 0&&a.push({type:0,path:i,props:{count:o.count}});for(let s of t){let l=o[s];l&&Object.keys(l).length>0&&a.push({type:0,path:[...i,s],props:l})}return a}r.toOps=e})(cc||(cc={}));var nT=["count"],iT=["radius","start","end","position","scale","rotation"],aT=["position","scale","rotation"],sT=["count","size"],lT=["count","position","scale","rotation"],cT=["strength","scale","rotation","position","movement","seed","freqScale"];var uc;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(uc||(uc={}));var dc;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:Jt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(r==="SpotLight")return{type:r,color:Jt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Jt.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(dc||(dc={}));var dn;(t=>t.defaultData={enabled:"visibility",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]})(dn||(dn={}));var sd;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(sd||(sd={}));var ld;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(ld||(ld={}));var pc;(t=>t.defaultData={...ld.defaultData,...sd.defaultData})(pc||(pc={}));var ly;(t=>{function n(e,r){let o=[];if("material"in e){let i=typeof e.material=="string"?r.materials[e.material]??r.lib.materials[e.material]?.asset:e.material;i&&o.push(i)}else if("materials"in e)for(let i of e.materials){let a=typeof i=="string"?r.materials[i]??r.lib.materials[i]?.asset:i;a&&o.push(a)}return o}t.getMaterialData=n})(ly||(ly={}));var qi;(e=>(e.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},e.maxSize=3e7))(qi||(qi={}));var cy;(t=>{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"}t.is=n})(cy||(cy={}));function dy(n){return n.type!=="displace"}var uy;(t=>{function n(e){return e==="phong"||e==="toon"||e==="lambert"||e==="physical"}t.is=n})(uy||(uy={}));var py=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],fy=["wrapping","image","video","name"],er;(o=>{function n(i,a){let{texture:s,...l}=a;if(Object.assign(i,l),s){let d=i.texture;d&&Object.assign(d,s)}}o.patch=n;function t(i,a){return i==="light"&&a?e(a):r(i)}o.defaultData=t;function e(i){let a={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(i){case"phong":return{...a,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...a,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...a,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...a,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function r(i){let a={alpha:1,mode:0,isMask:!1,visible:!0};switch(i){case"texture":return{...a,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{...a,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:qi.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...a,type:"color",color:Lt.fromHex(Tt)};case"depth":return{...a,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{...a,type:"normal",cnormal:[1,1,1]};case"gradient":return{...a,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{...a,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{...Lt.fromHex(6710886),a:1},colorB:{...Lt.fromHex(6710886),a:1},colorC:{...Lt.fromHex(16777215),a:1},colorD:{...Lt.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{...a,type:"fresnel",color:Jt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...a,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...a,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:Jt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...a,type:"outline",outlineColor:Jt.fromHexAndA(0,1),contourColor:Jt.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{...a,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...a,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{...a,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{...Lt.fromHex(0),a:1},colorB:{...Lt.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}}}})(er||(er={}));var Ft;(l=>{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")}l.isMergable=n;function t(d){let c="";return d.layers.forEach(u=>{Object.entries(u.data).forEach(([p,f])=>{c+=`${p}${f}`,Array.isArray(f)?f.forEach(h=>c+=`${h}`):typeof f=="object"?Object.values(f).forEach(h=>{typeof h=="number"?c+=`${h.toFixed(4)}`:c+=`${h}`}):c+=`${f}`})}),c}l.getHash=t;function e(){return{layers:new ge}}l.defaultEmptyData=e;function r(d="layer1",c="layer2"){return i("phong",d,c)}l.defaultData=r;function o(d,c){return{...d,name:c}}l.withName=o;function i(d,c="layer1",u="layer2"){let p=new ge;return p.push({fi:0,data:er.defaultData("light",d),id:c}),p.push({fi:1,data:er.defaultData("color"),id:u}),{layers:p}}l.defaultTwoLayerData=i;function a(d,c="phong",u="layer1",p="layer2"){let f=er.defaultData("texture");Object.assign(f.texture,{image:d});let h=new ge;return h.push({fi:0,data:f,id:u}),h.push({fi:1,data:er.defaultData("light",c),id:p}),{layers:h}}l.defaultTwoLayerTextureData=a;function s(d,c="phong",u="layer1",p="layer2"){let f=er.defaultData("video");Object.assign(f.texture,{video:d});let h=new ge;return h.push({fi:0,data:f,id:u}),h.push({fi:1,data:er.defaultData("light",c),id:p}),{layers:h}}l.defaultTwoLayerVideoTextureData=s})(Ft||(Ft={}));var Wi;(t=>{function n(){return{points:new ge,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=n})(Wi||(Wi={}));var $i;(t=>{function n(){return{points:new ge,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}t.defaultData=n})($i||($i={}));var cd={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0};var fc;(t=>{function n(e,r){let o={...e};return uT.forEach(i=>{Object.assign(o,{[i]:r[i]??e[i]})}),o}t.merge=n})(fc||(fc={}));var hc={shape:cd,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},uT=["depth","offset","angle","twist","startScale","endScale"];var Ps;(e=>{function n(r){return r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"}e.is2DParametricMesh=n;function t(r){return r==="PolygonGeometry"||r==="PolygonGeometry"||r==="RectangleGeometry"||r==="StarGeometry"||r==="TriangleGeometry"||r==="EllipseGeometry"||r==="PathGeometry"||r==="VectorGeometry"||r==="ConeGeometry"||r==="CubeGeometry"||r==="CylinderGeometry"||r==="DodecahedronGeometry"||r==="HelixGeometry"||r==="IcosahedronGeometry"||r==="LatheGeometry"||r==="PyramidGeometry"||r==="SphereGeometry"||r==="PlaneGeometry"||r==="BackdropGeometry"||r==="TorusGeometry"||r==="TorusKnotGeometry"||r==="BooleanGeometry"||r==="TextGeometry"}e.isParametricMesh=t})(Ps||(Ps={}));var mc;(t=>{function n(e,r){let o={...e};return Object.assign(o,r),o.type==="PathGeometry"&&"extrusion"in r&&r.extrusion&&(o.extrusion={...e.extrusion},Object.assign(o.extrusion,fc.merge(o.extrusion,r.extrusion))),o}t.merge=n})(mc||(mc={}));var pn;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="PathGeometry")return{type:e,width:1,height:1,depth:1,path:$i.defaultData(),extrusion:hc};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:Wi.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:{textValue:""},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:180};throw new Error("not implemented")}t.defaultData=n})(pn||(pn={}));var yc;(t=>t.defaultData={enabled:!1,useBackgroundColor:!1,color:Lt.white,near:.1,far:2e3})(yc||(yc={}));var gc;(e=>{let n={opacity:1,blendFunction:13,enabled:!1};e.defaultData={enabled:!1,pixelation:{...n,blendFunction:16,granularity:15},bloom:{...n,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...n,offset:[2,2]},vignette:{...n,darkness:1,offset:0},hueSaturation:{...n,hue:3,saturation:0},brightnessContrast:{...n,brightness:.25,contrast:0},depthOfField:{...n,focalLength:2,focusDistance:2,bokehScale:2},noise:{...n,blendFunction:16}}})(gc||(gc={}));var ud;(t=>t.defaultData={softShadowQuality:"low"})(ud||(ud={}));var dd;(t=>t.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(dd||(dd={}));var pd;(t=>t.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(pd||(pd={}));var Os;(t=>t.defaultData={usePhysics:!1,gravity:-10})(Os||(Os={}));var fd;(t=>t.defaultData={playCamera:ln,gameControlObject:null})(fd||(fd={}));var xc;(t=>t.defaultData={backgroundColor:Jt.fromHexAndA(ay,1),postprocessing:gc.defaultData,fog:yc.defaultData,globalPhysics:Os.defaultData,ambient:dd.defaultData,ao:pd.defaultData,shadow:ud.defaultData,publish:fd.defaultData})(xc||(xc={}));var hy;(e=>{function n(r){return r==="Component"||r==="Instance"}e.isComponentRelated=n;function t(r){return r==="Empty"||r==="Instance"}e.isEmptyOrComponent=t})(hy||(hy={}));var Yi;(o=>{o.identity={...lc.identity,hiddenMatrix:sn.identity};function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,a){return{position:a?.position||i.position,rotation:a?.rotation||i.rotation,scale:a?.scale||i.scale,hiddenMatrix:a?.hiddenMatrix||i.hiddenMatrix}}o.merge=e;function r(i,a){return Jp({position:an.isEqual(i.position,a.position)?void 0:a.position,rotation:an.isEqual(i.rotation,a.rotation)?void 0:a.rotation,scale:an.isEqual(i.scale,a.scale)?null:a.scale,hiddenMatrix:sn.isEqual(i.hiddenMatrix,a.hiddenMatrix)?void 0:a.hiddenMatrix})}o.diff=r})(Yi||(Yi={}));var jt;(t=>t.defaultData={states:new ge,events:new ge,visible:!0,raycastLock:!1,physics:dn.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...Yi.identity,cloner:null})(jt||(jt={}));var vc;(t=>t.defaultData={type:"Empty",...jt.defaultData})(vc||(vc={}));var my;(t=>t.defaultData={type:"Component",...jt.defaultData})(my||(my={}));var Hn;(t=>t.defaultData={type:"Mesh",...jt.defaultData,...pc.defaultData})(Hn||(Hn={}));var qn;(t=>t.defaultData={...jt.defaultData,...Yi.identity,position:[0,0,un.DefaultTargetOffset],...un.defaultData})(qn||(qn={}));var bc;(e=>{function n(r){return{...jt.defaultData,...dc.defaultData(r)}}e.defaultData=n,e.defaultDirectionalLightData={...e.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(bc||(bc={}));var Xi;(e=>{function n(r,o,i=0){for(;i<o.length;){let a=r?r[o[i]]:void 0;if(o.length===i+1)return a;if(a)r=a.descendants,i+=1;else return}}e.resolveWithDes=n;function t(r,o,i=0){let a=n(r,o,i);if(a){let s=Object.keys(a);if(s.length===1&&s[0]==="descendants")return}return a}e.resolve=t})(Xi||(Xi={}));var po;(i=>{i.rootOverrideProps=["physics","events"],i.compositeNonOptionalOverrideProps=["geometry"],i.compositeEntireOverrideOverrideProps=["material"];function r(a,s){return{...jt.defaultData,...s,component:a,overrides:new Ke,physics:void 0,events:void 0,type:"Instance"}}i.ofComponent=r;function o(a){let s=Yi.fromObject(a.data);return r(a.id,s)}i.fromComponentData=o})(po||(po={}));var Vo;(t=>t.defaultData={type:"Page",...jt.defaultData,physics:{...dn.defaultData,fusedBody:!1},...xc.defaultData,camera:qn.defaultData})(Vo||(Vo={}));var Sc;(i=>(i.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:sn.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:dn.defaultData,states:new ge,events:new ge,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...un.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",...jt.defaultData,...Hn.defaultData,geometry:pn.defaultData("RectangleGeometry"),material:Ft.defaultTwoLayerData("phong","layer1","layer2")},i.defaultBooleanObject={name:"Boolean",...jt.defaultData,...Hn.defaultData,geometry:pn.defaultData("BooleanGeometry"),material:Ft.defaultTwoLayerData("phong","layer1","layer2")},i.defaultTextObject={name:"Text",...jt.defaultData,...Hn.defaultData,geometry:pn.defaultData("TextGeometry"),material:Ft.defaultTwoLayerData("phong","layer1","layer2")}))(Sc||(Sc={}));var Wn;(o=>{function n(i,a){let s={name:a};return i.type==="Mesh"?(s.geometry={},"material"in i&&(s.material={layers:new Ke}),"materials"in i&&(s.materials=i.materials.map(l=>({layers:new Ke})))):kr.is(i.type)&&(s.perspective={},s.orthographic={}),s}o.newEmpty=n;function t(i,a){if(a===void 0)return i;let s={...i};return"material"in s&&"material"in a&&a.material&&(s.material=tn(s.material,l=>{if(typeof l!="string")for(let[d,c]of Object.entries(a.material.layers)){let u=l.layers.data(d);u&&er.patch(u,c)}}).data),s.materials&&a.materials&&(s.materials=tn(s.materials,l=>{for(let d=0;d<s.materials.length;d++){let c=a.materials[d];if(typeof c!="string")for(let[u,p]of Object.entries(c.layers)){let f=l[d]?.layers?.data(u);f&&er.patch(f,p)}}}).data),s}function e(i,a){let s,l=[],d={orthographic:0,perspective:0,geometry:0};function c(u,p){for(let[f,h]of Object.entries(p.layers)){let{texture:m,...y}=h;if(m!==void 0&&Object.keys(m).length>0){let g={path:[...u,"layers",f,"texture"],props:m,type:0};l.push(g)}if(Object.keys(y).length>0){let g={path:[...u,"layers",f],props:y,type:0};l.push(g)}}}for(let[u,p]of Object.entries(a))if(u!=="name")if(u==="cloner")l.push(...cc.toOps(p,["cloner"]));else if(u==="pathSnapping")l.push({path:[u],props:{slide:p.slide,offset:p.offset},type:0});else if(u==="material")c(["material"],p);else if(u==="materials")for(let[f,h]of Object.entries(p))c(["materials",f],h);else if(d[u]===0){if(u==="geometry"&&p.extrusion!==void 0){let f={path:[u,"extrusion"],props:p.extrusion,type:0};l.push(f),p={...p},delete p.extrusion}if(Object.keys(p).length>0){let f={path:[u],props:p,type:0};l.push(f)}}else s===void 0&&(s={path:[],props:{},type:0},l.push(s)),s.props[u]=p;return l}o.toOps=e;function r(i,a){if(a===void 0)return i;let s={...i};if(Object.assign(s,Yi.merge(s,a)),Object.assign(s,{pathSnapping:Object.assign({},s.pathSnapping,{slide:a.pathSnapping?.slide??s.pathSnapping?.slide??0,offset:a.pathSnapping?.offset??s.pathSnapping?.offset??0})}),kr.is(i.type)){s.orthographic={...s.orthographic},s.perspective={...s.perspective};let l=a;l.orthographic?.zoom!==void 0&&(s.orthographic.zoom=l.orthographic.zoom),l.perspective?.zoom!==void 0&&(s.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(s.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(s.targetOffset=l.targetOffset)}else if(i.type==="Mesh")"geometry"in a&&Object.assign(s,{geometry:mc.merge(s.geometry,a.geometry)}),(a.material||a.materials)&&(s=t(s,a)),s.cloner&&"cloner"in a&&Object.assign(s,{cloner:uo.merge(s.cloner,a.cloner)});else if(i.type==="Empty")s.cloner&&"cloner"in a&&Object.assign(s,{cloner:uo.merge(s.cloner,a.cloner)});else if(uc.is(i.type)){let l=a;l.intensity!==void 0&&(s.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?s.color=l.color:s.color=Lt.clone(l.color))}return s}o.patch=r})(Wn||(Wn={}));var Qi;(t=>t.defaultData={enablePan:!0,enableZoom:!0,enableRotate:!0,enableDamping:!0,rotationLimitsMode:0,rotationVerticalOffset:{min:Math.PI/4,max:Math.PI/4},rotationHorizontalOffset:{min:Math.PI/4,max:Math.PI/4},rotationSoftLimit:2,panLimitsMode:0,panVerticalOffset:{min:250,max:250},panHorizontalOffset:{min:250,max:250},panSoftLimit:2,zoomLimitsEnabled:!1,zoomLimits:{min:.1,max:2},autoRotate:!1,autoRotateSpeed:2,autoRotateClockwise:!0,hoverRotatePanMode:0,hoverRotatePanStrength:20,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Qi||(Qi={}));var fo;(t=>t.defaultData={orbitControls:Qi.defaultData,playPage:cn,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((e,r)=>{let o=0,i=0;return r<5?i=-30:r<10&&(i=30),r===0||r===10||r===5?o=30:(r===4||r===11||r===9)&&(o=-30),[120,[o,i],"show"]}),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,hdTransmission:!1})(fo||(fo={}));var hd;(t=>t.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(hd||(hd={}));var md;(t=>t.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(md||(md={}));var fn;(e=>(e.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...hd.defaultData},isRandomSeed:!0,seed:e.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:md.defaultData}),e.generateSeed=()=>Math.round(Math.random()*1e5)))(fn||(fn={}));var yy;(e=>{function n(r){return r.find(o=>o.data.type==="Page"&&o.data.globalPhysics.usePhysics)!==void 0}e.physicsEnabled=n;function t(r,o,i){r.scene.objects.traverseFrom(o,(a,s)=>{if(s.type==="Instance"){let l=Zi.getComponentData(r,s.component)?.data;l&&i(a,s,l.events)}else i(a,s,s.events)})}e.traverseModuleInstances=t})(yy||(yy={}));var hn;(s=>{s.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function t(l={withLight:!0,withSquare:!0}){let d=[],c=Sc.defaultMeshObject;l.withLight===!0&&d.push({fi:-1,data:bc.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),l.withSquare===!0&&d.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:c,children:[]});let u=new it;return u.push({fi:1,id:cn,data:{...Vo.defaultData,name:"Scene 1"},children:d}),u}s.defaultData={objects:t(),publish:fo.defaultData,styles:fn.defaultData()},s.emptyDataWithoutPage=function(){return{objects:new it,publish:fo.defaultData,styles:fn.defaultData()}},s.emptyDataWithPage=function(l){return{objects:t(l),publish:fo.defaultData,styles:fn.defaultData()}};function i(l){return{...s.defaultData,objects:sr(l,it.prototype)}}s.withObjs=i;function a(l,d){return i([{id:l,data:d,children:[],fi:0}])}s.withObj=a})(hn||(hn={}));var Ji;(t=>t.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(Ji||(Ji={}));var ea;(t=>t.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(ea||(ea={}));var wc;(i=>{function n(a){return a.textValue!==void 0}i.isTextValue=n;function t(a){return typeof a=="number"}i.isNumber=t;function e(a){return typeof a=="boolean"}i.isBoolean=e;function r(a){return n(a)?"string":e(a)?"boolean":"number"}i.typeOfVariable=r;function o(a){return i.isTextValue(a)?Array.isArray(a.textValue)?a.textValue.map(s=>s.toString().padStart(a.padding??2,"0")).join(a.deliminator??":")+(a.suffix!==void 0?" "+a.suffix:""):a.textValue.toString():i.isBoolean(a)?a?"True":"False":i.isNumber(a)?parseFloat(a.toFixed(3)).toString():a.toString()}i.getDisplayedValue=o})(wc||(wc={}));var yd;(t=>t.all=["images","videos","colors","audios","fonts","materials","variables"])(yd||(yd={}));var gy;(t=>t.all=[...yd.all,"components"])(gy||(gy={}));var xy;(t=>{function n(){return{images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,materials:new me,components:new me,variables:new me}}t.defaultData=n})(xy||(xy={}));var mn;(t=>{function n(){return{images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,materials:new me,components:new me,variables:new me}}t.defaultData=n})(mn||(mn={}));var Fr;(i=>{function n(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},sr(a,me.prototype)}i.defaultColors=n;function t(a){let s={};return a?.withAITexture&&(s["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...ea.emptyImage,name:"AI generated image"}),sr(s,me.prototype)}i.defaultImages=t;function e(){return{catelogs:new me,materials:new me,images:new me,videos:new me,colors:new me,audios:new me,fonts:new me,variables:new ge,lib:mn.defaultData()}}i.emptyData=e;function r(a){switch(a){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let s=[0,0,0];return{name:"Time",value:{textValue:s,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:s,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",a)}}i.defaultVariables=r;function o(a,s){if(s.format==="HH:mm:ss"){let l=Math.floor(a/3600),d=Math.floor((a-l*3600)/60),c=Math.round(a-l*3600-d*60);return{textValue:[l,d,c]}}else if(s.format==="mm:ss"){let l=Math.floor(a/60),d=Math.round(a-l*60);return{textValue:[l,d]}}else return s.format==="number"?a=Math.round(a):a=Math.round(a*1e3)/1e3,a}i.getFormattedTimerTime=o})(Fr||(Fr={}));var Ms=require("three");var _c;(t=>t.list=["idle","move","jump","run"])(_c||(_c={}));var Ac;(e=>(e.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},e.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","\u25B2"],["rotPosY","\u25C0"],["rotNegX","\u25BC"],["rotNegY","\u25B6"],["jump","Space"],["run","\u21E7"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:e.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new ge,move:new ge,jump:new ge,run:new ge},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:Jt.fromHexAndA(3728051,1)}}))(Ac||(Ac={}));function vy(n){n.layers.forEach(t=>{if(t.type==="depth"&&t.colorA!==void 0){let e=t.colorA,r=t.colorB,o=[[e.r,e.g,e.b,e.a],[r.r,r.g,r.b,r.a]],i=[0,1];for(let s=2;s<10;s++)o.push(o[1]),i.push(1);let a={...zr(at(t),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,t.near),far:Math.max(0,t.far),colors:o,steps:i,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(t,a)}else if(t.type==="depth"&&t.gradientType===1&&(t.near<0||t.far<0)){let e={...at(t),near:Math.max(t.near,0),far:Math.max(t.far,0)};Object.assign(t,e)}})}function Go(n,t){Object.values(n.shared.materials).forEach(e=>t(e))}function zo(n,t){n.scene.objects.traverse((e,r)=>{"materials"in r?r.materials.forEach((o,i)=>{o===void 0&&(r.materials[i]=Ft.defaultData(),o=r.materials[i]),typeof o!="string"&&t(o)}):"material"in r?typeof r.material!="string"&&(r.material===void 0&&(r.material=Ft.defaultData()),t(r.material)):r.type==="Mesh"&&(r.material===void 0&&(r.material=Ft.defaultData()),t(r.material)),"overrides"in r&&Object.values(r.overrides).forEach(o=>{o.material&&typeof o.material!="string"&&t(o.material)})})}function dT(n){Object.assign(n.scene.publish,{orbitControls:{...Qi.defaultData,...at(n.scene.publish.orbitControls)}})}function pT(n){Object.assign(n.scene.publish.settings,{video:{...fo.defaultData.settings.video,...at(n.scene.publish.settings.video)}})}function fT(n){function t(e){if(e.layers){for(let r of Object.values(e.layers))if(r){for(let[o,i]of Object.entries(r))if((py.includes(o)||typeof i=="boolean")&&delete r[o],o==="texture")for(let[a,s]of Object.entries(i))(fy.includes(a)||typeof s=="boolean")&&delete i[a]}}}n.scene.objects.traverse((e,r)=>{r.states.forEach(o=>{let i=o;i.material?t(i.material):i.materials&&i.materials.forEach(a=>{t(a)})})})}function hT(n){n.scene.publish.withBackground=!0}function mT(n){n.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function yT(n){n.scene.objects.traverse((t,e)=>{let r=e.cloner;r&&(r.radial.scale=r.radial.scale.map(o=>o+1),r.linear.scale=r.linear.scale.map(o=>o+1))})}function gT(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&(r.type==="DodecahedronGeometry"||r.type==="IcosahedronGeometry")&&(r.detail=Math.round(r.detail))})}function xT(n){n.scene.objects.traverse((t,e)=>{let r=n.scene.objects.unproxy().parent(t);if(r){let o=at(n.scene.objects.data(r));o&&o.type==="Mesh"&&o.geometry.type==="BooleanGeometry"&&e.type==="Mesh"&&(e.visible=at(e).booleanExclude!==!0)}})}function vT(n){n.scene.objects.traverse((t,e)=>{if(e.type==="Mesh"){let r=e;e.geometry.type==="NonParametricGeometry"?r.material!==void 0&&delete r.material:r.materials!==void 0&&delete r.materials}})}function bT(n){function t(r){Object.setPrototypeOf(r,Ke.prototype),r.texture&&Object.setPrototypeOf(r.texture,Ke.prototype)}function e(r){Object.setPrototypeOf(r,Ke.prototype);for(let o in r)t(r[o])}n.scene.objects.traverse((r,o)=>{o.states.forEach(i=>{let a=i;if(a.material){let s=at(a.material).layers;e(s),a.material.layers=s}if(a.materials)for(let s=0;s<a.materials.length;s++){let l=a.materials[s],d=at(l).layers;e(d),l.layers=d}})})}function by(n){n.layers===void 0&&Object.assign(n,Ft.defaultTwoLayerData("lambert"))}function gd(n){!n.layers||n.layers.forEach(t=>{if(t.type==="depth"&&t.colors.length===10){let e=[...t.colors];e.push(t.colors[9]);let r=[...t.steps];r.push(t.steps[9]);let o={...at(t),colors:e,steps:r};Object.assign(t,o)}})}function ST(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&(e.geometry.type==="BooleanGeometry"||e.geometry.type==="SubdivGeometry")&&(e.geometry.phongAngle=35)})}function Sy(n){n.scene.objects.traverse((t,e)=>{"materials"in e?e.materials.forEach(r=>{typeof r!="string"&&gd(r)}):"material"in e&&typeof e.material!="string"&&gd(e.material)}),Object.values(n.shared.materials).forEach(t=>gd(t))}function wT(n){n.scene.environment.ambientLight.softShadows=!1,n.scene.environment.ambientLight.softShadowQuality="low",n.scene.objects.traverse((t,e)=>{(e.type==="DirectionalLight"||e.type==="SpotLight")&&(e.shadowResolution=1024,e.shadowRadius=1,e.depth=1e5)}),n.shared.penumbraSize=new Array(5).fill(.5)}function _T(n){n.shared.audios=sr({},me.prototype)}function AT(n){n.shared.videos=sr({},me.prototype)}function TT(n){let t=n.shared.materials;Object.entries(t).forEach(([e,r])=>{if(!r.layers){let o={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(t,{[e]:o})}})}function CT(n){Object.entries(at(n.shared.images)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.images[r]}),Object.entries(at(n.shared.audios)).filter(r=>r[1].asset===!1).map(r=>r[0]).forEach(r=>{delete n.shared.audios[r]})}function PT(n){n.scene.publish.settings.web.preload=!1}function wy(n){n.layers&&n.layers.forEach(t=>{t.type==="depth"&&t.num!==void 0&&(t.colors=t.colors.slice(0,t.num),t.steps=t.steps.slice(0,t.num),delete t.num)})}function _y(n){n.layers&&n.layers.forEach(t=>{dy(t)&&t.isMask===void 0&&(t.isMask=!1),(t.type==="texture"||t.type==="video")&&t.blending===void 0&&(t.blending=0),(t.type==="noise"||t.type==="displace"&&t.displacementType==="noise")&&(t.voronoiStyle===void 0&&(t.voronoiStyle=0),t.highCut===void 0&&(t.highCut=1),t.lowCut===void 0&&(t.lowCut=0),t.smoothness===void 0&&(t.smoothness=.3),t.seed===void 0&&(t.seed=0),t.quality===void 0&&(t.quality=1))})}function OT(n){n.shared.fonts=sr({},me.prototype)}function MT(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 IT(n){let t=[];n.scene.objects.traverse((e,r)=>{let o=r;if(o.type==="TextFrame"){let i=Ft.defaultTwoLayerData("phong"),a=typeof o.color=="string"?n.shared.colors[o.color]:o.color;i.layers[1].data.color={r:a.r,g:a.g,b:a.b},i.layers[1].data.alpha=o.alpha;let s=MT(o.font);n.shared.fonts[s]===void 0&&(n.shared.fonts[s]={name:s});let l={name:o.name,...jt.defaultData,...Hn.defaultData,flatShading:!1,wireframe:!1,geometry:{...pn.defaultData("TextGeometry"),width:o.width,height:o.height,font:s,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:at(o.states),events:at(o.events),visible:o.visible,raycastLock:o.raycastLock,position:o.position,rotation:o.rotation,scale:o.scale,hiddenMatrix:o.hiddenMatrix},d=at(n.scene.objects).parent(e);n.scene.objects.insertAfter(d??null,e,[{id:e+"new",data:l,children:[]}]),t.push(e)}}),t.forEach(e=>{n.scene.objects.delete(e)})}function NT(n){let t={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};n.scene.objects.traverse((e,r)=>{r.events.forEach(o=>{if(!!t[Number(o.type)])if(Object.assign(o,{type:t[Number(o.type)]}),o.type==="Audio"&&"audioEvent"in o&&(Object.assign(o,{playAudio:o.audioEvent}),delete o.audioEvent),o.type==="GameControl")Object.assign(o,{gameActions:{idle:new ge,move:new ge,jump:new ge}});else{let i=new ge;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:Ms.MathUtils.generateUUID(),data:{type:"Link",url:o.url,delay:0}}),"targets"in o&&(o.targets.forEach((a,s,l)=>{let d={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},c={easing:a.easing,duration:a.duration};a.easing===6?Object.assign(c,zr(a,"mass","stiffness","damping","velocity")):a.easing===5&&Object.assign(c,{control1:{...a.control1},control2:{...a.control2}});let u={repeat:a.repeat?-1:0,delay:a.delay,delayDirection:a.delayDirection,direction:a.cycle&&a.rewind?"pingpong-rewind":a.cycle?"pingpong":"normal"},p={state:a.state,...u,...c},f={allowSlerp:!0,type:"Transition",object:a.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new ge({fi:0,id:Ms.MathUtils.generateUUID(),data:d},{fi:1,id:Ms.MathUtils.generateUUID(),data:p})};i.push({fi:l,id:s,data:f})}),delete o.targets)}})})}function ET(n){n.scene.objects.traverse((t,e)=>{function r(o,i){let a=new ge,s=[];if(e.events.forEach((l,d,c)=>{if(l.type==="Audio"&&l.trigger===i){let u;s.push(d),l.interaction==="play"?u={...zr(l,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in l?l.after:void 0,toggle:"after"in l?l.toggle:void 0,type:"Audio"}:(l.interaction==="pause"||l.interaction==="stop")&&(u={...zr(l,"interaction","delay","object","playAudio"),type:"Audio"}),u&&a.push({fi:c,id:d,data:u})}}),s.forEach(l=>e.events.delete(l)),a.length){let l=e.events.find(d=>d.type===o)?.data;l?"actions"in l&&l.actions.insertBefore(null,a):e.events.insertBefore(null,[{id:Ms.MathUtils.generateUUID(),data:{type:o,actions:a}}])}}r("Start","start"),r("MouseDown","mouseDown"),r("MouseUp","mouseUp"),r("KeyDown","keyDown"),r("KeyUp","keyUp")})}function Ay(n){let t=n.layers.find(e=>e.type==="light")?.data;if(t?.category==="basic"){let e=er.defaultData("light","phong"),r=t;Object.assign(r,e),r.visible=!1}}function Ty(n){Go(n,Ay),zo(n,Ay)}function DT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="SubdivGeometry"&&(e.geometry.scaleBaked||(e.geometry.scaleBaked=[1,1,1]))})}function LT(n){n.scene.objects.traverse((t,e)=>{(e.type==="Empty"||e.type==="Mesh")&&e.cloner&&!e.cloner.randomnessObject&&!e.cloner.toObject&&!e.cloner.randomness&&(e.cloner={...e.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function BT(n){n.scene.objects.traverse((t,e)=>{e.type==="Mesh"&&e.geometry.type==="NonParametricGeometry"&&!("material"in e)&&!("materials"in e)&&(e.material=Ft.defaultTwoLayerData("phong"))})}function RT(n){n.scene.publish.orbitControls.autoZoom===void 0&&(n.scene.publish.orbitControls.autoZoom=!1),n.scene.objects.traverse((t,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 VT(n){n.scene.objects.traverse((t,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 GT(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 zT(n){let{video:t}=n.scene.publish.settings;t.format==="gif"&&t.fps>48&&(t.fps=15)}function kT(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.resetYPosition=Math.abs(r.resetYPosition-e.position[1]))})})}function FT(n){let t=n.scene.environment.usePhysics;n.scene.objects.traverse((e,r)=>{t&&r.physics===null?r.collision=!1:r.collision="visibility"})}function jT(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.navmesh=Ac.defaultDataThirdPerson.navmesh)})})}function UT(n){n.scene.styles||(n.scene.styles=fn.defaultData())}function Cy(n){n.layers.forEach(t=>{t.type==="light"&&t.category!=="toon"&&t.occlusion===void 0&&(t.occlusion=!0)})}function HT(n){n.scene.environment.ambientLight.occlusion===void 0&&(n.scene.environment.ambientLight.occlusion=!1),n.scene.environment.ambientLight.aoFullRes===void 0&&(n.scene.environment.ambientLight.aoFullRes=!1),n.scene.environment.ambientLight.radius===void 0&&(n.scene.environment.ambientLight.radius=256),n.scene.environment.ambientLight.bias===void 0&&(n.scene.environment.ambientLight.bias=.5),n.scene.environment.ambientLight.aoColor===void 0&&(n.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),zo(n,Cy),Go(n,Cy)}function qT(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&Object.assign(r.gameActions,{run:new ge})})})}function WT(n){n.scene.objects.traverse((t,e)=>{e.events.forEach(r=>{r.type==="GameControl"&&(r.keyAssignments=[...r.keyAssignments,["run","\u21E7"],["none","Ctrl"]])})})}function Py(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.bumpMapIntensity===void 0&&(t.bumpMapIntensity=5)})}function Oy(n,t){if(t<1&&(zo(n,vy),Go(n,vy),n.schema=1),t<2&&(dT(n),n.schema=2),t<3&&(fT(n),n.schema=3),t<4&&(hT(n),n.schema=4),t<5&&(mT(n),n.schema=5),t<6&&(yT(n),n.schema=6),t<7&&(gT(n),n.schema=7),t<8&&(n.schema=8),t<9&&(Sy(n),n.schema=9),t<10&&(ST(n),n.schema=10),t<11&&(wT(n),n.schema=11),t<12&&(Sy(n),n.schema=12),t<13&&(_T(n),n.schema=13),t<14&&(TT(n),n.schema=14),t<15&&(CT(n),n.schema=15),t<16&&(PT(n),n.schema=16),t<17&&(zo(n,wy),Go(n,wy),n.schema=17),t<18&&(zo(n,by),Go(n,by),n.schema=18),t<19&&(pT(n),n.schema=19),t<20&&(OT(n),IT(n),n.schema=20),t<21&&(NT(n),ET(n),n.schema=21),t<22&&(Ty(n),n.schema=22),t<23&&(DT(n),n.schema=23),t<24&&(LT(n),n.schema=24),(t<25||n.shared.videos===void 0)&&(AT(n),t<25&&(n.schema=25)),t<26&&(xT(n),n.schema=26),t<27&&(vT(n),n.schema=27),t<28&&(Ty(n),n.schema=28),t<29&&(bT(n),n.schema=29),t<30&&(BT(n),n.schema=30),t<31&&(RT(n),n.schema=31),t<33&&(VT(n),n.schema=33),t<34&&(GT(n),n.schema=34),t<35&&(zT(n),n.schema=35),t<36&&(kT(n),n.schema=36),t<37&&(FT(n),n.schema=37),t<38&&(zo(n,_y),Go(n,_y),n.schema=38),t<39&&(jT(n),n.schema=39),t<40&&(UT(n),n.schema=40),t<41&&(HT(n),n.schema=41),t<42&&(qT(n),n.schema=42),t<43&&(WT(n),n.schema=43),t<99){zo(n,Py),Go(n,Py),n.scene.publish.playCamera===null&&(n.scene.publish.playCamera=ln);let e=at(n.scene.objects),r=n.scene.objects;n.scene.publish.playPage=cn,r.insertBefore(null,null,[{id:cn,data:{...Vo.defaultData,backgroundColor:n.scene.backgroundColor,fog:n.scene.fog,postprocessing:n.scene.postprocessing,ao:zr(n.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:n.scene.publish.playCamera,gameControlObject:n.scene.publish.gameControlObject},shadow:zr(n.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...Os.defaultData,...zr(n.scene.environment,"usePhysics","gravity")},camera:at(n.scene.ownerCamera)??Vo.defaultData.camera,name:"Scene"},children:[]}]);for(let a of e)a.id!==hn.TRASH_CAN_ID&&r.move(cn,a.fi,a.id);let o=0,i=0;n.shared.penumbraSize&&n.scene.objects.traverse((a,s)=>{s.type==="DirectionalLight"?(s.penumbraSize=n.shared.penumbraSize[Math.min(o,2)],o+=1):s.type==="SpotLight"&&(s.penumbraSize=n.shared.penumbraSize[3+Math.min(i,1)],i+=1),(s.physics===void 0||s.physics===null)&&s.type!=="Instance"&&(s.physics={},Object.assign(s.physics,dn.defaultData)),s.physics!==void 0&&s.physics!==null&&(s.physics.enabled=s.collision??"visibility",delete s.collision)}),n.schema=99}}function My(n){n.layers&&n.layers.forEach(t=>{t.type==="light"&&t.alphaOverride===void 0&&(t.alphaOverride=1)})}function $T(n){n.scene.objects.traverse((t,e)=>{let r=e.geometry;r&&r.type==="PathGeometry"&&(r.extrusion.capType="flat",r.extrusion.bevel=50,r.extrusion.bevelSides=6,r.extrusion.shape.type==="Custom"&&(r.extrusion.shape.shapeQuality="low"))})}var ta=180/Math.PI;function Iy(n){n.rotation=n.rotation.slice(0,3).map(t=>t*ta)}function Ny(n){Iy(n),n.type==="Page"&&Iy(n.camera),n.states?.forEach(e=>{e.rotation===void 0||e.rotation===null||(e.rotation=e.rotation.slice(0,3).map(r=>r*ta))});let t=n.geometry;t&&t.type==="SphereGeometry"&&(t.thetaLength=(t.thetaLength??180)*ta),t&&t.type==="TorusGeometry"&&(t.arc=t.arc*ta),t&&t.type==="PathGeometry"&&(t.extrusion.angle*=ta,t.extrusion.twist*=ta),n.type==="Mesh"&&n.geometry.type==="TextGeometry"&&(n.geometry.text={textValue:n.geometry.text}),Array.isArray(at(n.events))&&n.events?.forEach(e=>{(e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"||e.type==="Collision"||e.type==="Trigger")&&(e.runMode=e.toggle?"Toggle":"Once")})}function YT(n){n.shared.variables=sr({},me.prototype)}function XT(n){let t=at(n.shared.variables);n.shared.variables=sr(Object.entries(t??{}).map(([e,r],o)=>({fi:o,id:e,data:r})),ge.prototype)}var ko=107;function Ey(n,t){t(n.data);for(let e of n.children)Ey(e,t)}function KT(n){let t=n.schema??104;t!==ko&&t<105&&(Ey(n.asset,Ny),n.schema=105)}function Tc(n){let t=n.schema??0;if(t!==ko){console.warn("updating from ",t,"to ",ko),Oy(n,t),t<100&&(n.scene.publish.joystickSizeAndXYOffset===void 0&&(n.scene.publish.joystickSizeAndXYOffset=fo.defaultData.joystickSizeAndXYOffset),n.schema=100),t<101&&(zo(n,My),Go(n,My),n.schema=101),t<102&&($T(n),n.schema=102),t<104&&(n.shared.catelogs=new me,n.shared.lib=mn.defaultData(),n.schema=104),t<105&&(YT(n),n.scene.objects.traverse((e,r)=>{Ny(r)}),n.schema=105);for(let e of Object.values(n.shared.lib.components))KT(e);t<106&&(XT(n),n.schema=106),t<107&&(n.shared.lib.variables=mn.defaultData().variables,n.schema=107)}}var Zi;(s=>{s.defaultData={schema:ko,scene:hn.defaultData,frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Ji.defaultData),shared:{...Fr.emptyData(),colors:Fr.defaultColors()}},s.emptyDataForImports=function(l){let d=hn.emptyDataWithPage(l);return{schema:ko,scene:d,frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Ji.defaultData),shared:{...Fr.emptyData(),colors:Fr.defaultColors(),images:Fr.defaultImages(l)}}},s.emptyData=function(){return{schema:ko,scene:hn.emptyDataWithPage(),frames:new me().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",Ji.defaultData),shared:Fr.emptyData()}},s.collabHelper={...ws,updateSchema(l){return(l.schema??0)<ko?tn(l,Tc):(l.schema??0)-ko}};function o(l){let d=s.collabHelper.updateSchema(l);return typeof d=="number"?d===0?l:null:d.data}s.updateSchemaDirectly=o;function i(l){return{...l,shared:{...l.shared,lib:mn.defaultData()}}}s.withoutLib=i;function a(l,d){let c=l.scene.objects.get(d);if(c&&c.data.type==="Component")return c;{let u=l.shared.lib.components[d];if(u)return u.asset}}s.getComponentData=a})(Zi||(Zi={}));var Fe=require("three"),Za=Qt(Ly());var QT=.5*(Math.sqrt(3)-1),Is=(3-Math.sqrt(3))/6,ZT=1/3,ho=1/6,jz=(Math.sqrt(5)-1)/4,Uz=(5-Math.sqrt(5))/20,Ns=n=>Math.floor(n)|0,By=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]),vd=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 Cc(n=Math.random){let t=Vy(n),e=new Float64Array(t).map(o=>By[o%12*2]),r=new Float64Array(t).map(o=>By[o%12*2+1]);return function(i,a){let s=0,l=0,d=0,c=(i+a)*QT,u=Ns(i+c),p=Ns(a+c),f=(u+p)*Is,h=u-f,m=p-f,y=i-h,g=a-m,x,S;y>g?(x=1,S=0):(x=0,S=1);let w=y-x+Is,b=g-S+Is,_=y-1+2*Is,A=g-1+2*Is,v=u&255,M=p&255,O=.5-y*y-g*g;if(O>=0){let P=v+t[M],I=e[P],E=r[P];O*=O,s=O*O*(I*y+E*g)}let T=.5-w*w-b*b;if(T>=0){let P=v+x+t[M+S],I=e[P],E=r[P];T*=T,l=T*T*(I*w+E*b)}let C=.5-_*_-A*A;if(C>=0){let P=v+1+t[M+1],I=e[P],E=r[P];C*=C,d=C*C*(I*_+E*A)}return 70*(s+l+d)}}function Ry(n=Math.random){let t=Vy(n),e=new Float64Array(t).map(i=>vd[i%12*3]),r=new Float64Array(t).map(i=>vd[i%12*3+1]),o=new Float64Array(t).map(i=>vd[i%12*3+2]);return function(a,s,l){let d,c,u,p,f=(a+s+l)*ZT,h=Ns(a+f),m=Ns(s+f),y=Ns(l+f),g=(h+m+y)*ho,x=h-g,S=m-g,w=y-g,b=a-x,_=s-S,A=l-w,v,M,O,T,C,P;b>=_?_>=A?(v=1,M=0,O=0,T=1,C=1,P=0):b>=A?(v=1,M=0,O=0,T=1,C=0,P=1):(v=0,M=0,O=1,T=1,C=0,P=1):_<A?(v=0,M=0,O=1,T=0,C=1,P=1):b<A?(v=0,M=1,O=0,T=0,C=1,P=1):(v=0,M=1,O=0,T=1,C=1,P=0);let I=b-v+ho,E=_-M+ho,R=A-O+ho,D=b-T+2*ho,z=_-C+2*ho,B=A-P+2*ho,V=b-1+3*ho,j=_-1+3*ho,H=A-1+3*ho,X=h&255,$=m&255,W=y&255,Y=.6-b*b-_*_-A*A;if(Y<0)d=0;else{let G=X+t[$+t[W]];Y*=Y,d=Y*Y*(e[G]*b+r[G]*_+o[G]*A)}let k=.6-I*I-E*E-R*R;if(k<0)c=0;else{let G=X+v+t[$+M+t[W+O]];k*=k,c=k*k*(e[G]*I+r[G]*E+o[G]*R)}let q=.6-D*D-z*z-B*B;if(q<0)u=0;else{let G=X+T+t[$+C+t[W+P]];q*=q,u=q*q*(e[G]*D+r[G]*z+o[G]*B)}let U=.6-V*V-j*j-H*H;if(U<0)p=0;else{let G=X+1+t[$+1+t[W+1]];U*=U,p=U*U*(e[G]*V+r[G]*j+o[G]*H)}return 32*(d+c+u+p)}}function Vy(n){let e=new Uint8Array(512);for(let r=0;r<512/2;r++)e[r]=r;for(let r=0;r<512/2-1;r++){let o=r+~~(n()*(256-r)),i=e[r];e[r]=e[o],e[o]=i}for(let r=256;r<512;r++)e[r]=e[r-256];return e}var Gy=require("three"),jr=new Gy.Triangle,Pc=class{constructor(t){this.weightAttribute=null;let e=t.geometry;if(!e.isBufferGeometry||e.attributes.position.itemSize!==3)throw new Error("THREE.MeshSurfaceSampler: Requires BufferGeometry triangle mesh.");e.index&&(e=e.toNonIndexed()),this.geometry=e,this.randomFunction=Math.random,this.positionAttribute=this.geometry.getAttribute("position"),this.distribution=null}build(){let t=this.positionAttribute,e=new Float32Array(t.count/3);for(let o=0;o<t.count;o+=3){let i=1;jr.a.fromBufferAttribute(t,o),jr.b.fromBufferAttribute(t,o+1),jr.c.fromBufferAttribute(t,o+2),i*=jr.getArea(),e[o/3]=i}this.distribution=new Float32Array(t.count/3);let r=0;for(let o=0;o<e.length;o++)r+=e[o],this.distribution[o]=r;return this}setRandomGenerator(t){return this.randomFunction=t,this}sample(t,e){if(this.distribution){let r=this.distribution[this.distribution.length-1],o=this.binarySearch(this.randomFunction()*r);return this.sampleFace(o,t,e)}}binarySearch(t){if(!this.distribution)return 0;let e=this.distribution,r=0,o=e.length-1,i=-1;for(;r<=o;){let a=Math.ceil((r+o)/2);if(a===0||e[a-1]<=t&&e[a]>t){i=a;break}else t<e[a]?o=a-1:r=a+1}return i}sampleFace(t,e,r){let o=this.randomFunction(),i=this.randomFunction();return o+i>1&&(o=1-o,i=1-i),jr.a.fromBufferAttribute(this.positionAttribute,t*3),jr.b.fromBufferAttribute(this.positionAttribute,t*3+1),jr.c.fromBufferAttribute(this.positionAttribute,t*3+2),e.set(0,0,0).addScaledVector(jr.a,o).addScaledVector(jr.b,i).addScaledVector(jr.c,1-(o+i)),jr.getNormal(r),this}};var jy=require("three");var _r=require("three"),Fy=Qt(ky()),JT=new _r.Matrix4,eC=new _r.Matrix4,tC=new _r.Matrix4,ra;(t=>{function n(e){return e&&e.__isSPEObject}t.is=n})(ra||(ra={}));var oa=n=>class extends n{constructor(){super(...arguments);this.previousModelViewMatrix=new _r.Matrix4;this.copyPreviousMatrix=!0;this.hiddenMatrix=new _r.Matrix4;this.matrixWorldRigid=new _r.Matrix4;this.shearScale=new _r.Matrix4;this.shearScaleInv=new _r.Matrix4}get __isSPEObject(){return!0}isDescendantOf(r){r instanceof _r.Object3D&&(r=r.uuid);let o=this;for(;o.parent;){if(o.parent.uuid===r)return!0;o=o.parent}return!1}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let a of this.children)a.updateWorldMatrix(!1,!0)}traverseChildren(r,o=0){for(let i of this.children)ra.is(i)&&i.traverseObject(r,o+1)}traverseObject(r,o=0){if(r(this,o)!==!0)for(let a of this.children)ra.is(a)&&a.traverseObject(r,o+1)}updateMatrixWorldSVD(){let r=this.matrixWorld.elements,o=[[r[0],r[4],r[8]],[r[1],r[5],r[9]],[r[2],r[6],r[10]]],{u:i,v:a,q:s}=(0,Fy.SVD)(o),l=JT.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=eC.set(a[0][0],a[0][1],a[0][2],0,a[1][0],a[1][1],a[1][2],0,a[2][0],a[2][1],a[2][2],0,0,0,0,1),c=tC.copy(d).transpose();this.shearScale.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(d),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(l,c).copyPosition(this.matrixWorld),s.every(u=>Math.abs(s[0]-u)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(r,o){this.updateWorldMatrix(!0,!1);let i=new _r.Matrix4().copy(this.matrixWorld).invert();return r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),i.multiply(r.parent.matrixWorld)),"hiddenMatrix"in r&&r.hiddenMatrix instanceof _r.Matrix4?r.hiddenMatrix.premultiply(i):r.applyMatrix4(i),r.updateWorldMatrix(!1,!1),this.add(r),o!==void 0&&(this.children.pop(),this.children.splice(o,0,r)),this}copy(r,o=!1){return super.copy(r,o),this.hasNonUniformScale=r.hasNonUniformScale,this}onAfterRender(r,o,i,a,s,l){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}};var bd=class extends oa(jy.Object3D){},rC=n=>n.type==="Mesh",Fo=class extends bd{constructor(e){super();this.object=e;this.matrixAutoUpdate=!1,this.hasNonUniformScale=e.hasNonUniformScale}raycast(e,r){}expand(){let e=0,r=this.object.entityChildren(e);for(;r;){let o=this.children[e];o?.object!==r&&(o&&this.remove(o),o=new Fo(r),this.add(o),this.children.splice(e,0,this.children.pop()),o.matrixWorldNeedsUpdate=!0,o.matrixAutoUpdate=!1,o.matrix=r.matrix,o.hiddenMatrix=r.hiddenMatrix),o.expand(),e+=1,r=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 rC(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}};var Aa=require("three");var $c=require("three");var Xt=require("three");var pt=require("three"),$n=new pt.Vector3,Yn=new pt.Vector3,na=new pt.Matrix4,Hy=[new pt.Vector3(-1,1,1),new pt.Vector3(-1,-1,1),new pt.Vector3(1,-1,1),new pt.Vector3(1,1,1),new pt.Vector3(-1,1,-1),new pt.Vector3(-1,-1,-1),new pt.Vector3(1,-1,-1),new pt.Vector3(1,1,-1)],oC=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],nC=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],Uy=(n,t,e)=>{n.updateEntityBoxSize($n,Yn),na.copy(t).multiply(n.matrixWorld),Yn.x===0&&Yn.y===0&&Yn.z===0?e.push(new pt.Vector3($n.x,$n.y,$n.z).applyMatrix4(na)):Hy.forEach(r=>{e.push(r.clone().multiply(Yn).add($n).applyMatrix4(na))})},Es=class extends pt.Box3{constructor(){super(...arguments);this.matrix=new pt.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new pt.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(a=>{if(a.visible||a.cloner&&a.data.visible){if(!("geometry"in a)){i.push(new pt.Vector3);return}Uy(a,r,i)}}):Uy(e,r,i),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(na.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(Yn).multiplyScalar(.5),this.getCenter($n),na.copy(this.matrix).setPosition($n),this.vertices=Hy.map(e=>e.clone().multiply(Yn).applyMatrix4(na))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=oC.map(([e,r])=>new pt.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new pt.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=nC.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Ur={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}};var Bt=require("three"),wd=class extends Bt.CurvePath{constructor(){super()}getPoints(t=12){let e=[],r,o=this.getCurveLengths(),a=o[o.length-1]/o.length;for(let s=0,l=this.curves;s<l.length;s++){let d=l[s],c=s===0?o[s]:o[s]-o[s-1],u=Math.ceil(t*c/a),p=d.getPoints(u);for(let f=0;f<p.length;f++){let h=p[f];r&&r.equals(h)||(e.push(h),r=h)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}};var _d=.001;function Ad(n,t,e){return t.clone().sub(n).cross(t.clone().sub(e)).length()<=_d}function Sd(n,t){let e=new Bt.Vector3(...n.position),r=new Bt.Vector3(...n.controlNext.position),o=new Bt.Vector3(...t.controlPrevious.position),i=new Bt.Vector3(...t.position);return Ad(e,r,i)&&Ad(e,o,i)}function Mc(n){let t=n.points.map(c=>new Bt.Vector3(...c.data.position)),e=[n.points[0]],r=new Bt.Vector3(...e[0].data.position);for(let c=0;c<n.points.length-1;c++)Ad(r,t[c],t[c+1])||(e.push(n.points[c]),r=t[c]);e.push(n.points[n.points.length-1]);let o=n.isClosed,i=e.length-(o?0:1),a=e.length,s=[];for(let c=0;c<a;c++){let u=e[c].data,p=new Bt.Vector3(...u.position),f=new Bt.Vector3(...u.controlPrevious.position),h=new Bt.Vector3(...u.controlNext.position),m={position:p,baseRoundness:u.roundness,controlPrevious:f,controlNext:h};if(u.roundness===0||!n.isClosed&&(c===0||c===a-1)){s[c]={...m,removedLength:0};continue}let y=o&&c==0?a-1:c-1,g=o&&c==a-1?0:c+1,x=e[y].data,S=e[g].data,w=new Bt.Vector3(...x.position),b=new Bt.Vector3(...S.position),_=w.clone().sub(p).normalize(),A=b.clone().sub(p).normalize();Object.assign(m,{prevDir:_,nextDir:A});let v=Sd(x,u),M=Sd(u,S);if(!v||!M)s[c]={...m,removedLength:0};else{let O=_.clone().add(A).normalize(),T=O.clone().cross(_).length()/_.dot(O);s[c]={...m,tan:T,removedLength:u.roundness/T}}}for(let c=0;c<i;c++){let u=c,p=o&&c===a-1?0:c+1,f=s[u],h=s[p];if(f.removedLength!==0||h.removedLength!==0){let m=f.position.distanceTo(h.position);f.removedLength=Math.min(f.removedLength,m/2),h.removedLength=Math.min(h.removedLength,m/2)}}let l=[];for(let c=0;c<i;c++){let u=c,p=o&&c===a-1?0:c+1,f=s[u],h=s[p],m=null;if(!Sd(e[u].data,e[p].data))f.position.distanceTo(h.position)>_d&&(m=new Bt.CubicBezierCurve3(f.position,f.controlNext,h.controlPrevious,h.position));else{let y=f.position.clone(),g=h.position.clone();(f.removedLength!==0||h.removedLength!==0)&&(f.nextDir&&y.add(f.nextDir.clone().setLength(f.removedLength)),h.prevDir&&g.add(h.prevDir.clone().setLength(h.removedLength))),y.distanceTo(g)>_d&&(m=new Bt.CubicBezierCurve3(y,y.clone().lerp(g,.3),g.clone().lerp(y,.3),g))}l[2*c+1]=m}for(let c=0;c<a;c++){let u=s[c];if(u.removedLength===0){l[2*c]=null;continue}let p=u.position,f=u.prevDir.clone().multiplyScalar(u.removedLength).add(p),h=u.nextDir.clone().multiplyScalar(u.removedLength).add(p),m=u.tan*u.removedLength,y=u.prevDir.clone().add(u.nextDir).normalize(),g=f.clone().lerp(h,.5),x=f.distanceTo(h)/2,S=y.clone().multiplyScalar(Math.sqrt(Math.pow(m,2)-Math.pow(x,2))).add(g),w=y.clone().multiplyScalar(-m).add(S),b=p.distanceTo(w)/p.distanceTo(g),_=u.prevDir.clone().multiplyScalar(b*p.distanceTo(f)).add(p),A=_.clone().lerp(w,2),v=f.clone().lerp(_,4/3),M=h.clone().lerp(A,4/3);l[2*c]=new Bt.CubicBezierCurve3(f,v,M,h)}let d=new wd;return l.forEach(c=>{c&&d.add(c)}),d}var Oe;(t=>{function n(e){return e&&e.__isEntity}t.is=n})(Oe||(Oe={}));var ia=n=>Oe.is(n),iC={type:"completeState",isfromEntity:!0},aC=["x","y","z"],Td=new Xt.Vector3,sC=new Xt.Vector3().set(0,1,0),aa=n=>class extends oa(n){constructor(){super(...arguments);this.raycastLock=!1;this.scaleLock=!1;this.disposed=!1;this.stateSelection=null;this.destroyedInAction=!1;this.instances=[];this.prevState=null;this.currentState=null;this.reversibleToState=null;this.currentTransitionEvent=null;this.previousAction=null;this._singleBBox=new Es;this._recursiveBBox=new Es;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this._needApplyPathSnapping=!0;this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(r){let o=this.children[r];if(Oe.is(o))return o}entityChildrenCount(){let r=this.children.length;for(;r--;)if(Oe.is(this.children[r]))return r+1;return 0}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 r=this;for(;r.data.type!=="Instance";){let o=r.parent;if(Oe.is(o))r=o;else return}return r}forInstancesRec(r){this.instances.forEach(o=>{o.disposed||r(o),o.forInstancesRec(r)})}super_Entity(r,o){typeof r=="string"&&(this.uuid=r),this.identity=r,this.data=o,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(r,o,i=!1){if(!(this.data.states.length===0&&!i)){for(let a of this.data.states)Wn.toOps(this.data,a.data).forEach(l=>{let d=$l.replaceProps(l,this.data);this.dataPatched=this.data,this.updateByPatchedOp(d,this.data,o)});if(r!==null){let a=this.data.states.data(r);a&&(this.dataPatched=Wn.patch(this.data,a),Wn.toOps(this.data,a).forEach(l=>{this.updateByPatchedOp(l,this.dataPatched,o)}))}i&&this.updateTransformState(this.dataPatched,o),this.stateSelection=r,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(r,o){r.setScalar(0),o.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(r=>{ia(r)&&r.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(r=>{r.resetBBoxNeedsUpdateSelf()})}find(r){let o;return this.traverseEntity(i=>{i.uuid===r&&(o=i)}),o}traverseSortNextHelper(){let r=this.parent;if(r){let o=r.children,i=o.indexOf(this)+1;if(Oe.is(o[i]))return o[i];if(Oe.is(r))return r.traverseSortNextHelper()}}sortNext(){let r=this.children;return this.children.length>0&&Oe.is(this.children[0])?r[0]:this.traverseSortNextHelper()}goUp(r){let o=this;for(;r>0&&o!==null;)o=o.parent,r-=1;return o}hasAnccestorOrSelf(r){return this===r||this.hasAnccestor(r)}hasAnccestor(r){let o=this.parent;for(;o;){if(r===o)return!0;o=o.parent}return!1}countToAccestor(r){let o=0,i=this;for(;i!==r;){if(i===null)return-1;i=i.parent,o+=1}return o}forEachEntity(r){for(let o of this.children)ia(o)&&r(o)}traverseEntityAncestors(r){this.traverseAncestors(o=>{Oe.is(o)&&r(o)})}traverseConcreteEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)ia(a)&&a.isConcreteEntity&&a.traverseEntity(r,o+1)}traverseEntity(r,o=0){if(r(this,o)!==!0)for(let a of this.children)ia(a)&&a.traverseEntity(r,o+1)}traverseVisibleEntity(r){r(this);for(let o of this.children)ia(o)&&o.visible&&o.traverseVisibleEntity(r)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(r){super.updateMatrixWorld(r),this.dispatchEvent({type:"updateMatrixWorld"})}copy(r,o=!1){return super.copy(r,o),this.dataPatched=r.dataPatched,this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),this}hasEntityChild(){return this.children.some(r=>ia(r))}isAncestorOf(r){if(this.uuid===r)return!1;let o=!1;return this.traverseEntity(i=>{i.uuid===r&&(o=!0)}),o}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x*Xt.MathUtils.RAD2DEG,this.rotation.y*Xt.MathUtils.RAD2DEG,this.rotation.z*Xt.MathUtils.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Vi(o,r)}getTransformValues(r,o,i){return o[r].map((a,s)=>i?.shared.getVariable(a,[this.uuid,r,aC[s]])??a)}updateTransformState(r,o){let i=!1;return r.position&&(this.position.fromArray(this.getTransformValues("position",r,o)),i=!0),r.rotation&&(Td.fromArray(this.getTransformValues("rotation",r,o)).multiplyScalar(Xt.MathUtils.DEG2RAD),this.rotation.setFromVector3(Td),i=!0),r.scale&&(this.scale.fromArray(this.getTransformValues("scale",r,o)),i=!0),r.hiddenMatrix!==void 0&&(i=!0,this.hiddenMatrix.fromArray(r.hiddenMatrix??sn.identity)),i&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(a=>{a.invalidateClonerTransform(this)})),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),i}onVariableUpdate(r=!1){if(r){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(o=>{o.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let r of this.children)Oe.is(r)&&r.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(r=>{Oe.is(r)&&r.disposeRecursively()})}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return Vi(o,r)}updateByObjUpdateOp(r,o){r!==void 0&&this.updateByOp({type:0,props:r,path:[]},{...this.data,...r},o,!1)}updateByOp(r,o,i,a){let s=this.data;this.data=o;let l=r,d=Yt(r.path,["states","*"]);if(d!==null){if(r.type===0){let[c]=d;if(this?.stateSelection===c){let u={...r.props};if(delete u.name,Object.values(r.props).some(p=>p===void 0)){let p=this.data;if(p!==void 0){let f=gt.zoom(p,r.path.slice(2));if(f)for(let h in r.props)r.props[h]===void 0&&h in f&&(u[h]=f[h])}}l={...r,props:u,path:r.path.slice(2)}}}}else if(r.type===0){let c=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(c!==void 0){if(r.props.name!==void 0&&c.name){let{name:p,...f}=c;c=f}if(r.props.material!==void 0&&"material"in c){let{material:p,...f}=c;c=f}let u=gt.removeOverridden(r.path,r.props,c);l={...r,props:u}}}if(this.updateByPatchedOpBase(l,Wn.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),i),Yt(r.path,["overrides"])){let c=[],u=[...r.path];for(c.push(u[1]),u.splice(0,2);u.length>0&&u[0]==="descendants";)c.push(u[1]),u.splice(0,2);if(c[c.length-1]===void 0){if(r.type===0)for(let p of Object.keys(r.props)){c[c.length-1]=p;let f=i.scene.findInstance([this.uuid,...c]);f&&(f.overrideData=r.props[p],f.updateState(io.apply(f.component.data,f.overrideData),i))}}else{let p=i.scene.findInstance([this.uuid,...c]);if(p){let f=gt.zoom(p.component.data,u);if(r={...r,path:u},r.type===0){let h=r.props;if(f)for(let[m,y]of Object.entries(r.props))y===void 0&&(h===r.props&&(h={...r.props}),h[m]=f[m]);r={...r,props:h}}p.overrideData=Xi.resolve(o.overrides,c),p.updateByOp(r,xt.applySimple(p.data,r),i,!1)}}}else if(this.instances.length>0){let c;if(r.path.length===0&&r.type===0){let u;for(let p of po.rootOverrideProps)p in r.props&&(u===void 0&&(u={}),u[p]=r.props[p]);u&&(c={...r,props:u})}else for(let u of po.rootOverrideProps)if(Yt(r.path,[u])){c=r;break}c!==void 0&&this.instances.forEach(u=>{if(u.isInstanceRoot){let p=io.filterOp(u.overrideData,c);p&&u.updateByOp(p,xt.applySimple(u.data,p),i,!0)}}),this.instances.forEach(u=>{if(!u.isInstanceRoot){let p=io.filterOp(u.overrideData,r);if(p){let f;s===u.data&&r===p?f=o:f=xt.applySimple(u.data,p),u.updateByOp(p,f,i,!0)}}})}}updateByPatchedOpBase(r,o,i){if(this.dataPatched=o,r.path.length===0&&r.type===0)r.props.type!==void 0&&!kr.is(r.props.type)&&Ur.changeEntityProptotype(this,o,i);else if(r.path.length===1&&r.path[0]==="geometry"&&r.type===0&&"type"in r.props){Ur.changeEntityProptotype(this,o,i);for(let a of this.children)Oe.is(a)&&a.updateVisible(i.scene)}this.updateByPatchedOp(r,o,i)}updateByPatchedOp(r,o,i){if(r.path.length===0&&r.type===0&&this.updateState(r.props,i),Yt(r.path,["pathSnapping"])!==null&&this.updatePathSnapping(o.pathSnapping),Yt(r.path,["cloner"])!==null){let a=xt.drop(r,1);a.path.length===0&&a.type===0&&a.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(i.scene)}}updatePathSnapping(r=this.dataPatched.pathSnapping){this._updatedPathSnapping=r,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(r){let o=this._updatedPathSnapping?.pathId??this.dataPatched.pathSnapping.pathId,i=this._updatedPathSnapping?.slide??this.dataPatched.pathSnapping.slide??0,a=this._updatedPathSnapping?.offset??this.dataPatched.pathSnapping.offset??0,s=this._updatedPathSnapping?.orientation??this.dataPatched.pathSnapping.orientation;if(o===null)return;let l=r.find(o);if(!l||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let d=l.data;if(d.geometry.path.points.length<=1)return;let c=Mc(d.geometry.path),u=(i+a)%1;i+a===1&&u===0&&(u=1);let p=c.getPointAt(u),f=this.parent?this.parent?.matrixWorld:new Xt.Matrix4;l.updateMatrixWorld();let h=new Xt.Matrix4().multiplyMatrices(f.clone().invert(),l.matrixWorld);p.applyMatrix4(h);let m={position:p.toArray(),rotation:d.rotation};if(s==="tangential"){let y=new Xt.Matrix4().extractRotation(l.matrixWorld),g=c.getTangentAt(u).applyMatrix4(y).add(p),x=new Xt.Matrix4().lookAt(p,g,sC),S=Td.setFromEuler(new Xt.Euler().setFromRotationMatrix(x)).multiplyScalar(Xt.MathUtils.RAD2DEG);m={...m,rotation:S.toArray()}}this.updateTransformState(m),this.traverseEntity(y=>{y._cameraType&&y.dispatchEvent(iC)})}updateVisible(r){if(this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||this.dataPatched.cloner?.hideBase!==!0),!r)return;let o=!1;this.traverseEntity(i=>{if(i.data.type==="Splat")return o=!0,!0}),o&&r.reloadSplats()}updateState_Entity(r,o){r.name!==void 0&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.visible!==void 0&&(this.updateVisible(o?.scene),this.resetBBoxNeedsUpdate()),o&&"cloner"in r&&r.cloner!==void 0&&(this.setFromClonerState(r.cloner,o),this.updateVisible(o.scene)),this.updateTransformState(r,o)}get attachedSurfaceCloners(){return this.children.filter(r=>r instanceof Ur.Cloner&&r.parameters.type==="toObject")}setFromClonerState(r,o){this.disposed||(r===null||r.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Ur.Cloner(this,r),o.scene.addPendingExpandCloner(this)):this.cloner.updateState(r,o.scene))}expandCloner(r){!this.disposed&&this.cloner&&this.cloner.expandClones(r)}invalidateClonerTransform(r){this.cloner&&this.cloner.invalidateTransform(r)}};var gn=require("three");var $e=require("three"),Wy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},n.parameters);e.thetaLength=$e.MathUtils.clamp(e.thetaLength,0,360);let r=e.width/2,o=e.radiusTop??r,i=e.radiusBottom??r;return o===i?(o=r,i=r):o>i?(o=r,i=i*r/o):(o=o*r/i,i=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,radiusTop:d,radiusBottom:c,cornerRadius:u,cornerSegments:p,hollow:f}=n.parameters,h;return l===0?(h=new $e.BufferGeometry,h.setAttribute("position",new $e.Float32BufferAttribute([],3))):u||f?h=new Ds(d,c,r,o,i,a,s,l*Math.PI/180,u,u,p,f):h=new $e.CylinderGeometry(d,c,r,o,i,a,s,l*Math.PI/180),h.scale(1,1,e/t),Object.assign(h,{userData:{...n,type:"CylinderGeometry"}})}};function yn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function qy(n){return new $e.Vector2(n.y,-n.x)}var Ds=class extends $e.BufferGeometry{constructor(t,e,r,o,i,a,s,l,d,c,u,p,f=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,a=a!==void 0?a:!1,s=s!==void 0?s:0,l=l!==void 0?l:Math.PI*2,a&&(d=0,c=0);let h=[],m=[],y=[],g=[],x=0,S=r/2,w=new $e.Vector3,b=new $e.Vector3;f&&t==0&&(t=d),f&&e==0&&(e=c);let _=new $e.Vector2(t,S),A=new $e.Vector2(e,-S),v=null,M=null,O=null,T=null,C=_.clone().sub(A),P=0,I=0,E=0;p>0&&(P=Math.min(t,e)*(1-p),I=t-P,E=e-P);let R=_.clone();R.x-=P;let D=Math.PI-C.angle(),z=C.angle(),B=Math.tan(z/2),V=Math.tan(D/2),j=B+V,H=p?j:V,X=p?j:B;if(d=Math.min(d,(t-I)/H,C.length()/j),c=Math.min(c,(e-E)/X,C.length()/j),d>0){let U=d/B;v=_.clone().sub(new $e.Vector2(U,d)),p&&(O=v.clone(),O.x-=P-j*d),_.sub(C.clone().setLength(U))}if(c>0){let U=c/V;M=A.clone().sub(new $e.Vector2(U,-c)),A.add(C.clone().setLength(U)),p&&(T=M.clone(),T.x-=P-j*c,R.sub(C.clone().setLength(U)))}C=_.clone().sub(A);let $=C.length()<.5,W=[];for(let U=0;U<=o;U++){let G=[],ne=U/o,ee=ne*l+s,Q=new $e.Vector2(Math.sin(ee),Math.cos(ee));T&&M?(Y(G,ne,Q,D,c,T,-1,!0),Y(G,ne,Q,z,c,M,-1,!1)):M?(k(G,Q,M.x,0,-1),Y(G,ne,Q,z,c,M,-1,!1)):a||k(G,Q,e,E,-1);let te=qy(C).normalize();if(yn(te,Q,w),!$)for(let Z=0;Z<=i;Z++){let le=Z/i,ie=C.clone().multiplyScalar(le).add(A);yn(ie,Q,b),m.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ne,.5+b.y/r),G.push(x++)}if(O&&v?(Y(G,ne,Q,D,d,v,1,!1),Y(G,ne,Q,z,d,O,1,!0)):v?(Y(G,ne,Q,D,d,v,1,!1),k(G,Q,v.x,0,1)):a||k(G,Q,t,I,1),p&&!$){let Z=qy(C).multiplyScalar(-1).normalize();yn(Z,Q,w);for(let le=0;le<=i;le++){let ie=le/i,ae=C.clone().multiplyScalar(-ie).add(R);yn(ae,Q,b),m.push(b.x,b.y,b.z),y.push(w.x,w.y,w.z),g.push(ne,.5+b.y/r),G.push(x++)}}p&&!a&&G.push(G[0]),W.push(G)}for(let U=0;U<W.length-1;U++)for(let G=0;G<W[0].length-1;G++){if(a&&p&&G==i)continue;let ne=W[U][G],ee=W[U+1][G],Q=W[U+1][G+1],te=W[U][G+1],Z=m[Q*3+0],le=m[Q*3+2];h.push(ne,ee,te),(Z!=0||le!=0)&&h.push(ee,Q,te)}l<Math.PI*2&&(q(-1,W[0],s),q(1,W[W.length-1],s+l)),this.setIndex(h),this.setAttribute("position",new $e.Float32BufferAttribute(m,3)),this.setAttribute("normal",new $e.Float32BufferAttribute(y,3)),this.setAttribute("uv",new $e.Float32BufferAttribute(g,2));function Y(U,G,ne,ee,Q,te,Z,le){for(let ie=0;ie<u+1;ie++){let ae=ie/u,de=Z<0?ae:1-ae;le&&(de-=1),de*=ee;let ce=new $e.Vector2(Math.sin(de),Math.cos(de)*Z),pe=ce.clone().multiplyScalar(Q).add(te);yn(pe,ne,b),m.push(b.x,b.y,b.z),yn(ce,ne,w),y.push(w.x,w.y,w.z),g.push(G,.5+b.y/r),U.push(x++)}}function k(U,G,ne,ee,Q){let te=new $e.Vector3,Z=new $e.Vector2,le=[ne,ee];Q<0&&le.reverse();for(let ie of le)Z.set(ie,S*Q),yn(Z,G,te),m.push(te.x,te.y,te.z),y.push(0,Q,0),g.push(.5,.5),U.push(x++)}function q(U,G,ne){let ee=new $e.Vector2(Math.sin(ne),Math.cos(ne)),Q=new $e.Vector2(-Math.cos(ne),Math.sin(ne)),te=new $e.Vector3,Z=U<0?(ae,de,ce)=>h.push(ae,de,ce):(ae,de,ce)=>h.push(ae,ce,de),le=new $e.Vector2((t+e+I+E)/4,0);yn(le,ee,te),m.push(te.x,te.y,te.z),y.push(Q.x,0,Q.y),g.push(.5,.5);let ie=x++;for(let ae of G){let de=m.slice(ae*3,ae*3+3);m.push(...de),y.push(Q.x,0,Q.y);let ce=g.slice(ae*2,ae*2+2);g.push(...ce),x++}for(let ae=ie+1;ae<x-1;ae++)Z(ie,ae,ae+1);Z(ie,x-1,ie+1)}}};var $y=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:8,cornerRadiusBottom:8,cornerSegments:8},n.parameters);return e.thetaLength=gn.MathUtils.clamp(e.thetaLength,0,360),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:a,thetaStart:s,thetaLength:l,cornerRadiusTop:d,cornerRadiusBottom:c,cornerSegments:u}=n.parameters,p;return l===0?(p=new gn.BufferGeometry,p.setAttribute("position",new gn.Float32BufferAttribute([],3))):d>0||c>0||l<360?p=new Ds(0,t/2,r,o,i,a,s,l*Math.PI/180,d,c,u,0,!0):p=new gn.ConeGeometry(t/2,r,o,i,a),p.scale(1,1,e/t),Object.assign(p,{userData:{...n,type:"ConeGeometry"}})}};var ur=require("three"),Yy=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius: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:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:a,cornerRadius:s,cornerSegments:l}=n.parameters,d;return s==0?d=new ur.BoxGeometry(t,e,r,o,i,a):d=new Pd(t,e,r,o,i,a,s,l),Object.assign(d,{userData:{...n,type:"CubeGeometry"}})}},Cd=Math.PI/2,Pd=class extends ur.BufferGeometry{constructor(t=1,e=1,r=1,o=1,i=1,a=1,s=0,l=4){super(),this.type="BoxGeometry";let d=this;o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),l=Math.floor(l),s=Math.min(s,t/2,e/2,r/2);let c=[],u=[],p=[],f=[],h=0,m=0;y("z","y","x",-1,-1,r,e,t,a,i,0),y("z","y","x",1,-1,r,e,-t,a,i,1),y("x","z","y",1,1,t,r,e,o,a,2),y("x","z","y",1,-1,t,r,-e,o,a,3),y("x","y","z",1,-1,t,e,r,o,i,4),y("x","y","z",-1,-1,t,e,-r,o,i,5),s>0&&(g("z","y","x",-1,-1,1,r,e,t,a,0),g("z","y","x",1,-1,-1,r,e,t,a,1),g("z","y","x",-1,1,-1,r,e,t,a,1),g("z","y","x",1,1,1,r,e,t,a,0),g("x","y","z",-1,-1,-1,t,e,r,o,0),g("x","y","z",1,-1,1,t,e,r,o,1),g("x","y","z",-1,1,1,t,e,r,o,0),g("x","y","z",1,1,-1,t,e,r,o,1),g("y","x","z",-1,-1,1,e,t,r,i,0),g("y","x","z",1,-1,-1,e,t,r,i,1),g("y","x","z",1,1,1,e,t,r,i,1),g("y","x","z",-1,1,-1,e,t,r,i,0),x(1,1,1),x(-1,1,1),x(1,-1,1),x(-1,-1,1),x(1,1,-1),x(-1,1,-1),x(1,-1,-1),x(-1,-1,-1)),this.setIndex(c),this.setAttribute("position",new ur.Float32BufferAttribute(u,3)),this.setAttribute("normal",new ur.Float32BufferAttribute(p,3)),this.setAttribute("uv",new ur.Float32BufferAttribute(f,2));function y(S,w,b,_,A,v,M,O,T,C,P){let I=(v-2*s)/T,E=(M-2*s)/C,R=v/2-s,D=M/2-s,z=O/2,B=T+1,V=C+1,j=0,H=0,X=new ur.Vector3;for(let $=0;$<V;$++){let W=$*E-D;for(let Y=0;Y<B;Y++){let k=Y*I-R;X[S]=k*_,X[w]=W*A,X[b]=z,u.push(X.x,X.y,X.z),X[S]=0,X[w]=0,X[b]=O>0?1:-1,p.push(X.x,X.y,X.z),f.push(Y/T),f.push(1-$/C),j+=1}}for(let $=0;$<C;$++)for(let W=0;W<T;W++){let Y=h+W+B*$,k=h+W+B*($+1),q=h+(W+1)+B*($+1),U=h+(W+1)+B*$;c.push(Y,k,U),c.push(k,q,U),H+=6}d.addGroup(m,H,P),m+=H,h+=j}function g(S,w,b,_,A,v,M,O,T,C,P){let I=(M-2*s)/C,E=M/2-s,R=O/2-s,D=T/2,z=C+1,B=0,V=0,j=new ur.Vector3,H=new ur.Vector3;for(let X=0;X<l+1;X++){let $=X/l*Cd,W=Math.sin($)*s,Y=(1-Math.cos($))*s,k=Math.sin($),q=Math.cos($);j[w]=(R+W)*A,j[b]=(D-Y)*v,H[S]=0,H[w]=k*Math.sign(j[w]),H[b]=q*Math.sign(j[b]);for(let U=0;U<z;U++){let G=U*I-E;j[S]=G*_,u.push(j.x,j.y,j.z),p.push(H.x,H.y,H.z),f.push(U/C),f.push(0),B+=1}}for(let X=0;X<l;X++)for(let $=0;$<C;$++){let W=h+$+z*X,Y=h+$+z*(X+1),k=h+($+1)+z*(X+1),q=h+($+1)+z*X;c.push(W,Y,q),c.push(Y,k,q),V+=6}d.addGroup(m,V,P),m+=V,h+=B}function x(S,w,b){let _=new ur.Vector3,A=new ur.Vector3(t/2,e/2,r/2);A.subScalar(s);let v=[],M=S*w*b>0?(T,C,P)=>c.push(T,C,P):(T,C,P)=>c.push(T,P,C);for(let T=0;T<=l;T++){let C=[],P=Cd*(1-T/l),I=Math.cos(P),E=Math.sin(P),R=0;for(let D=0;D<=T;D++){let z=Math.cos(R),B=Math.sin(R);_.x=I*z,_.y=E,_.z=I*B;let V=A.clone().addScaledVector(_,s);u.push(S*V.x,w*V.y,b*V.z),p.push(S*_.x,w*_.y,b*_.z),f.push(0,0),C.push(h++),R+=Cd/T}v.push(C)}let O=v.length-1;for(let T=0;T<O;T++){let C=v[T],P=v[T+1],I=C.length-1;M(C[0],P[1],P[0]);for(let E=1;E<=I;E++)M(C[E-1],C[E],P[E]),M(C[E],P[E+1],P[E])}}}};var ft=require("three"),xn=class extends ft.BufferGeometry{constructor(t=[],e=[],r="",o=1,i=.2,a=4){super(),this.type="PolyhedronGeometryRound";let s=[],l=[],d=[];c(),u(),this.setAttribute("position",new ft.Float32BufferAttribute(s,3)),this.setAttribute("normal",new ft.Float32BufferAttribute(d,3)),this.setAttribute("uv",new ft.Float32BufferAttribute(l,2));return;function c(){i=Math.min(1-1e-5,i),i==0&&(a=0);let f={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],h=new ft.Vector3,m=h.clone(),y=new ft.Triangle,g=i*o,x=o-g,S=a+1,w=new ft.Vector3,b=(B,V)=>w.subVectors(B,V).normalize(),_=(B,V)=>Array(B).fill(void 0).map(V),A=_(t.length/3,(B,V)=>new ft.Vector3().fromArray(t,V*3).setLength(o)),v=[],M=1e6;for(let B=0;B<A.length;B++){let V=A[B],j=[],H,X,$,W=1e10,Y=-1;for(;(Y=e.indexOf(B,Y+1))!=-1;){let G=Y-Y%3;H=e[G+(Y+1)%3],X=e[G+(Y+2)%3],$=V.distanceToSquared(A[H]),W=Math.min(W,$),j.push([H,X,$])}W+=1e-6;let k=[],q=0,U=j.length;for(let G=0;G<U;G++){[H,X,$]=j[q];let ne=v[H]?.includes(B)==!0;$<=W&&k.push(H+ +ne*M),q=j.findIndex(ee=>ee[0]==X)}v.push(k)}let O=[];{let B=0,V=0,j,H,X=f==3;for(let $=0;$<=a;$++){j=$*($+1)/2,H=($+1)*($+2)/2;for(let W=0;W<a-$;W++)[B,V]=[j+W+$+2,H+W+$+3],O.push(j,H,...X?[V,j]:[B,H],V,B),[j,H]=[B,V];O.push(j,H,j+a+2)}}let T=h.clone(),C=h.clone(),P=h.clone(),I=h.clone(),E=h.clone(),R=[],D=_(A.length,()=>_(f,()=>h.clone()));for(let B=0;B<A.length;B++){h.copy(A[B]).normalize(),T.copy(h).multiplyScalar(x);let V=v[B];for(let k=0;k<V.length;k++){let q=V[k],U=V[(k+1)%f];y.setFromPointsAndIndices(A,B,q%M,U%M),y.b.sub(y.a).setLength(1e10).add(y.a),y.c.sub(y.a).setLength(1e10).add(y.a),y.closestPointToPoint(T,D[B][k])}let j=[],H=[],X=[],$=new ft.Vector3;a==0&&[...D[B]].reduce((k,q)=>k.add(q),$).multiplyScalar(1/f);for(let k=0;k<f;k++){let q=[],U=(k-1+f)%f,G=D[B][U],ne=D[B][k];h.copy(G).sub(T),m.copy(ne).sub(T);let ee=T.angleTo(h),Q=h.angleTo(m),te=Math.cos(ee)*g;a==0?C.copy($):C.copy(T).setLength(x+te),H.push(te);let Z=[C,G,ne];for(let le=0;le<2;le++){let ie=Z[le],ae=Z[le+1];I.subVectors(ie,T),E.subVectors(ae,T),P.crossVectors(I,E).normalize();for(let de=0;de<S;de++){let ce=[ee,Q][le]*de/S;h.copy(I).applyAxisAngle(P,ce).add(T),j.push(h.clone()),le&&(b(h,T),q.push([de==0?ie:h.clone(),w.clone()]))}le&&(b(ae,T),q.push([ae,w.clone()]))}X.push(q)}R.push(X);let W=2*S,Y=2;for(let k=0;k<f;k++){let q=W*k,U=W*((k+1)%f),G=[j[q]];for(let ee=1;ee<S;ee++){I=j[q+ee],E=j[U+ee],G.push(I);for(let Q=1,te=ee-Y+1;Q<=te;Q++)h.lerpVectors(I,E,Q/(te+1)),h.sub(T).setLength(H[k]).add(T),G.push(h.clone());G.push(E)}for(let ee=0;ee<S;ee++)G.push(j[ee+S+q]);G.push(j[U+S]);let ne=O.map(ee=>G[ee]);s.push(...ne.map(ee=>[ee.x,ee.y,ee.z]).flat()),d.push(...ne.map(ee=>(b(ee,T),[w.x,w.y,w.z])).flat())}}let z=[];for(let B=0;B<v.length;B++)for(let V=0;V<f;V++){let j=v[B][V];if(j<M){let H=v[j].findIndex(W=>W%M==B),X=R[B][V],$=R[j][H];for(let W=0;W<S;W++){let Y=X[W],k=$[S-W],q=X[W+1],U=$[S-(W+1)];[Y,k,q,q,k,U].forEach(G=>{s.push(G[0].x,G[0].y,G[0].z),d.push(G[1].x,G[1].y,G[1].z)})}z.push(X[0][0],$[S][0],X[S][0],$[0][0])}}for(;z.length;){let B,V,j,H;[B,V]=z.splice(0,2);let X=[B];for(;B!=V;)X.push(V),j=z.indexOf(V),H=j%2,V=z.splice(j-H,2)[1-H];w.subVectors(X[0],X[1]).cross(h.subVectors(X[0],X[2])).normalize();let $=w.dot(X[0])<0;$&&w.negate();for(let W=1;W<=X.length-2;W++)[X[W+ +$],X[W+1-+$],X[0]].forEach(Y=>{s.push(Y.x,Y.y,Y.z),d.push(w.x,w.y,w.z)})}}function u(){let p=new ft.Vector3;for(let A=0;A<s.length;A+=3){p.x=s[A+0],p.y=s[A+1],p.z=s[A+2];let v=b(p)/2/Math.PI+.5,M=_(p)/Math.PI+.5;l.push(v,1-M)}let f=new ft.Vector3,h=new ft.Vector3,m=new ft.Vector3,y=new ft.Vector3,g=new ft.Vector2,x=new ft.Vector2,S=new ft.Vector2,w=(A,v,M,O)=>{O<0&&A.x===1&&(l[v]=A.x-1),M.x===0&&M.z===0&&(l[v]=O/2/Math.PI+.5)};for(let A=0,v=0;A<s.length;A+=9,v+=6){f.set(s[A+0],s[A+1],s[A+2]),h.set(s[A+3],s[A+4],s[A+5]),m.set(s[A+6],s[A+7],s[A+8]),g.set(l[v+0],l[v+1]),x.set(l[v+2],l[v+3]),S.set(l[v+4],l[v+5]),y.copy(f).add(h).add(m).divideScalar(3);let M=b(y);w(g,v+0,f,M),w(x,v+2,h,M),w(S,v+4,m,M)}for(let A=0;A<l.length;A+=6){let v=l[A+0],M=l[A+2],O=l[A+4],T=Math.max(v,M,O),C=Math.min(v,M,O);T>.9&&C<.1&&(v<.2&&(l[A+0]+=1),M<.2&&(l[A+2]+=1),O<.2&&(l[A+4]+=1))}function b(A){return Math.atan2(A.z,-A.x)}function _(A){return Math.atan2(-A.y,Math.sqrt(A.x*A.x+A.z*A.z))}}}static fromJSON(t){return new xn(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var Xy=require("three"),Ky=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Ls(t*.5,i,a):new Xy.DodecahedronGeometry(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"DodecahedronGeometry"}})}},Ls=class extends xn{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,a=[-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],s=[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],l="DodecahedronGeometry";super(a,s,l,t,e,r),this.type=l}static fromJSON(t){return new Ls(t.radius,t.corner,t.cornerSides)}};var Ve=require("three");var _e=require("three"),Bs=1e-12,sa=class{constructor(t){this.position=new _e.Vector2;this.startPosition=new _e.Vector2;this.uuid=_e.MathUtils.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new sa(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},la=class extends sa{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new la(this.parent).copy(this)}},Hr=class extends sa{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new la(this),new la(this))}static create(e,r){let o=new Hr(e,new _e.Vector2(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let a=this.controls[o];this.position.distanceTo(a.position)<=r?a.position.copy(this.position):a.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 Hr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new _e.Vector2,r=new _e.Vector2){let[o,i]=this.computeTangents();return o&&i&&(Qy(o,e),Qy(i,r)),[e,r]}computeTangent(e=new _e.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new _e.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Qy(n,t=new _e.Vector2){let e=n.length();return t.set(-n.y/e,n.x/e)}var Md=n=>n,ca=new _e.Vector2,Ic=new _e.Vector2,lC=new _e.Vector2,cC=new _e.Vector2,uC=new _e.Vector2,dC=new _e.Vector2,Jy=new _e.Vector3,eg=new _e.Vector3;function tg(n){let t=new _e.Vector2;t.addVectors(n.v0,ca.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new _e.Vector2;return e.addVectors(n.v2,Ic.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new _e.CubicBezierCurve(n.v0,t,e,n.v2)}function Rs(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function pC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function fC(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function Id(n,t,e){let r=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),i=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2));return Math.acos((o*o+r*r-i*i)/(2*o*r))}function rg(n,t,e){return Zy(n,t)&&Zy(t,e)&&Od(n.position,t.position,e.position)}function Od(n,t,e){return ca.copy(t).sub(n).cross(Ic.copy(e).sub(n))===0}function og(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),a=(n.y+t.y)/2,s=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,d=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(s+l,a+d),o.set(s-l,a-d),[r,o]}function ng(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function ig(n,t,e,r,o,i){let a=t.x-n.x,s=t.y-n.y,l=e.x-n.x,d=e.y-n.y,c=Math.sqrt((a+l)*(a+l)+(s+d)*(s+d)),u;return Id(t,n,e)>Math.PI&&(c*=-1),Rs(d,s)?u=(s+d)*(r/c-.5)*8/3/(a-l):u=(a+l)*(r/c-.5)*8/3/(d-s),o.set(t.x-u*s,t.y+u*a),i.set(e.x+u*d,e.y-u*l),[o,i]}function Nd(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Zy(n,t){return Od(n.position,n.controls[1].position,t.position)&&Od(n.position,t.controls[0].position,t.position)}function ag(n,t,e,r,o=.5){let i=ca.subVectors(t,n).multiplyScalar(o).add(n),a=Ic.subVectors(e,t).multiplyScalar(o).add(t),s=lC.subVectors(r,e).multiplyScalar(o).add(e),l=i,d=cC.subVectors(a,i).multiplyScalar(o).add(i),c=uC.subVectors(s,a).multiplyScalar(o).add(a),u=s,p=dC.subVectors(c,d).multiplyScalar(o).add(d);return[n.x,n.y,l.x,l.y,d.x,d.y,p.x,p.y,c.x,c.y,u.x,u.y,r.x,r.y]}function sg(n,t,e=12,r=!0){let o=eg.set(0,0,0),i,a=0,s=[];for(let l=0;l<t.length;l++){let d=Md(t[l]),c=ca,u=vn(d,e);s.push(u);for(let p=0;p<=u;p++)if(d instanceof _e.CubicBezierCurve||d instanceof _e.QuadraticBezierCurve||d instanceof _e.LineCurve){if(d.getPoint(p/u,c),o.set(c.x,c.y,0),i!==void 0&&fC(i,o))continue;i===void 0&&(i=Jy),i.copy(o),n.setXYZ(a,o.x,o.y,o.z),a++}}return r&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),n}function lg(n,t,e,r=12,o=!0){let i=eg.set(0,0,0),a=0,s=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let d,c=Md(t[l]),u=ca,p=vn(c,r);s.push(p);for(let f=0;f<=p;f++)if(c instanceof _e.CubicBezierCurve||c instanceof _e.QuadraticBezierCurve||c instanceof _e.LineCurve){if(c.getPoint(f/p,u),i.set(u.x,u.y,0),d?.equals(i))continue;d===void 0?d=Jy:(n.setXYZ(a,d.x,d.y,d.z),a++,n.setXYZ(a,i.x,i.y,i.z),a++),d.copy(i)}}return o&&a>1&&!(n.getX(a-1)===n.getX(0)&&n.getY(a-1)===n.getY(0)&&n.getZ(a-1)===n.getZ(0))&&(n.setXYZ(a,n.getX(0),n.getY(0),n.getZ(0)),a++),s}function Ed(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let a=n[o],s=0;if(e&&a.roundedCurveCorner!==void 0){let l=vn(a.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),s+=l}a.curveAfter!==void 0&&(s+=vn(a.curveAfter,t)),r.push(s)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=vn(n[0].roundedCurveCorner,t)*.5),r}function vn(n,t=12){return n&&n instanceof _e.EllipseCurve?t*2:n&&(n instanceof _e.LineCurve||n instanceof _e.LineCurve3)?1:n&&n instanceof _e.SplineCurve?t*n.points.length:t}function cg(n,t,e=12,r=!0){let o,i=0;for(let a=0;a<t.length;a++){let s=Md(t[a]),l=vn(s,e),d=ca;for(let c=0;c<=l;c++)if(s instanceof _e.CubicBezierCurve||s instanceof _e.QuadraticBezierCurve||s instanceof _e.LineCurve){if(s.getPoint(c/l,d),o!==void 0&&pC(o,d,Bs))continue;o===void 0&&(o=Ic),o.copy(d),n.push(d.x,d.y),i++}}return Rs(n[0],n[n.length-2],Bs)&&Rs(n[1],n[n.length-1],Bs)&&(n.pop(),n.pop()),r&&i>1&&!(Rs(n[i-1],n[1],Bs)&&Rs(n[i-2],n[0],Bs))&&(n.push(n[0],n[1]),i++),n}var Dd=new Ve.Vector2,hC=new Ve.Vector2,mC=new Ve.Vector2,yC=new Ve.Vector2,gC=new Ve.Vector2,xC=new Ve.Vector2,Re=class extends Ve.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.plane=new Ve.Plane(new Ve.Vector3(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this.isText=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=Ve.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Re;return i.isClosed=e.isClosed,i.points=e.points.map(a=>Hr.create(a.id,a.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(a=>Re.createFromState(a)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(i=>i.uuid===e);if(o<0){let i=r;for(let a=0,s=this.shapeHoles.length;a<s;a++){let l=this.shapeHoles[a],d=l.points.length,c=l.getPointIndexById(e);if(c<0)i+=d;else return c+i}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0){let r=this.points.length;for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=e-r;if(s<=a.points.length-1)return a.points[s];r+=a.points.length}}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let a=this.shapeHoles[o],s=a.points.indexOf(e);if(s>=0)return r+s;r+=a.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=Dd.set(e,r);for(let i=0,a=this.points.length;i<a;i++){let s=this.points[i];s.position.multiply(o),s.controls[0].position.multiply(o),s.controls[1].position.multiply(o)}for(let i=0,a=this.shapeHoles.length;i<a;i++)this.shapeHoles[i].applyScale(e,r);this._update()}createPoint(e,r=0,o=Ve.MathUtils.generateUUID()){let i;e instanceof Ve.Vector2?i=e:i=new Ve.Vector2(e,r);let a=new Hr(o,i);return a.roundness=this.roundness,a}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}for(let r=0,o=this.shapeHoles.length;r<o;r++){let a=this.shapeHoles[r].getPointByUuid(e);if(a)return a}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(){for(let e=0,r=this.shapeHoles.length;e<r;e++)this.shapeHoles[e].update();this._update()}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return sg(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((a,s)=>a+s,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Ed(this.points,e,!1),this.roundedCurveDivisions=Ed(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return lg(e,this.curves,r,o,this.autoClose).reduce((a,s)=>a+s,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),cg(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,a=0;r&&this.points[0].roundedCurveCorner!==void 0&&(a=vn(this.points[0].roundedCurveCorner,this.subdivision)*.5);let s=e-a;s<0&&(s+=i.reduce((l,d)=>l+d,0));for(let l=0,d=i.length;l<d;l++){let c=i[l];if(s<o+c)return[l,(s-o+1)/c];o+=c}return[0,1]}getCurveT(e,r,o){let i=this.points[e],a=this.points[e>=this.points.length-1?0:e+1],s=this.curveDivisions,l=s[e];if(Nd(i,a)){let u=i.position.distanceTo(a.position);return i.position.distanceTo(Dd.set(o.x,o.y))/u}let d=0;for(let u=0;u<e;u++)d+=s[u];return(r-d)/l}dispose(){}_applyCurveForPoint(e,r){Nd(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(r===0)this.moveTo(i.position.x,i.position.y);else{let a=this.points[r-1];this._applyCurveForPoint(i,a)}}let e=this.getLastPoint();if(e?.curveAfter&&(e.curveAfter=void 0),this.isClosed){let r=this.points[0],o=this.points[this.points.length-1];this._applyCurveForPoint(r,o)}if(this.points.length>2){let r=0;for(let o=0,i=this.points.length;o<i;o++){let a=this.points[o],s=this.points[o-1]??this.points[this.points.length-1],l=this.points[o+1]??this.points[0],d=a.roundness,c=s&&l&&rg(s,a,l);if(!a.controlsMoved()&&d>0&&!c){let u=a.curveBefore,p=a.curveAfter;if(u===void 0||p===void 0)continue;let f=a.roundedCurveBefore,h=a.roundedCurveAfter,m=u.getLength(),y=p.getLength(),g=Math.min(d,m*.499),x=Math.min(d,y*.499),S=Math.min(g,x),w=1-S/m,b=S/y,_=u.getPointAt(w,Dd),A=p.getPointAt(b,hC);this._subSplitCurve(u,f,w,_,void 0),this._subSplitCurve(p,h,b,void 0,A);let v;if(this.useCubicForRoundedCorners){let M=Id(_,a.position,A)/2,O=Math.tan(M)*_.distanceTo(a.position),[T,C]=og(_,A,O,mC,yC),P=ng(T,C,a.position),[I,E]=ig(P,_,A,O,gC,xC);v=new Ve.CubicBezierCurve(_.clone(),I.clone(),E.clone(),A.clone())}else v=new Ve.QuadraticBezierCurve(_.clone(),a.position.clone(),A.clone());a.roundedCurveCorner=v,this.roundedCurves.splice(o+r,0,v),r++}}}}_subSplitCurve(e,r,o,i,a){if(e instanceof Ve.LineCurve)i!==void 0&&r.v2.copy(i),a!==void 0&&r.v1.copy(a);else{let s=e,l=r,d=s.getUtoTmapping(o,0),c=ag(s.v0,s.v1,s.v2,s.v3,d);return i!==void 0&&(l.v0.set(c[0],c[1]),l.v1.set(c[2],c[3]),l.v2.set(c[4],c[5]),l.v3.set(c[6],c[7])),a!==void 0&&(l.v0.set(c[6],c[7]),l.v1.set(c[8],c[9]),l.v2.set(c[10],c[11]),l.v3.set(c[12],c[13])),l}return r}clone(){let e=new Re(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let i=o*7,a=e.points[i+0],s=e.points[i+1],l=e.points[i+2],d=e.points[i+3],c=e.points[i+4],u=e.points[i+5],p=e.points[i+6],f=new Hr(Ve.MathUtils.generateUUID(),new Ve.Vector2(a,s));f.controls[0].position.set(l,d),f.controls[1].position.set(c,u),f.roundness=p,this.points.push(f)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let i=new Re;return i.fromJSON(o),i}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e,r=!1){this.isText=r;let o=(a,s)=>{s instanceof Ve.CubicBezierCurve&&s.v3.equals(a.position)&&a.controls[0].position.copy(s.v2)},i=a=>{let s=[],l,d;for(l=0,d=a.length;l<d;l++)a[l]instanceof Ve.QuadraticBezierCurve&&(a[l]=tg(a[l]));for(l=0,d=a.length;l<d;l++){let p=a[l],f=l>0?a[l-1]:null,h;p instanceof Ve.CubicBezierCurve?(h=this.createPoint(p.v0),h.controls[1].position.copy(p.v1)):p instanceof Ve.LineCurve&&(h=this.createPoint(p.v1)),h!==void 0&&(f!==null&&o(h,f),s.push(h))}let c=a[a.length-1],u=!1;return c instanceof Ve.CubicBezierCurve?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),u=!0):c instanceof Ve.LineCurve&&c.v2.equals(s[0].position)&&(u=!0),this.isClosed=u,s};return this.points=i(e.curves),e instanceof Ve.Shape&&(this.shapeHoles=e.holes.map(a=>{let s=new Re;return s.fromShape(a),s})),this.update(),this}updatePoint(e,r){let o=this.getPointByUuid(e);o&&(r.position!==void 0&&o.position.fromArray(r.position),r.roundness!==void 0&&(o.roundness=r.roundness),r.areControlsDirectionsMirrored!==void 0&&(o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(e,r){let i=this.getPointByUuid(e)?.controls[0];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}updateNextControl(e,r){let i=this.getPointByUuid(e)?.controls[1];i&&(r.position&&i.position.fromArray(r.position),this.needsUpdate=!0)}};var Bd=Math.PI*2;function Ld({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function vC(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),a=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+a*e,y:a-i*e},{x:i,y:a}]}function ug(n,t,e,r){let o=n*r-t*e<0?-1:1,i=Math.min(1,Math.max(-1,n*e+t*r));return o*Math.acos(i)}function bC(n,t,e,r,o,i,a,s,l,d){let c=Math.pow(o,2),u=Math.pow(i,2),p=Math.pow(a,2),f=Math.pow(s,2),h=c*u-c*f-u*p;h<0&&(h=0),h/=c*f+u*p,h=Math.sqrt(h)*(l===d?-1:1);let m=h*o/i*s,y=h*-i/o*a,g=m+(n+e)/2,x=y+(t+r)/2,S=(a-m)/o,w=(s-y)/i,b=(-a-m)/o,_=(-s-y)/i,A=ug(1,0,S,w),v=ug(S,w,b,_);return!d&&v>0&&(v-=Bd),d&&v<0&&(v+=Bd),{centerx:g,centery:x,ang1:A,ang2:v}}function dg({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:a,sweepFlag:s}){let l=[];if(o===0||i===0)return[];let d=(n-e)/2,c=(t-r)/2;if(d===0&&c===0)return[];o=Math.abs(o),i=Math.abs(i);let u=Math.pow(d,2)/Math.pow(o,2)+Math.pow(c,2)/Math.pow(i,2);u>1&&(o*=Math.sqrt(u),i*=Math.sqrt(u));let p=bC(n,t,e,r,o,i,d,c,a,s),{ang1:f,ang2:h}=p,{centerx:m,centery:y}=p,g=Math.abs(h)/(Bd/4);Math.abs(1-g)<1e-7&&(g=1);let x=Math.max(Math.ceil(g),1);h/=x;for(let S=0;S<x;S++)l.push(vC(f,h)),f+=h;return l.map(S=>{let{x:w,y:b}=Ld(S[0],o,i,m,y),{x:_,y:A}=Ld(S[1],o,i,m,y),{x:v,y:M}=Ld(S[2],o,i,m,y);return{x1:w,y1:b,x2:_,y2:A,x:v,y:M}})}var Xn=require("three");var Ee;(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"})(Ee||(Ee={}));var st;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(st||(st={}));function ye(n,t){if(!n)throw t||"Assertion Failed!"}var fe=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ye(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?o<i?e.t-t.t+(t.t-r.t)*(o/(o+i)):e.t-r.t+(r.t-t.t)*(i/(o+i)):0},n.edgeSign=function(t,e,r){ye(n.vertLeq(t,e)&&n.vertLeq(e,r));var o=e.s-t.s,i=r.s-e.s;return o+i>0?(e.t-r.t)*o+(e.t-t.t)*i:0},n.transEval=function(t,e,r){ye(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?o<i?e.s-t.s+(t.s-r.s)*(o/(o+i)):e.s-r.s+(r.s-t.s)*(i/(o+i)):0},n.transSign=function(t,e,r){ye(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var a,s,l;n.vertLeq(t,e)||(l=t,t=e,e=l),n.vertLeq(r,o)||(l=r,r=o,o=l),n.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.vertLeq(r,e)?n.vertLeq(e,o)?(a=n.edgeEval(t,r,e),s=n.edgeEval(r,e,o),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,e.s)):(a=n.edgeSign(t,r,e),s=-n.edgeSign(t,o,e),a+s<0&&(a=-a,s=-s),i.s=n.interpolate(a,r.s,s,o.s)):i.s=(r.s+e.s)/2,n.transLeq(t,e)||(l=t,t=e,e=l),n.transLeq(r,o)||(l=r,r=o,o=l),n.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),n.transLeq(r,e)?n.transLeq(e,o)?(a=n.transEval(t,r,e),s=n.transEval(r,e,o),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,e.t)):(a=n.transSign(t,r,e),s=-n.transSign(t,o,e),a+s<0&&(a=-a,s=-s),i.t=n.interpolate(a,r.t,s,o.t)):i.t=(r.t+e.t)/2},n}(),Vs=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}(),Nc=function(){function n(t){this.side=t,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(n.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),n}(),ua=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}(),pg=function(){function n(){var t=new ua,e=new Vs,r=new Nc(0),o=new Nc(1);t.next=t.prev=t,t.anEdge=null,e.next=e.prev=e,r.next=r,r.Sym=o,o.next=o,o.Sym=r,this.vHead=t,this.fHead=e,this.eHead=r,this.eHeadSym=o}return n.prototype.makeEdge_=function(t){var e=new Nc(0),r=new Nc(1);t.Sym.side<t.side&&(t=t.Sym);var o=t.Sym.next;return r.next=o,o.Sym.next=e,e.next=t,t.Sym.next=r,e.Sym=r,e.Onext=e,e.Lnext=r,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,r.Sym=e,r.Onext=r,r.Lnext=e,r.Org=null,r.Lface=null,r.winding=0,r.activeRegion=null,e},n.prototype.splice_=function(t,e){var r=t.Onext,o=e.Onext;r.Sym.Lnext=e,o.Sym.Lnext=t,t.Onext=o,e.Onext=r},n.prototype.makeVertex_=function(t,e,r){var o=t;ye(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var a=e;do a.Org=o,a=a.Onext;while(a!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ye(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var a=e;do a.Lface=o,a=a.Lnext;while(a!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,a=t.next;a.prev=i,i.next=a},n.prototype.makeEdge=function(){var t=new ua,e=new ua,r=new Vs,o=this.makeEdge_(this.eHead);return this.makeVertex_(t,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(r,o,this.fHead),o},n.prototype.splice=function(t,e){var r=!1,o=!1;if(t!==e){if(e.Org!==t.Org&&(o=!0,this.killVertex_(e.Org,t.Org)),e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(e,t),!o){var i=new ua;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var a=new Vs;this.makeFace_(a,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new Vs;this.makeFace_(o,t,t.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(t.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(t)},n.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new ua;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var a=new Vs;this.makeFace_(a,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,a,s;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);a=t.prev,s=t.next,s.prev=a,a.next=s},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,a,s,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,a=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(s=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),s+l-2<=t&&fe.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&fe.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===a);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,a,s,l,d;for(i=t,i=t;(o=i.next)!==t;i=o){ye(o.prev===i),l=o.anEdge;do ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l),ye(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(ye(o.prev===i&&o.anEdge===null),s=e,s=e;(a=s.next)!==e;s=a){ye(a.prev===s),l=a.anEdge;do ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l),ye(l.Org===a),l=l.Onext;while(l!==a.anEdge)}for(ye(a.prev===s&&a.anEdge===null),d=r,d=r;(l=d.next)!==r;d=l)ye(l.Sym.next===d.Sym),ye(l.Sym!==l),ye(l.Sym.Sym===l),ye(l.Org!==null),ye(l.Dst!==null),ye(l.Lnext.Onext.Sym===l),ye(l.Onext.Sym.Lnext===l);ye(l.Sym.next===d.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),fg=function(){function n(){this.handle=null}return n}(),hg=function(){function n(){this.key=null,this.node=0}return n}(),SC=function(){function n(t,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=t,this.nodes=[],this.handles=[];for(var r=0;r<t+1;r++)this.nodes[r]=new fg,this.handles[r]=new hg;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t<<1,a<this.size&&this.leq(r[e[a+1].handle].key,r[e[a].handle].key)&&++a,ye(a<=this.max),i=e[a].handle,a>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,a;for(o=e[t].handle;;){if(a=t>>1,i=e[a].handle,a===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=a}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new fg;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new hg}return this.freeList===0?r=e:(r=this.freeList,this.freeList=this.handles[r].node),this.nodes[e].handle=r,this.handles[r].node=e,this.handles[r].key=t,this.initialized&&this.floatUp_(e),r},n.prototype.extractMin=function(){var t=this.nodes,e=this.handles,r=t[1].handle,o=e[r].key;return this.size>0&&(t[1].handle=t[this.size].handle,e[t[1].handle].node=1,e[r].key=null,e[r].node=this.freeList,this.freeList=r,--this.size,this.size>0&&this.floatDown_(1)),o},n.prototype.delete=function(t){var e=this.nodes,r=this.handles,o;ye(t>=1&&t<=this.max&&r[t].key!==null),o=r[t].node,e[o].handle=e[this.size].handle,r[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(r[e[o>>1].handle].key,r[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),r[t].key=null,r[t].node=this.freeList,this.freeList=t},n}(),Rd=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}(),mg=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),wC=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new mg,this.head.next=this.head,this.head.prev=this.head}return n.prototype.min=function(){return this.head.next},n.prototype.max=function(){return this.head.prev},n.prototype.insert=function(t){return this.insertBefore(this.head,t)},n.prototype.search=function(t){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,t,e.key));return e},n.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new mg;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},n.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},n}(),_C=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,a=r.eUp;if(i.Dst===o)return a.Dst===o?fe.vertLeq(i.Org,a.Org)?fe.edgeSign(a.Dst,i.Org,a.Org)<=0:fe.edgeSign(i.Dst,a.Org,i.Org)>=0:fe.edgeSign(a.Dst,o,a.Org)<=0;if(a.Dst===o)return fe.edgeSign(i.Dst,o,i.Org)>=0;var s=fe.edgeEval(i.Dst,o,i.Org),l=fe.edgeEval(a.Dst,o,a.Org);return s>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&ye(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ye(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},n.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=n.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(n.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;n.fixUpperEdge(t,e,o),e=n.regionAbove(e)}return e},n.topRightRegion=function(t){var e=t.eUp.Dst;do t=n.regionAbove(t);while(t.eUp.Dst===e);return t},n.addRegionBelow=function(t,e,r){var o=new Rd;return o.eUp=r,o.nodeUp=t.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,r.activeRegion=o,o},n.isWindingInside=function(t,e){switch(t.windingRule){case Ee.ODD:return(e&1)!==0;case Ee.NONZERO:return e!==0;case Ee.POSITIVE:return e>0;case Ee.NEGATIVE:return e<0;case Ee.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,a=e,s=e.eUp;a!==r;){if(a.fixUpperEdge=!1,i=n.regionBelow(a),o=i.eUp,o.Org!=s.Org){if(!i.fixUpperEdge){n.finishRegion(t,a);break}o=t.mesh.connect(s.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}s.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(s,o)),n.finishRegion(t,a),s=i.eUp,a=i}return s},n.addRightEdges=function(t,e,r,o,i,a){var s,l,d,c,u=!0;d=r;do ye(fe.vertLeq(d.Org,d.Dst)),n.addRegionBelow(t,e,d.Sym),d=d.Onext;while(d!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,c=i;s=n.regionBelow(l),d=s.eUp.Sym,d.Org===c.Org;)d.Onext!==c&&(t.mesh.splice(d.Oprev,d),t.mesh.splice(c.Oprev,d)),s.windingNumber=l.windingNumber-d.winding,s.inside=n.isWindingInside(t,s.windingNumber),l.dirty=!0,!u&&n.checkForRightSplice(t,l)&&(n.addWinding(d,c),n.deleteRegion(t,l),t.mesh.delete(c)),u=!1,l=s,c=d;l.dirty=!0,ye(l.windingNumber-d.winding===s.windingNumber),a&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=fe.vertL1dist(e,t),i=fe.vertL1dist(r,t),a=.5*i/(o+i),s=.5*o/(o+i);t.coords[0]+=a*e.coords[0]+s*r.coords[0],t.coords[1]+=a*e.coords[1]+s*r.coords[1],t.coords[2]+=a*e.coords[2]+s*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,a){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,a)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(fe.vertLeq(o.Org,i.Org)){if(fe.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;fe.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(fe.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a;if(ye(!fe.vertEq(o.Dst,i.Dst)),fe.vertLeq(o.Dst,i.Dst)){if(fe.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,a=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,a),a.Lface.inside=e.inside}else{if(fe.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,a=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),a.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,a=o.Org,s=i.Org,l=o.Dst,d=i.Dst,c,u,p=new ua,f,h;if(ye(!fe.vertEq(d,l)),ye(fe.edgeSign(l,t.event,a)<=0),ye(fe.edgeSign(d,t.event,s)>=0),ye(a!==t.event&&s!==t.event),ye(!e.fixUpperEdge&&!r.fixUpperEdge),a===s||(c=Math.min(a.t,l.t),u=Math.max(s.t,d.t),c>u))return!1;if(fe.vertLeq(a,s)){if(fe.edgeSign(d,a,s)>0)return!1}else if(fe.edgeSign(l,s,a)<0)return!1;return n.debugEvent(t),fe.intersect(l,a,d,s,p),ye(Math.min(a.t,l.t)<=p.t),ye(p.t<=Math.max(s.t,d.t)),ye(Math.min(d.s,l.s)<=p.s),ye(p.s<=Math.max(s.s,a.s)),fe.vertLeq(p,t.event)&&(p.s=t.event.s,p.t=t.event.t),f=fe.vertLeq(a,s)?a:s,fe.vertLeq(f,p)&&(p.s=f.s,p.t=f.t),fe.vertEq(p,a)||fe.vertEq(p,s)?(n.checkForRightSplice(t,e),!1):!fe.vertEq(l,t.event)&&fe.edgeSign(l,t.event,p)>=0||!fe.vertEq(d,t.event)&&fe.edgeSign(d,t.event,p)<=0?d===t.event?(t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Sym,o),e=n.topLeftRegion(t,e),o=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),r),n.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(i.Sym),t.mesh.splice(o.Lnext,i.Oprev),r=e,e=n.topRightRegion(e),h=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,h,!0),!0):(fe.edgeSign(l,t.event,p)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),fe.edgeSign(d,t.event,p)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,a,l,s,d),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,a=n.regionBelow(e),s=e.eUp,l=a.eUp,d=!1;if(s.Dst!==l.Dst&&n.checkForIntersect(t,e),fe.vertEq(s.Org,t.event)&&(t.mesh.splice(i.Oprev,s),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),a),d=!0),fe.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,a,null),d=!0),d){n.addRightEdges(t,e,r.Onext,i,i,!0);return}fe.vertLeq(l.Org,s.Org)?o=l.Oprev:o=s,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,a,s,l;if(o=e.eUp,fe.vertEq(o.Org,r)){ye(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!fe.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}ye(!1),e=n.topRightRegion(e),l=n.regionBelow(e),a=l.eUp.Sym,i=s=a.Onext,l.fixUpperEdge&&(ye(i!==a),n.deleteRegion(t,l),t.mesh.delete(a),a=i.Oprev),t.mesh.splice(r.anEdge,a),fe.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,a.Onext,s,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,a,s,l,d=new Rd;if(d.eUp=e.anEdge.Sym,r=t.dict.search(d).key,o=n.regionBelow(r),!!o){if(a=r.eUp,s=o.eUp,fe.edgeSign(a.Dst,e,a.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=fe.vertLeq(s.Dst,a.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,a.Lnext);else{var c=t.mesh.connect(s.Dnext,e.anEdge);l=c.Sym}i.fixUpperEdge?n.fixUpperEdge(t,i,l):n.computeWinding(t,n.addRegionBelow(t,r,l)),n.sweepEvent(t,e)}else n.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},n.sweepEvent=function(t,e){t.event=e,n.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){n.connectLeftVertex(t,e);return}var o=n.topLeftRegion(t,r.activeRegion);ye(o!==null);var i=n.regionBelow(o),a=i.eUp,s=n.finishLeftRegions(t,i,null);s.Onext===a?n.connectRightVertex(t,o,s):n.addRightEdges(t,o,s.Onext,a,a,!0)},n.addSentinel=function(t,e,r,o){var i=new Rd,a=t.mesh.makeEdge();a.Org.s=r,a.Org.t=o,a.Dst.s=e,a.Dst.t=o,t.event=a.Dst,i.eUp=a,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new wC(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,a=t.bmin[1]-r,s=t.bmax[1]+r;n.addSentinel(t,o,i,a),n.addSentinel(t,o,i,s)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ye(e.fixUpperEdge),ye(++r===1)),ye(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,fe.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new SC(i,fe.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ye(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!fe.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),AC=function(){function n(){this.mesh=new pg,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=Ee.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,a,s,l=[0,0,0],d=[0,0,0],c=[0,0,0],u=[0,0,0],p=[0,0,0],f=[null,null,null],h=[null,null,null],m=this.mesh.vHead;e=m.next;for(var y=0;y<3;++y)i=e.coords[y],d[y]=i,h[y]=e,l[y]=i,f[y]=e;for(e=m.next;e!==m;e=e.next)for(var g=0;g<3;++g)i=e.coords[g],i<d[g]&&(d[g]=i,h[g]=e),i>l[g]&&(l[g]=i,f[g]=e);var x=0;if(l[1]-d[1]>l[0]-d[0]&&(x=1),l[2]-d[2]>l[x]-d[x]&&(x=2),d[x]>=l[x]){t[0]=0,t[1]=0,t[2]=1;return}for(s=0,r=h[x],o=f[x],c[0]=r.coords[0]-o.coords[0],c[1]=r.coords[1]-o.coords[1],c[2]=r.coords[2]-o.coords[2],e=m.next;e!==m;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]=c[1]*u[2]-c[2]*u[1],p[1]=c[2]*u[0]-c[0]*u[2],p[2]=c[0]*u[1]-c[1]*u[0],a=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],a>s&&(s=a,t[0]=p[0],t[1]=p[1],t[2]=p[2]);s<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(c)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,a=t.next;a!==t;a=a.next)if(o=a.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==a.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var a=this.longAxis_(e);r[a]=0,r[(a+1)%3]=1,r[(a+2)%3]=0,o[a]=0,o[(a+1)%3]=0,o[(a+2)%3]=e[a]>0?1:-1;for(var s=t.next;s!==t;s=s.next)s.s=this.dot_(s.coords,r),s.t=this.dot_(s.coords,o);i&&this.checkOrientation_();for(var l=!0,d=t.next;d!==t;d=d.next)l?(this.bmin[0]=this.bmax[0]=d.s,this.bmin[1]=this.bmax[1]=d.t,l=!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(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;fe.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;fe.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(fe.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(fe.edgeGoesLeft(o.Lnext)||fe.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(fe.edgeGoesRight(r.Lprev)||fe.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,a=0,s=0,l;r>3&&t.mergeConvexFaces(r);for(var d=t.vHead.next;d!==t.vHead;d=d.next)d.n=-1;for(var c=t.fHead.next;c!==t.fHead;c=c.next)if(c.n=-1,!!c.inside){i=c.anEdge,l=0;do{var d=i.Org;d.n===-1&&(d.n=s,s++),l++,i=i.Lnext}while(i!==c.anEdge);if(l>r)throw"Face vertex greater that support polygon";c.n=a,++a}this.elementCount=a,e===st.CONNECTED_POLYGONS&&(a*=2),this.elements=[],this.elements.length=a*r,this.vertexCount=s,this.vertices=[],this.vertices.length=s*o,this.vertexIndices=[],this.vertexIndices.length=s;for(var d=t.vHead.next;d!==t.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,c=t.fHead.next;c!==t.fHead;c=c.next)if(!!c.inside){i=c.anEdge,l=0;do{var d=i.Org;this.elements[p++]=d.n,l++,i=i.Lnext}while(i!==c.anEdge);for(var f=l;f<r;++f)this.elements[p++]=-1;if(e===st.CONNECTED_POLYGONS){i=c.anEdge;do this.elements[p++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==c.anEdge);for(var h=l;h<r;++h)this.elements[p++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,a=0;this.vertexCount=0,this.elementCount=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){o=r=s.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,d=0,c=0;i=0;for(var s=t.fHead.next;s!==t.fHead;s=s.next)if(!!s.inside){a=0,o=r=s.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[d++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,a++,r=r.Lnext;while(r!==o);this.elements[c++]=i,this.elements[c++]=a,i+=a}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new pg),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,a){if(t===void 0&&(t=Ee.ODD),e===void 0&&(e=st.POLYGONS),a===void 0&&(a=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),_C.computeInterior(this,a);var s=this.mesh;return e===st.BOUNDARY_CONTOURS?this.setWindingNumber_(s,1,!0):this.tessellateInterior_(s),a&&s.check(),e===st.BOUNDARY_CONTOURS?this.outputContours_(s,o):this.outputPolymesh_(s,e,r,o),!0},n}();function qr(n){var t=n.windingRule,e=t===void 0?Ee.ODD:t,r=n.elementType,o=r===void 0?st.POLYGONS:r,i=n.polySize,a=i===void 0?3:i,s=n.vertexSize,l=s===void 0?2:s,d=n.normal,c=d===void 0?[0,0,1]:d,u=n.contours,p=u===void 0?[]:u,f=n.strict,h=f===void 0?!0:f,m=n.debug,y=m===void 0?!1:m;if(!p&&h)throw new Error("Contours can't be empty");if(!!p){var g=new AC;n.edgeCreateCallback&&(g.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(g.vertexIdCallback=n.vertexIdCallback);for(var x=0;x<p.length;x++)g.addContour(l||2,p[x]);return g.tesselate(e,o,a,l,c,h),{vertices:g.vertices,vertexIndices:g.vertexIndices,vertexCount:g.vertexCount,elements:g.elements,elementCount:g.elementCount,mesh:y?g.mesh:void 0}}}var nF=Ee.ODD,iF=Ee.NONZERO,aF=Ee.POSITIVE,sF=Ee.NEGATIVE,lF=Ee.ABS_GEQ_TWO,cF=st.POLYGONS,uF=st.CONNECTED_POLYGONS,dF=st.BOUNDARY_CONTOURS;var Wr=require("three");var Ec=class{constructor(t=256,e=!1){this.capacity=t,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${t}`);let r=t*Ec.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,i=0;this.positions=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.normals=new Float32Array(this.buffer,i*o,3*t),i+=3*t,this.uvs=new Float32Array(this.buffer,i*o,2*t)}realloc(t,e=!1){if(t<this.size)throw Error("cannot shrink buffer");if(t<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${t}`);let r=t*Ec.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,a=0,s=new Float32Array(o,a*i,3*t);a+=3*t;let l=new Float32Array(o,a*i,3*t);a+=3*t;let d=new Float32Array(o,a*i,2*t);e?(s.set(this.positions.subarray(0,this.size*3)),l.set(this.normals.subarray(0,this.size*3)),d.set(this.uvs.subarray(0,this.size*2))):(s.set(this.positions),l.set(this.normals),d.set(this.uvs)),this.buffer=o,this.positions=s,this.normals=l,this.uvs=d,this.capacity=t}get(t=1){let e=this.size+t;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let r=this.size;return this.size=e,r}reserve(t){let e=this.size+t;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},Gs=Ec;Gs.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var vg=Qt(xg()),zs={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},Fd={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},jd={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},kd=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),Sn=class extends Wr.BufferGeometry{constructor(e,r,o=0,i=12,a=3,s=Ee.ODD,l=!1){super();this.forPathBevel=l;this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._curveSegments=i,this._bevelSegmentsInput=a;let d=this._shape.extractShapePointsToFlatArray([],i),c=this._shape.shapeHoles.map(T=>{let C=T.extractShapePointsToFlatArray([],i),P=[];for(let I=C.length-1;I>=1;I-=2){let E=C[I-1],R=C[I-0];P.push(E,R)}return P}),u=[],p=[];for(let T=0;T<d.length;T+=2)p.push([d[T],d[T+1]]);u.push(p);for(let T=0;T<c.length;T++){let C=c[T],P=[];for(let I=0;I<C.length;I+=2)P.push([C[I],C[I+1]]);u.push(P)}let f;e.isText?f=new Wr.Box2().setFromPoints(e.points.map(C=>C.position)).getSize(new Wr.Vector2).length()*.1:u[0].length===0?f=o:f=(0,vg.default)(u).distance,o<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(o,f,r/2),this._bevelSegments=Math.floor(a));let h;try{h=qr({windingRule:s,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[d]})}catch{h=zs}let m;try{m=qr({windingRule:Ee.ODD,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...c]})}catch{m=Fd}if(!h)throw new Error("error generating geometry");let y=h.elementCount;if(m){h.elementCount+=m.elementCount;for(let T=0;T<m.elements.length;T++){let C=m.elements[T],P=T%2===0?h.vertexCount:0;h.elements.push(C+P)}for(let T=0;T<m.vertexIndices.length;T++){let C=m.vertexIndices[T],P=h.vertexCount;h.vertexIndices.push(C+P)}for(let T=0;T<m.vertices.length;T++){let C=m.vertices[T];h.vertices.push(C)}}let g=1/0,x=-1/0,S=1/0,w=-1/0;for(let T=0,C=h.vertexCount;T<C;T++){let P=T*2,I=h.vertices[P+0],E=h.vertices[P+1];I<g&&(g=I),I>x&&(x=I),E<S&&(S=E),E>w&&(w=E)}this._minX=g,this._minY=S,this._width=x-g,this._height=w-S,this._buffer=new Gs(this._computeBufferEstimatedSize(h));let b=[],_=[];for(let T=h.elementCount-1;T>=0;T--){let C=T>=y,P=T*2,I=h.elements[P+0],E=h.elements[P+1],R=I+E,D={start:I,count:E,normals:[],continuous:[],concave:[]},z=I,B=R-1,V=I+1,j=this._shape.roundedCurves.length;do{let Y=z-I,k=h.vertices[B*2+0],q=h.vertices[B*2+1],U=h.vertices[z*2+0],G=h.vertices[z*2+1],ne=h.vertices[V*2+0],ee=h.vertices[V*2+1],Q=U-k,te=G-q,Z=Math.sqrt(Q*Q+te*te);Q/=Z,te/=Z;let le=U-ne,ie=G-ee,ae=Math.sqrt(le*le+ie*ie);le/=ae,ie/=ae,D.normals[Y*2+0]=-ie,D.normals[Y*2+1]=le,D.concave[Y]=Q*ie-te*le>0;let de=h.vertexIndices[z];if(Array.isArray(de))D.continuous[Y]=!1;else{let[ce,pe]=this._shape.getCurveIndexFromVertexId(de-1,!0);if(pe>0&&pe<1)D.continuous[Y]=!0;else{let xe=pe===1?ce+1:ce-1;xe=(xe+j)%j;let De=pe===1?0:1,tt=this._shape.roundedCurves[ce].getTangent(pe),Le=this._shape.roundedCurves[xe].getTangent(De);D.continuous[Y]=tt.dot(Le)>.95}}C&&(D.normals[Y*2+0]*=-1,D.normals[Y*2+1]*=-1),[B,z,V]=[z,V,V+1],V>=R&&(V-=E)}while(V!==I+1);let H=[];H.push({bevelI:0,angle:0,size:0,boundary:{vertices:h.vertices.slice(I*2,R*2),vertexCount:E,vertexIndices:new Array(E).fill(!0).map((Y,k)=>[k,k]),elements:[0,E],elementCount:1,mesh:null},reverseMap:[],insetPoints:h.vertices.slice(I*2,R*2)});let X=0;for(let Y=1;Y<=this._bevelSegments;Y++){let k=Y/this._bevelSegments*Math.PI/2,q=(1-Math.cos(k))*this._bevel,U=[],G=[],ne=[],ee=[],Q=0;for(let Z=0;Z<E;Z++){let le=Z*2,ie=(Z-1+E)%E*2,ae=h.vertices[D.start*2+le+0],de=h.vertices[D.start*2+le+1],ce=-D.normals[ie+0]*q,pe=-D.normals[ie+1]*q,xe=-D.normals[le+0]*q,De=-D.normals[le+1]*q;if(D.concave[Z]||!D.concave[Z]&&C){let tt=Math.atan2(pe,ce),Le=Math.atan2(De,xe);Le>tt&&(Le-=Math.PI*2);let We=Le-tt;if(D.continuous[Z]||C){let nr=tt+We/2,Te=Math.cos(nr)*q,At=Math.sin(nr)*q;U[2*Q+0]=ae+Te*(C?-1:1),U[2*Q+1]=de+At*(C?-1:1),ee[Q]=Z,Q++}else{let nr=Math.max(1,Math.floor(i/4*Math.abs(We)/Math.PI));for(let Te=0;Te<=nr;Te++){let At=tt+We*(Te/nr),It=Math.cos(At)*q,mi=Math.sin(At)*q;U[2*Q+0]=ae+It,U[2*Q+1]=de+mi,ee[Q]=Z,Q++}}}else U[2*Q+0]=ae+ce,U[2*Q+1]=de+pe,ee[Q]=Z,G[Z]=Q,Q++,U[2*Q+0]=ae,U[2*Q+1]=de,ee[Q]=Z,Q++,U[2*Q+0]=ae+xe,U[2*Q+1]=de+De,ee[Q]=Z,ne[Z]=Q,Q++}let te=qr({windingRule:Ee.POSITIVE,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[U],edgeCreateCallback:Z=>{let ie=Z.Org.idx,ae=ee[ie],de=ee[(ie+1)%ee.length];Z.idx=[ae,de],Z.Sym.idx=[de,ae]},vertexIdCallback:Z=>{let le=Z.Lprev.idx;return[le?le[1]:0,Z.idx?Z.idx[0]:0]}});if(!te)throw console.log("Error"),new Error(`error generating bevel geometry for ${Y}'th loop`);if(!te.vertexCount){let Z=(Y-1)/this._bevelSegments*Math.PI/2;X=(1-Math.sin(Z))*this._bevel;break}for(let Z=0;Z<te.vertexIndices.length;Z++){let[le,ie]=te.vertexIndices[Z];if(le===ie)continue;let ae=ie;ie<le&&(ae+=E);for(let de=le;de<ae;de++){let ce=de%E,pe=(de+1)%E;if(!D.continuous[ce]||!D.continuous[pe]){te.vertexIndices[Z]=[le,ce],te.vertexIndices.splice(Z+1,0,[pe,ie]),te.vertices.splice((Z+1)*2,0,te.vertices[Z*2],te.vertices[Z*2+1]);break}}}H.push({bevelI:Y,angle:k,size:q,boundary:te,reverseMap:ee,insetPoints:U})}let $=(Y,k,q)=>{let U=0,G=Y.boundary.vertexIndices.length;for(;U<G&&q(Y.boundary.vertexIndices[k]);)k=(k+1)%G,U++;return U},W=b.length;for(let Y=1;Y<H.length;Y++){let k=H[Y-1],q=H[Y],U=k.boundary.vertexIndices.length,G=q.boundary.vertexIndices.length;if(!U||!G)break;let ne=D.concave.length,ee=0,Q=kd(ee,E);for(;!k.boundary.vertexIndices.filter(Q).length||!q.boundary.vertexIndices.filter(Q).length;)ee++,Q=kd(ee,E);let te=k.boundary.vertexIndices.findIndex(Q),Z=q.boundary.vertexIndices.findIndex(Q);do te=(te+1)%U;while(Q(k.boundary.vertexIndices[te]));do Z=(Z+1)%G;while(Q(q.boundary.vertexIndices[Z]));ee=(ee+1)%E;let le=ee,ie=0,ae=this._buildBevelVert(D,k,(te-1+U)%U,void 0,ie),de=this._buildBevelVert(D,q,(Z-1+G)%G,void 0,ie),ce=ae,pe=de,xe,De,tt=!1;do{ie=(ee||ne)/ne,Q=kd(ee,E);let Le=$(k,te,Q),We=$(q,Z,Q),nr=tt;if(tt=!1,Le&&!We){for(let Te=0;Te<Le;Te++)xe=this._buildBevelVert(D,k,(te+Te)%U,Te/(Le-1),ie),b.push(ce.topN,xe.topP,pe.topN),l===!1&&b.push(xe.bottomP,ce.bottomN,pe.bottomN),ce=xe;tt=!0}else if(!Le&&We)for(let Te=0;Te<We;Te++)De=this._buildBevelVert(D,q,(Z+Te)%G,Te/(We-1),ie),b.push(pe.topN,ce.topP,De.topP),l===!1&&b.push(ce.bottomP,pe.bottomN,De.bottomP),pe=De;else if(Le&&We)if(xe=this._buildBevelVert(D,k,te,0,ie),De=this._buildBevelVert(D,q,Z,0,ie),nr?(b.push(ce.topN,De.topP,pe.topN),b.push(ce.topN,xe.topP,De.topP),l===!1&&(b.push(De.bottomP,ce.bottomN,pe.bottomN),b.push(De.bottomP,xe.bottomP,ce.bottomN))):(b.push(pe.topN,ce.topN,xe.topP),b.push(pe.topN,xe.topP,De.topP),l===!1&&(b.push(xe.bottomP,ce.bottomN,pe.bottomN),b.push(xe.bottomP,pe.bottomN,De.bottomP))),ce=xe,pe=De,Le===We)for(let Te=1;Te<Le;Te++)xe=this._buildBevelVert(D,k,(te+Te)%U,Te/(Le-1),ie),De=this._buildBevelVert(D,q,(Z+Te)%G,Te/(We-1),ie),b.push(ce.topN,xe.topP,pe.topN),b.push(pe.topN,xe.topP,De.topP),l===!1&&(b.push(xe.bottomP,ce.bottomN,pe.bottomN),b.push(xe.bottomP,pe.bottomN,De.bottomP)),ce=xe,pe=De;else if(Le>We){let Te=Le/We,At=0;for(let It=1;It<Le;It++)xe=this._buildBevelVert(D,k,(te+It)%U,It/(Le-1),ie),b.push(ce.topN,xe.topP,pe.topN),l===!1&&b.push(xe.bottomP,ce.bottomN,pe.bottomN),ce=xe,It>(At+1)*Te&&(At++,De=this._buildBevelVert(D,q,(Z+At)%G,At/(We-1),ie),b.push(pe.topN,xe.topP,De.topP),l===!1&&b.push(xe.bottomP,pe.bottomN,De.bottomP),pe=De)}else{let Te=We/Le,At=0;for(let It=1;It<We;It++)De=this._buildBevelVert(D,q,(Z+It)%G,It/(We-1),ie),b.push(pe.topN,xe.topP,De.topP),l===!1&&b.push(xe.bottomP,pe.bottomN,De.bottomP),pe=De,It>(At+1)*Te&&(At++,xe=this._buildBevelVert(D,k,(te+At)%U,At/(Le-1),ie),b.push(ce.topN,xe.topP,pe.topN),l===!1&&b.push(xe.bottomP,ce.bottomN,pe.bottomN),ce=xe)}te=(te+Le)%U,Z=(Z+We)%G,ee=(ee+1)%ne}while(ee!==le)}if(l===!1&&this._depth>this._bevel*2&&this._buildWall(H,D,b),C){let Y=[];for(let k=b.length-1;k>=W+2;k-=3){let q=b[k-2],U=b[k-1],G=b[k-0];Y.push(G,U,q)}b.splice(W,b.length-W,...Y)}if(C){let Y=[];for(let k=H[H.length-1].boundary.vertices.length-1;k>=1;k-=2){let q=H[H.length-1].boundary.vertices[k-1],U=H[H.length-1].boundary.vertices[k-0];Y.push(q,U)}_.push(Y)}if(!C){let Y=H[H.length-1],k;try{k=qr({windingRule:H.length>1?Ee.POSITIVE:Ee.ODD,elementType:st.POLYGONS,vertexSize:2,strict:!0,contours:[Y.insetPoints,..._]})}catch{k=jd}if(!k)throw new Error("Error generating geometry for surface");c.length===0&&this._bevel<f&&Object.assign(this,{useNgonForTopBottomFaceDuringBake:!0});for(let q=0;q<k.elementCount*3;q+=3){let U=this._buildSurfaceVert(k,k.elements[q+0],X),G=this._buildSurfaceVert(k,k.elements[q+1],X),ne=this._buildSurfaceVert(k,k.elements[q+2],X);b.push(U.top,G.top,ne.top),l===!1&&b.push(ne.bottom,G.bottom,U.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Wr.BufferAttribute(Uint32Array.from(b),1),v=new Wr.BufferAttribute(this._buffer.positions,3),M=new Wr.BufferAttribute(this._buffer.normals,3),O=new Wr.BufferAttribute(this._buffer.uvs,2);v.needsUpdate=!0,M.needsUpdate=!0,O.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",v),this.setAttribute("normal",M),this.setAttribute("uv",O),this.setIndex(A)}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),d=this._buildBevelVert(r,i,(a+1)%s);o.push(d.topP,l.topN,l.bottomN),o.push(d.topP,l.bottomN,d.bottomP)}}_buildSurfaceVert(e,r,o){let i=r.toString();if(i in this.vertexCache)return this.vertexCache[i];let a=e.vertices[r*2+0],s=e.vertices[r*2+1],l=(a-this._minX)/this._width,d=(s-this._minY)/this._height;this.forPathBevel&&(d=1);let c=this._buffer.get(this.forPathBevel?1:2),u=c*3,p=c*2,f={top:c+0,bottom:c+1};return this._buffer.positions[u+0]=a,this._buffer.positions[u+1]=s,this._buffer.positions[u+2]=this.forPathBevel?this._bevel:this._depth-o,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[p+0]=l,this._buffer.uvs[p+1]=d,this.forPathBevel===!1&&(this._buffer.positions[u+3]=a,this._buffer.positions[u+4]=s,this._buffer.positions[u+5]=o,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[p+2]=l,this._buffer.uvs[p+3]=d),this.vertexCache[i]=f,f}_buildBevelVert(e,r,o,i=1,a){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache&&a!==0&&a!==1&&(!a||a===this.vertexCache[s].pathBevelUCoord))return this.vertexCache[s];let[l,d]=r.boundary.vertexIndices[o],c,u,p,f;l!==d?(u=l,c=d,f=!1,p=e.continuous[u]&&e.continuous[c]):(c=l,u=(c-1+e.count)%e.count,f=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||f);let h=Math.cos(r.angle),m=Math.sin(r.angle),y=o*2,g=c*2,x=u*2,S=r.boundary.vertices[y+0],w=r.boundary.vertices[y+1],b=(1-m)*this._bevel,_=(S-this._minX)/this._width,A=(w-this._minY)/this._height;this.forPathBevel&&(a!==void 0&&(_=a),A=1);let v=e.normals[g+0],M=e.normals[g+1],O=e.normals[x+0],T=e.normals[x+1];if(f){let R=O-v,D=T-M;v=v+R*(1-i),M=M+D*(1-i);let z=Math.sqrt(v*v+M*M);v/=z,M/=z}let C=this.forPathBevel?this._buffer.get(p?1:2):this._buffer.get(p?2:4),P=C*3,I=C*2,E={i:o,fi:c,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1,pathBevelUCoord:a};return this._buffer.positions[P+0]=S,this._buffer.positions[P+1]=w,this._buffer.positions[P+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[P+0]=v*h,this._buffer.normals[P+1]=M*h,this._buffer.normals[P+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[P+3]=S,this._buffer.positions[P+4]=w,this._buffer.positions[P+5]=b,this._buffer.normals[P+3]=v*h,this._buffer.normals[P+4]=M*h,this._buffer.normals[P+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_),p||(this.forPathBevel?(C+=1,P+=3,I+=2):(C+=2,P+=6,I+=4),E.topP=C+0,E.bottomP=C+1,this._buffer.positions[P+0]=S,this._buffer.positions[P+1]=w,this._buffer.positions[P+2]=(this.forPathBevel?this._bevel:this._depth)-b,this._buffer.normals[P+0]=O*h,this._buffer.normals[P+1]=T*h,this._buffer.normals[P+2]=m,this._buffer.uvs[I+0]=_,this._buffer.uvs[I+1]=A,this.forPathBevel===!1&&(this._buffer.positions[P+3]=S,this._buffer.positions[P+4]=w,this._buffer.positions[P+5]=b,this._buffer.normals[P+3]=O*h,this._buffer.normals[P+4]=T*h,this._buffer.normals[P+5]=-m,this._buffer.uvs[I+2]=A,this._buffer.uvs[I+3]=_)),this.vertexCache[s]=E,E}clone(){let e=new Sn(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Bo(this.userData),e}};var da=class extends Xn.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ee.ODD;this.elementType=st.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ee.ODD,elementType:st.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),a=this._shape.shapeHoles.map(h=>h.extractShapePointsToFlatArray([],this._curveSegments)),s,l=!0,d=!0,c,u;for(let h=0,m=i.length/2;h<m;h++){let y=h*2,g=i[y+0],x=i[y+1];if(c!==void 0&&g!==c&&(l=!1),u!==void 0&&x!==u&&(d=!1),c=g,u=x,!l&&!d)break}if(!l&&!d)try{s=qr({contours:[i,...a],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict})}catch{s=zs}let p=s?.vertexCount??1,f=s?.elementCount??1;if(this._positionAttribute=new Xn.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new Xn.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new Xn.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new Xn.BufferAttribute(new Uint32Array(f*3),1),s){let h=1/0,m=-1/0,y=1/0,g=-1/0;for(let w=0,b=p;w<b;w++){let _=w*2,A=s.vertices[_+0],v=s.vertices[_+1];A<h&&(h=A),A>m&&(m=A),v<y&&(y=v),v>g&&(g=v)}let x=m-h,S=g-y;for(let w=0,b=p;w<b;w++){let _=w*2,A=s.vertices[_+0],v=s.vertices[_+1],M=(A-h)/x,O=(v-y)/S;this._positionAttribute.setXYZ(w,A,v,0),this._normalAttribute.setXYZ(w,0,0,1),this._uvAttribute.setXY(w,M,O)}for(let w=0,b=f;w<b;w++){let _=w*3,A=s.elements[_+0],v=s.elements[_+1],M=s.elements[_+2];this._indexAttribute.setX(_+0,A),this._indexAttribute.setX(_+1,v),this._indexAttribute.setX(_+2,M)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(s?.elementCount??1)*3)}clone(){let e=new da(this._shape,this._curveSegments);return e.userData=Bo(this.userData),e}};var pa=class extends Sn{constructor(e,r,o=0,i=12,a=3,s=Ee.ODD){super(e,r,o,i,a,s);this.type="ShapeGeometry"}_computeBufferEstimatedSize(e){return e.vertexCount*2*(2+this._bevelSegments)}_buildWall(e,r,o){let i=e[0];for(let a=0,s=i.boundary.vertexCount;a<s;a++){let l=this._buildBevelVert(r,i,a),d=this._buildBevelVert(r,i,(a+1)%s);o.push(d.topP,l.topN,l.bottomN),o.push(d.topP,l.bottomN,d.bottomP)}}clone(){let e=new pa(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Bo(this.userData),e}};var dr=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3,windingRule:Ee.ODD},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=n.shape??t?.shape,s=a?.roundness??e.roundness;a!==void 0&&(a instanceof Re?(a.width!==r||a.height!==o)&&a.applySize(r,o):a=new Re(r,o).fromJSON(a),n.parameters?.roundness!==void 0&&n.parameters?.roundness>0&&a.update());let l=a??new Re(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,roundness:s}),shape:l}}static build(n){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i,windingRule:a}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new da(n.shape,o,{windingRule:a}):s=new pa(n.shape,t,e,o,r,a),Object.assign(s,{userData:{...n,type:"VectorGeometry"}})}};var $r=require("three"),Sg=Math.PI*2,ha=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return e.angle=$r.MathUtils.clamp(e.angle,0,360),{shape:n.shape&&n.shape instanceof Re?n.shape:new Re,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,d=n.shape,c=t*.5,u=e*.5,p=MC(d,c,u,o*Math.PI/180,r,i);d.isClosed=!0,d.update();let f;return o===0?(f=new $r.BufferGeometry,f.setAttribute("position",new $r.Float32BufferAttribute([],3))):f=dr.create({shape:d,parameters:{subdivisions:p,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}}),Object.assign(f,{userData:{...n,type:"EllipseGeometry"}})}};function MC(n,t,e,r,o,i){if(r>=Sg)return o>30||o%4===0?(NC(n,t,e,i),Math.round(o/4)):bg(n,r,o,t,e,i);r=Math.max(r,.001);let a={x:0,y:e},s=r+Math.PI*.5,l={x:Math.cos(s)*t,y:Math.sin(s)*e},d=dg({px:a.x,py:a.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%d.length===0?IC(n,a.x,a.y,d,o,t,e,i):bg(n,r,o,t,e,i)}function IC(n,t,e,r,o,i,a,s){let l=Math.round(o/r.length);n.addPoint(fa(t,e));for(let d=0,c=r.length;d<c;d++){let u=r[d],p=n.points[d],f=fa(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 s>0?wg(n,i,a,s):n.addPoint(fa(0,0)),l}function bg(n,t,e,r,o,i){let a=-t/e;for(let s=0;s<=e;s++){let l=a*s,d=Math.sin(l)*r,c=Math.cos(l)*o;n.addPoint(fa(d,c))}return t<Sg?i>0?wg(n,r,o,i):n.addPoint(fa(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&_g(n,r,o,i)),1}function NC(n,t,e,r=0,o=0,i=0){let a=.5522847498,s=t*a,l=e*a;n.addPoint(Lc(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(Lc(o,i+e,o-s,i+e,o+s,i+e)),n.addPoint(Lc(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(Lc(o,i-e,o+s,i-e,o-s,i-e)),r>0&&_g(n,t,e,r)}function fa(n,t){return new Hr($r.MathUtils.generateUUID(),new $r.Vector2(n,t))}function Lc(n,t,e,r,o,i){let a=fa(n,t);return a.controls[0].position.set(e,r),a.controls[1].position.set(o,i),a}function wg(n,t,e,r){Ag(n,t,e,r).forEach(i=>n.addPoint(i))}function _g(n,t,e,r){let o=Ag(n,t,e,r),i=new Re;o.forEach(a=>i.addPoint(a)),i.isClosed=!0,n.shapeHoles.push(i)}function Ag(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),a=new $r.Vector2(o/t,i/e),s=n.points.map(l=>{let d=l.clone();return d.uuid=$r.MathUtils.generateUUID(),d}).reverse();return s.forEach(l=>{l.position.multiply(a);let d=l.controls[0].position.clone().multiply(a),c=l.controls[1].position.clone().multiply(a);l.controls[0].position.copy(c),l.controls[1].position.copy(d)}),s}var Yr=require("three"),Tg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),i=Math.abs(e.depth??r),a=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:a,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:a,pathRadius:s,pathType:l,pathSegments:d,cornerRadius:c,cornerSegments:u}=n.parameters,p=new ks(!1,t,e,r,o,i,a,s,l,d,c,u);return Object.assign(p,{userData:{...n,type:"HelixGeometry"}})}},Ud=new Yr.Uint32BufferAttribute([0,0,0],1),ks=class extends Yr.BufferGeometry{constructor(t=!0,e=1,r=1,o=1,i=1,a=1,s=1,l=1,d=1,c=1,u=1,p=1){if(super(),a===0)return;let f=t&&a===1;f&&(p=0),u>100&&(u=100),u===0&&(p=0);let h=()=>new Yr.Vector3,m=new Yr.Vector3,y=h(),g=h(),x=h(),S,w,b,_,A,v,M,O,T=h(),C=h(),P=h(),I=h(),E=h(),R=h(),D=h(),z=h(),B=r-2*l+.001,V=B/a,j=Math.ceil(s*a),H=j+1,X=B/j,$=-B/2,W=c+1,Y=2*Math.PI/c,k=Math.PI/2/p,q=.01,U=Math.min((1-u/100)*l,l-q),G=l-U,ne=0,ee=2,Q=p*ee+ee,te=W*Q/ee,Z=te+W*H,le=Math.max(0,W*(H+Q)),[ie,ae,de]=[3,3,2].map(yt=>Array(le*yt).fill(0)),ce=[],pe=i-l;function xe(yt,vr){let ro=Math.PI/2;v=vr*X,O=2*Math.PI*(v%V)/V+ro,v+=$,M=Math.sin(O)*pe,A=Math.cos(O)*pe,t?yt.set(A,M,v):yt.set(A,v,M)}xe(m,-1e-10),xe(y,0),T.copy(m),xe(m,1);let De=m.distanceTo(y),tt=f?0:G+U,Le=De*j+2*tt,We=U,nr=Le-tt;for(let yt=0;yt<=j;yt++){xe(g,yt),z.subVectors(g,T).normalize(),T.copy(g),R.copy(g).setComponent(+t+1,0).normalize(),D.crossVectors(z,R).normalize();let vr=yt===0,ro=yt===j,_v=vr?3*Math.PI/2:k,Av=vr?We:nr,Tv=vr?W:Z,Cv=vr?0:le-W,Pv=z.clone().multiplyScalar(vr?-G:G).add(g),Ov=z.clone().multiplyScalar(vr?-1:1).normalize();for(let Io=0;Io<W;Io++){let Kp=Io*Y;if(C.addVectors(m.copy(R).multiplyScalar(l*Math.cos(Kp)),y.copy(D).multiplyScalar(l*Math.sin(Kp))),P.copy(C).normalize(),vr||ro){f||(ne=Cv+Io,[0,1,2].forEach(ir=>{ie[ne*3+ir]=Pv.getComponent(ir),ae[ne*3+ir]=Ov.getComponent(ir)}),de[ne*2]=+ro,de[ne*2+1]=Io/c),y.copy(P).multiplyScalar(U),x.addVectors(g,y);for(let ir=0;ir<p;ir++){let Ru=ir*k+_v;I.addVectors(m.copy(z).multiplyScalar(G*Math.sin(Ru)),y.copy(P).multiplyScalar(G*Math.cos(Ru))),E.copy(I).normalize(),y.addVectors(x,I),I.normalize(),ne=Tv+ir*W+Io,[0,1,2].forEach(xl=>{ie[ne*3+xl]=y.getComponent(xl),ae[ne*3+xl]=E.getComponent(xl)});let Mv=+vr+Math.sin(Ru);de[ne*2]=(Av+G*Mv)/Le,de[ne*2+1]=Io/c}}y.addVectors(g,C),ne=te+yt*W+Io,[0,1,2].forEach(ir=>{ie[ne*3+ir]=y.getComponent(ir),ae[ne*3+ir]=P.getComponent(ir)}),de[ne*2]=(tt+yt*De)/Le,de[ne*2+1]=Io/c}}let Te=H+2*p+ee,At=1,[It,mi]=[+f,Te-1];for(let yt=It;yt<=mi-1;yt++){let vr=f&&yt===mi-1;for(let ro=0;ro<W-1;ro++)S=yt*W+ro,w=S+1,b=(vr?ro:S)+W,_=(vr?ro+1:w)+W,yt===0?ce.push(w,_,b):yt===Te-2?ce.push(S,w,b):ce.push(S,w,b,w,_,b)}this.setIndex(ce),this.setAttribute("position",new Yr.Float32BufferAttribute(ie,3)),this.setAttribute("normal",new Yr.Float32BufferAttribute(ae,3)),this.setAttribute("uv",new Yr.Float32BufferAttribute(de,2))}getClosedTorusIndicesForBooleanOrSubdiv(){let t=this.userData.parameters,e=Math.ceil(t.tubularSegments),r=t.radialSegments+1,o=Array.from(this.getIndex().array),i,a,s,l,d=6*(e-1)*t.radialSegments,c=e,u=c===e;for(let p=0;p<t.radialSegments;p++)i=c*r+p,a=i+1,s=(u?p:i)+r,l=(u?p+1:a)+r,o[d++]=i,o[d++]=a,o[d++]=s,o[d++]=a,o[d++]=l,o[d++]=s;return o.length=d,Ud.array=o,Ud.count=o.length,Ud}};var Cg=require("three");var Pg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:a}=n.parameters,s=o===0&&i!==0?new Fs(t*.5,i,a):new Cg.IcosahedronGeometry(t*.5,o);return s.scale(1,e/t,r/t),Object.assign(s,{userData:{...n,type:"IcosahedronGeometry"}})}},Fs=class extends xn{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],a=[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],s="IcosahedronGeometry";super(i,a,s,t,e,r),this.type=s}static fromJSON(t){return new Fs(t.radius,t.corner,t.cornerSides)}};var Bc=require("three"),Og=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){(n.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new Bc.Shape;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let i=new Bc.LatheGeometry(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:{...n,type:"LatheGeometry"}})}};var yo=require("three");var jo=require("three");var oe=require("three"),mo=new oe.Matrix4,Hd=new oe.Object3D,Rc=new oe.Vector3,wn=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new oe.Matrix3().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];i.normal.applyMatrix3(e).normalize();for(let a=0,s=i.vertexNormals.length;a<s;a++)i.vertexNormals[a].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return mo.makeRotationX(t),this.applyMatrix4(mo),this}rotateY(t){return mo.makeRotationY(t),this.applyMatrix4(mo),this}rotateZ(t){return mo.makeRotationZ(t),this.applyMatrix4(mo),this}translate(t,e,r){return mo.makeTranslation(t,e,r),this.applyMatrix4(mo),this}scale(t,e,r){return mo.makeScale(t,e,r),this.applyMatrix4(mo),this}lookAt(t){return Hd.lookAt(t),Hd.updateMatrix(),this.applyMatrix4(Hd.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let i=o.position,a=o.normal,s=o.color,l=o.uv,d=o.uv2;d!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<i.count;p++)e.vertices.push(new oe.Vector3().fromBufferAttribute(i,p)),s!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(s,p));function c(p,f,h,m){let y=s===void 0?[]:[e.colors[p].clone(),e.colors[f].clone(),e.colors[h].clone()],g=a===void 0?[]:[new oe.Vector3().fromBufferAttribute(a,p),new oe.Vector3().fromBufferAttribute(a,f),new oe.Vector3().fromBufferAttribute(a,h)],x=new ma(p,f,h,g,y,m);e.faces.push(x),l!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(l,p),new oe.Vector2().fromBufferAttribute(l,f),new oe.Vector2().fromBufferAttribute(l,h)]),d!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(d,p),new oe.Vector2().fromBufferAttribute(d,f),new oe.Vector2().fromBufferAttribute(d,h)])}let u=t.groups;if(u.length>0)for(let p=0;p<u.length;p++){let f=u[p],h=f.start,m=f.count;for(let y=h,g=h+m;y<g;y+=3)r!==void 0?c(r.getX(y),r.getX(y+1),r.getX(y+2),f.materialIndex):c(y,y+1,y+2,f.materialIndex)}else if(r!==void 0)for(let p=0;p<r.count;p+=3)c(r.getX(p),r.getX(p+1),r.getX(p+2));else for(let p=0;p<i.count;p+=3)c(p,p+1,p+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Rc).negate(),this.translate(Rc.x,Rc.y,Rc.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new oe.Vector3,e=new oe.Vector3;for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=this.vertices[i.a],s=this.vertices[i.b],l=this.vertices[i.c];t.subVectors(l,s),e.subVectors(a,s),t.cross(e),t.normalize(),i.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=this.vertices[s.a],d=this.vertices[s.b],c=this.vertices[s.c];r.subVectors(c,d),o.subVectors(l,d),r.cross(o),e[s.a].add(r),e[s.b].add(r),e[s.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r];e[i.a].add(i.normal),e[i.b].add(i.normal),e[i.c].add(i.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let i=this.faces[r],a=i.vertexNormals;a.length===3?(a[0].copy(e[i.a]),a[1].copy(e[i.b]),a[2].copy(e[i.c])):(a[0]=e[i.a].clone(),a[1]=e[i.b].clone(),a[2]=e[i.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let i=0,a=o.vertexNormals.length;i<a;i++)o.__originalVertexNormals[i]?o.__originalVertexNormals[i].copy(o.vertexNormals[i]):o.__originalVertexNormals[i]=o.vertexNormals[i].clone()}let t=new wn;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let i=this.morphNormals[e].faceNormals,a=this.morphNormals[e].vertexNormals;for(let s=0,l=this.faces.length;s<l;s++){let d=new oe.Vector3,c={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};i.push(d),a.push(c)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let i=0,a=this.faces.length;i<a;i++){let s=this.faces[i],l=o.faceNormals[i],d=o.vertexNormals[i];l.copy(s.normal),d.a.copy(s.vertexNormals[0]),d.b.copy(s.vertexNormals[1]),d.c.copy(s.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,i=this.vertices.length,a=this.vertices,s=t.vertices,l=this.faces,d=t.faces,c=this.colors,u=t.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let p=0,f=s.length;p<f;p++){let m=s[p].clone();e!==void 0&&m.applyMatrix4(e),a.push(m)}for(let p=0,f=u.length;p<f;p++)c.push(u[p].clone());for(let p=0,f=d.length;p<f;p++){let h=d[p],m,y,g=h.vertexNormals,x=h.vertexColors,S=new ma(h.a+i,h.b+i,h.c+i);S.normal.copy(h.normal),o!==void 0&&S.normal.applyMatrix3(o).normalize();for(let w=0,b=g.length;w<b;w++)m=g[w].clone(),o!==void 0&&m.applyMatrix3(o).normalize(),S.vertexNormals.push(m);S.color.copy(h.color);for(let w=0,b=x.length;w<b;w++)y=x[w],S.vertexColors.push(y.clone());S.materialIndex=h.materialIndex+r,l.push(S)}for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],x=[];for(let S=0,w=g.length;S<w;S++)x.push(g[S].clone());this.faceVertexUvs[p].push(x)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],i=Math.pow(10,t);for(let l=0,d=this.vertices.length;l<d;l++){let c=this.vertices[l],u=Math.round(c.x*i)+"_"+Math.round(c.y*i)+"_"+Math.round(c.z*i);e[u]===void 0?(e[u]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[u]]}let a=[];for(let l=0,d=this.faces.length;l<d;l++){let c=this.faces[l];c.a=o[c.a],c.b=o[c.b],c.c=o[c.c];let u=[c.a,c.b,c.c];for(let p=0;p<3;p++)if(u[p]===u[(p+1)%3]){a.push(l);break}}for(let l=a.length-1;l>=0;l--){let d=a[l];this.faces.splice(d,1);for(let c=0,u=this.faceVertexUvs.length;c<u;c++)this.faceVertexUvs[c].splice(d,1)}let s=this.vertices.length-r.length;return this.vertices=r,s}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,d){return l.materialIndex-d.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],i=this.faceVertexUvs[1],a,s;o&&o.length===e&&(a=[]),i&&i.length===e&&(s=[]);for(let l=0;l<e;l++){let d=t[l]._id;a&&a.push(o[d]),s&&s.push(i[d])}a&&(this.faceVertexUvs[0]=a),s&&(this.faceVertexUvs[1]=s)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let h=this.parameters;for(let m in h)h[m]!==void 0&&(t[m]=h[m]);return t}let e=[];for(let h=0;h<this.vertices.length;h++){let m=this.vertices[h];e.push(m.x,m.y,m.z)}let r=[],o=[],i={},a=[],s={},l=[],d={};for(let h=0;h<this.faces.length;h++){let m=this.faces[h],y=!0,g=!1,x=this.faceVertexUvs[0][h]!==void 0,S=m.normal.length()>0,w=m.vertexNormals.length>0,b=m.color.r!==1||m.color.g!==1||m.color.b!==1,_=m.vertexColors.length>0,A=0;if(A=c(A,0,0),A=c(A,1,y),A=c(A,2,g),A=c(A,3,x),A=c(A,4,S),A=c(A,5,w),A=c(A,6,b),A=c(A,7,_),r.push(A),r.push(m.a,m.b,m.c),r.push(m.materialIndex),x){let v=this.faceVertexUvs[0][h];r.push(f(v[0]),f(v[1]),f(v[2]))}if(S&&r.push(u(m.normal)),w){let v=m.vertexNormals;r.push(u(v[0]),u(v[1]),u(v[2]))}if(b&&r.push(p(m.color)),_){let v=m.vertexColors;r.push(p(v[0]),p(v[1]),p(v[2]))}}function c(h,m,y){return y?h|1<<m:h&~(1<<m)}function u(h){let m=h.x.toString()+h.y.toString()+h.z.toString();return i[m]!==void 0||(i[m]=o.length/3,o.push(h.x,h.y,h.z)),i[m]}function p(h){let m=h.r.toString()+h.g.toString()+h.b.toString();return s[m]!==void 0||(s[m]=a.length,a.push(h.getHex())),s[m]}function f(h){let m=h.x.toString()+h.y.toString();return d[m]!==void 0||(d[m]=l.length/2,l.push(h.x,h.y)),d[m]}return t.data={},t.data.vertices=e,t.data.normals=o,a.length>0&&(t.data.colors=a),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new wn().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let p=0,f=e.length;p<f;p++)this.vertices.push(e[p].clone());let r=t.colors;for(let p=0,f=r.length;p<f;p++)this.colors.push(r[p].clone());let o=t.faces;for(let p=0,f=o.length;p<f;p++)this.faces.push(o[p].clone());for(let p=0,f=t.faceVertexUvs.length;p<f;p++){let h=t.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let m=0,y=h.length;m<y;m++){let g=h[m],x=[];for(let S=0,w=g.length;S<w;S++){let b=g[S];x.push(b.clone())}this.faceVertexUvs[p].push(x)}}let i=t.morphTargets;for(let p=0,f=i.length;p<f;p++){let h={};if(h.name=i[p].name,i[p].vertices!==void 0){h.vertices=[];for(let m=0,y=i[p].vertices.length;m<y;m++)h.vertices.push(i[p].vertices[m].clone())}if(i[p].normals!==void 0){h.normals=[];for(let m=0,y=i[p].normals.length;m<y;m++)h.normals.push(i[p].normals[m].clone())}this.morphTargets.push(h)}let a=t.morphNormals;for(let p=0,f=a.length;p<f;p++){let h={};if(a[p].vertexNormals!==void 0){h.vertexNormals=[];for(let m=0,y=a[p].vertexNormals.length;m<y;m++){let g=a[p].vertexNormals[m],x={};x.a=g.a.clone(),x.b=g.b.clone(),x.c=g.c.clone(),h.vertexNormals.push(x)}}if(a[p].faceNormals!==void 0){h.faceNormals=[];for(let m=0,y=a[p].faceNormals.length;m<y;m++)h.faceNormals.push(a[p].faceNormals[m].clone())}this.morphNormals.push(h)}let s=t.skinWeights;for(let p=0,f=s.length;p<f;p++)this.skinWeights.push(s[p].clone());let l=t.skinIndices;for(let p=0,f=l.length;p<f;p++)this.skinIndices.push(l[p].clone());let d=t.lineDistances;for(let p=0,f=d.length;p<f;p++)this.lineDistances.push(d[p]);let c=t.boundingBox;c!==null&&(this.boundingBox=c.clone());let u=t.boundingSphere;return u!==null&&(this.boundingSphere=u.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new qd().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",Vc.call(new oe.BufferAttribute(r,3),t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",Vc.call(new oe.BufferAttribute(o,3),t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",Mg.call(new oe.BufferAttribute(o,3),t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",Ig.call(new oe.BufferAttribute(o,2),t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",Ig.call(new oe.BufferAttribute(o,2),t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let i=[],a=t.morphTargets[o];for(let s=0,l=a.length;s<l;s++){let d=a[s],c=new oe.Float32BufferAttribute(d.data.length*3,3);c.name=d.name,i.push(Vc.call(c,d.data))}e.morphAttributes[o]=i}if(t.skinIndices.length>0){let o=new oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",Ng.call(o,t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(t.skinWeights.length*4,4);e.setAttribute("skinWeight",Ng.call(o,t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),i=new oe.Float32BufferAttribute(r.colors.length*3,3);if(e.setAttribute("position",Vc.call(o,r.vertices)),e.setAttribute("color",Mg.call(i,r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let a=new oe.Float32BufferAttribute(r.lineDistances.length,1);e.setAttribute("lineDistance",EC.call(a,r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};wn.prototype.isGeometry=!0;var qd=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,i,a=t.faces;for(o=0;o<a.length;o++){let s=a[o];s.materialIndex!==i&&(i=s.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:i})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,i=o[0]&&o[0].length>0,a=o[1]&&o[1].length>0,s=t.morphTargets,l=s.length,d;if(l>0){d=[];for(let g=0;g<l;g++)d[g]={name:s[g].name,data:[]};this.morphTargets.position=d}let c=t.morphNormals,u=c.length,p;if(u>0){p=[];for(let g=0;g<u;g++)p[g]={name:c[g].name,data:[]};this.morphTargets.normal=p}let f=t.skinIndices,h=t.skinWeights,m=f.length===r.length,y=h.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let g=0;g<e.length;g++){let x=e[g];this.vertices.push(r[x.a],r[x.b],r[x.c]);let S=x.vertexNormals;if(S.length===3)this.normals.push(S[0],S[1],S[2]);else{let b=x.normal;this.normals.push(b,b,b)}let w=x.vertexColors;if(w.length===3)this.colors.push(w[0],w[1],w[2]);else{let b=x.color;this.colors.push(b,b,b)}if(i===!0){let b=o[0][g];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",g),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(a===!0){let b=o[1][g];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",g),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<l;b++){let _=s[b].vertices;d[b].data.push(_[x.a],_[x.b],_[x.c])}for(let b=0;b<u;b++){let _=c[b].vertexNormals[g];p[b].data.push(_.a,_.b,_.c)}m&&this.skinIndices.push(f[x.a],f[x.b],f[x.c]),y&&this.skinWeights.push(h[x.a],h[x.b],h[x.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},ma=class{constructor(t,e,r,o,i,a=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=i&&i.isColor?i:new oe.Color,this.vertexColors=Array.isArray(i)?i:[],this.materialIndex=a}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};function EC(n){return this.array.set(n),this}function Mg(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",r),i=new oe.Color),t[e++]=i.r,t[e++]=i.g,t[e++]=i.b}return this}function Ig(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",r),i=new oe.Vector2),t[e++]=i.x,t[e++]=i.y}return this}function Vc(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",r),i=new oe.Vector3),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z}return this}function Ng(n){let t=this.array,e=0;for(let r=0,o=n.length;r<o;r++){let i=n[r];i===void 0&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",r),i=new oe.Vector4),t[e++]=i.x,t[e++]=i.y,t[e++]=i.z,t[e++]=i.w}return this}var DC=["a","b","c"];function LC(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Wd(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function $d(n,t,e,r,o,i){let a=Math.min(n,t),s=Math.max(n,t),l=a+"_"+s,d;if(r.has(l))d=r.get(l);else{let c=e[a],u=e[s];d={a:c,b:u,newEdge:null,faces:[]},r.set(l,d)}d.faces.push(o),i[n].edges.push(d),i[t].edges.push(d)}function BC(n,t,e,r){let o,i,a;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)a=t[o],$d(a.a,a.b,n,r,a,e),$d(a.b,a.c,n,r,a,e),$d(a.c,a.a,n,r,a,e)}function Gc(n,t,e,r,o){n.push(new ma(t,e,r,void 0,void 0,o))}function ya(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function zc(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var kc=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof jo.BufferGeometry?t=new wn().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new jo.Vector3,r,o,i,a,s,l=t.vertices,d=t.faces,c=t.faceVertexUvs[0],u=c!==void 0&&c.length>0,p=[],f=new Map;BC(l,d,p,f);let h=[],m,y,g,x,S,w,b;for(let q of Array.from(f.keys())){for(y=f.get(q),g=new jo.Vector3,S=3/8,w=1/8,b=y.faces.length,b!=2&&(S=.5,w=0,b!=1),g.addVectors(y.a,y.b).multiplyScalar(S),e.set(0,0,0),a=0;a<b;a++){for(x=y.faces[a],s=0;s<3&&(m=l[LC(x,DC[s])],!(m!==y.a&&m!==y.b));s++);m&&e.add(m)}e.multiplyScalar(w),g.add(e),y.newEdge=h.length,h.push(g)}let _,A,v,M,O,T,C,P=[];for(o=0,i=l.length;o<i;o++){for(T=l[o],O=p[o].edges,r=O.length,r==3?_=3/16:r>3&&(_=3/(8*r)),A=1-r*Number(_),v=_,r<=2&&(r==2?(A=3/4,v=1/8):r==1||r==0),C=T.clone().multiplyScalar(A),e.set(0,0,0),a=0;a<r;a++)M=O[a],m=M.a!==T?M.a:M.b,e.add(m);e.multiplyScalar(Number(v)),C.add(e),P.push(C)}let I=P.concat(h),E=P.length,R,D,z,B=[],V=[],j,H,X,$,W=new jo.Vector2,Y=new jo.Vector2,k=new jo.Vector2;for(o=0,i=d.length;o<i;o++)x=d[o],R=Number(Wd(x.a,x.b,f).newEdge)+E,D=Number(Wd(x.b,x.c,f).newEdge)+E,z=Number(Wd(x.c,x.a,f).newEdge)+E,Gc(B,R,D,z,x.materialIndex),Gc(B,x.a,R,z,x.materialIndex),Gc(B,x.b,D,R,x.materialIndex),Gc(B,x.c,z,D,x.materialIndex),u&&(j=c[o],H=j[0],X=j[1],$=j[2],W.set(ya(H.x,X.x),ya(H.y,X.y)),Y.set(ya(X.x,$.x),ya(X.y,$.y)),k.set(ya(H.x,$.x),ya(H.y,$.y)),zc(V,W,Y,k),zc(V,H,W,k),zc(V,X,Y,W),zc(V,$,k,Y));t.vertices=I,t.faces=B,u&&(t.faceVertexUvs[0]=V)}};var Ct=new yo.Vector3,Eg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=n.geometry??t?.geometry??new yo.BufferGeometry().copy(new yo.BoxGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(Ct),r={width:Ct.x,height:Ct.y,depth:Ct.z,subdivisions:0}):r=t.parameters;let o={...r,...n.parameters};return{parameters:{width:Math.abs(o.width),height:Math.abs(o.height),depth:Math.abs(o.depth),subdivisions:Math.abs(o.subdivisions)},geometry:e}}static build(n){let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=n.geometry??new yo.BufferGeometry().copy(new yo.BoxGeometry(100,100,100)),a=i.userData.parameters;a===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(Ct)):Ct.set(a.width,a.height,a.depth),(t!==Ct.x||e!==Ct.y||r!==Ct.z)&&i.scale(Ct.x===0?1:t/Ct.x,Ct.y===0?1:e/Ct.y,Ct.z===0?1:r/Ct.z);let s=i.originalGeometry;try{o>0?(s===void 0||a?.subdivisions!==o)&&(s===void 0&&(s=i),i=new kc(o).modify(s).toBufferGeometry()):(s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals())}catch{s!==void 0&&(i=s),s=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()}return s!==void 0&&Object.assign(i,{originalGeometry:s}),delete n.geometry,Object.assign(i,{userData:{...n,type:"NonParametricGeometry"}})}static loadFromUrl(n,t,e){new yo.BufferGeometryLoader(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(Ct);let a=100/Ct.x;Object.assign(i.parameters,{width:100,height:Ct.y*a,depth:Ct.z*a}),t(this.build(i))})}};var Fc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Re?n.shape:new Re,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}=n.parameters,l=n.shape,d=t*.5,c=e*.5,u=0,p=0,f=2*Math.PI/r;for(let m=0;m<r;m++){let y=f*m,g=u+Math.sin(y)*d,x=p+Math.cos(y)*c;l.addPoint(l.createPoint(g,x))}l.isClosed=!0;for(let m=0,y=l.points.length;m<y;m++)l.points[m].roundness=o;l.roundness=o,l.update();let h=dr.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:a,extrudeBevelSegments:s}});return Object.assign(h,{userData:{...n,type:"PolygonGeometry"}})}};var Ne=require("three"),Dg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:a,cornerRadius:s,cornerSegments:l}=n.parameters,d=new Xd(t*.5,e,o,i,a,s,l);return d.scale(1,1,r/t),Object.assign(d,{userData:{...n,type:"PyramidGeometry"}})}};function js(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Yd(n,t,e,r,o,i){let a=t.clone().sub(n),s=e.clone().sub(n),l=a.angleTo(s);if(a.normalize(),s.normalize(),r===o){let d=a.add(s).normalize();i.copy(n).addScaledVector(d,r/Math.sin(l/2))}else{let d=a.angleTo(s);i.copy(n),i.addScaledVector(a,o/Math.sin(d)),i.addScaledVector(s,r/Math.sin(d))}}function RC(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Xd=class extends Ne.BufferGeometry{constructor(t=.5,e=1,r=4,o=1,i=!1,a=0,s=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),s=Math.floor(s);let l=[],d=[],c=[],u=[],p=0,f=e/2,h=Math.PI/r,m=t*Math.cos(Math.PI/r),y=2*Math.PI/r,g=(r-2)*Math.PI/r,x=Math.PI-g,S=new Ne.Vector3(0,-f,0),w=new Ne.Vector3(0,f,0),b=new Ne.Vector2(t,-f),_=new Ne.Vector2(m,-f),A=new Ne.Vector2(0,w.y).sub(_),v=new Ne.Vector2(0,w.y).sub(b),M=new Ne.Vector2(A.y,-A.x).normalize(),O=new Ne.Vector2(v.y,-v.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-A.angle())/2)-1e-8;a=Math.min(a,C);let P;{let V=new Ne.Vector3(M.x,M.y,0),j=new Ne.Vector3(Math.cos(y)*V.x,V.y,Math.sin(y)*V.x);P=V.angleTo(j)}let I=a/Math.tan((Math.PI-A.angle())/2),E=a/Math.tan((Math.PI-P)/2),R=new Ne.Vector3;if(!i){d.push(S.x,S.y,S.z),c.push(0,-1,0),u.push(0,0);let V=p++,j=[],H=b.clone(),X=I/Math.cos(Math.PI/r);H.x-=X;for(let $=0;$<r;$++){let W=$/r*Math.PI*2+h,Y=new Ne.Vector2(Math.sin(W),Math.cos(W));js(H,Y,R),d.push(R.x,R.y,R.z),c.push(0,-1,0),u.push(0,0),j.push(p++)}for(let $=0;$<j.length;$++)l.push(j[$],V,j[($+1)%j.length])}let D=[];{let V=new Ne.Vector3,j=new Ne.Vector3,H=new Ne.Vector3,X=new Ne.Vector3,$=new Ne.Vector3,W=new Ne.Vector3;for(let Y=0;Y<r;Y++){let k=Y/r*Math.PI*2+h,q=(Y+.5)/r*Math.PI*2+h,U=(Y+1)/r*Math.PI*2+h,G=new Ne.Vector2(Math.sin(k),Math.cos(k)),ne=new Ne.Vector2(Math.sin(q),Math.cos(q)),ee=new Ne.Vector2(Math.sin(U),Math.cos(U));js(b,G,j),js(b,ee,H),js(M,ne,V),Yd(w,j,H,E,E,X),d.push(X.x,X.y,X.z),Yd(j,w,H,E,I,$),d.push($.x,$.y,$.z),Yd(H,j,w,I,E,W),d.push(W.x,W.y,W.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),c.push(V.x,V.y,V.z),u.push(0,0),u.push(0,0),u.push(0,0);let Q=p++,te=p++,Z=p++;if(l.push(Q,te,Z),a>0){{let ae=j.clone().add(H).multiplyScalar(.5),de=w.clone().sub(ae).normalize(),pe=S.clone().sub(ae).normalize().add(de).normalize().multiplyScalar(-1),xe=W.clone().sub($);z(ae,xe,pe,A.angle())}let le,ie;{let ae=new Ne.Vector3;js(O,ee,ae);let de=W.clone().add(X).multiplyScalar(.5);de=RC(de,H,w);let ce=W.clone().sub(X);[le,ie]=z(de,ce,ae,P,X.y)}{let ae=le,de=ae.clone().setY(0).normalize(),ce=new Ne.Vector3(0,-1,0),pe=de.clone().cross(ce);B(ae,de,ce,pe)}D.concat(ie);{let ae=A.angle(),de=Math.PI-ae,ce=w.clone();ce.y-=a/Math.sin(ae-Math.PI/2);let pe=new Ne.Vector3,xe=[];for(let tt=0;tt<s;tt++){let Le=[],We=Math.PI/2-de*tt/s,nr=Math.cos(We),Te=Math.sin(We),At=q;for(let It=0;It<=tt;It++){let mi=Math.cos(At),yt=Math.sin(At);V.x=nr*yt,V.y=Te,V.z=nr*mi,pe.copy(ce).addScaledVector(V,a),d.push(pe.x,pe.y,pe.z),c.push(V.x,V.y,V.z),u.push(0,0),Le.push(p++),At+=Math.PI*2/tt/r}xe.push(Le)}ie.reverse(),xe.push(ie);let De=xe.length-1;for(let tt=0;tt<De;tt++){let Le=xe[tt],We=xe[tt+1],nr=Le.length-1;l.push(We[1],Le[0],We[0]);for(let Te=1;Te<=nr;Te++)l.push(Le[Te],Le[Te-1],We[Te]),l.push(We[Te+1],Le[Te],We[Te])}}}}}this.setIndex(l),this.setAttribute("position",new Ne.Float32BufferAttribute(d,3)),this.setAttribute("normal",new Ne.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Ne.Float32BufferAttribute(u,2));function z(V,j,H,X,$){let W=-X/2,Y=(Math.PI-X)/2,k=j.clone().normalize().cross(H);V.addScaledVector(H,-a/Math.sin(Y));let q=new Ne.Vector3,U=new Ne.Vector3,G=1,ne=p,ee=[];for(let Q=0;Q<=s;Q++){let te=W+Q/s*X;U.set(0,0,0),U.addScaledVector(k,Math.sin(te)),U.addScaledVector(H,Math.cos(te));for(let Z=0;Z<=G;Z++){let le=Z/G-.5;if(q.copy(V),q.addScaledVector(j,le),q.addScaledVector(U,a),$!=null){let ie=Math.max(0,q.y-$);q.addScaledVector(j,-ie/j.y)}d.push(q.x,q.y,q.z),c.push(U.x,U.y,U.z),u.push(0,0),Z===0&&ee.push(p),p++}}for(let Q=0;Q<s;Q++)for(let te=0;te<G;te++){let Z=ne+te+(G+1)*Q,le=Z+(G+1),ie=le+1,ae=Z+1;l.push(Z,le,ae),l.push(le,ie,ae)}return[V.clone().addScaledVector(j,.5),ee]}function B(V,j,H,X){let $=Math.PI/2,W=v.angle()-$,Y=[],k=new Ne.Vector3,q=new Ne.Vector3;for(let G=0;G<=s;G++){let ne=[],ee=G/s;for(let Q=0;Q<=G;Q++){let Z=((G?Q/G:0)-.5)*x,le=Math.cos(Z),ie=Math.sin(Z),ae=Math.atan(Math.tan(W)*le),de=($+ae)*ee,ce=Math.cos(de),pe=Math.sin(de);k.set(0,0,0),k.addScaledVector(j,pe*le),k.addScaledVector(H,ce),k.addScaledVector(X,pe*ie),q.copy(V).addScaledVector(k,a),d.push(q.x,q.y,q.z),c.push(k.x,k.y,k.z),u.push(0,0),ne.push(p++)}Y.push(ne)}let U=Y.length-1;for(let G=0;G<U;G++){let ne=Y[G],ee=Y[G+1],Q=ne.length-1;l.push(ne[0],ee[1],ee[0]);for(let te=1;te<=Q;te++)l.push(ne[te-1],ne[te],ee[te]),l.push(ne[te],ee[te+1],ee[te])}}}};var jc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Re?n.shape:new Re,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}=n.parameters,d={x:e*.5,y:r*.5},c={x:-d.x,y:-d.y},u={x:d.x,y:d.y};function p(w,b,_){return b>e&&_>r?Math.min(w*e/b,w*r/_):b>e?w*e/b:_>r?w*r/_: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 h=c.x,m=u.x,y=u.y,g=c.y;t.addPoint(t.createPoint(h,y)),t.addPoint(t.createPoint(m,y)),t.addPoint(t.createPoint(m,g)),t.addPoint(t.createPoint(h,g)),t.isClosed=!0;let x=!0;for(let w=0,b=t.points.length;w<b;w++)t.points[w].roundness=f[w],w>0&&f[w]!==f[w-1]&&(x=!1);x&&(t.roundness=f[0]),t.useCubicForRoundedCorners=i!==1,t.update();let S=dr.create({shape:t,parameters:{depth:a,extrudeBevelSize:s,extrudeBevelSegments:l}});return Object.assign(S,{userData:{...n,type:"RectangleGeometry"}})}};var Uo=require("three"),Lg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},n.parameters);return e.thetaLength=Uo.MathUtils.clamp(e.thetaLength,0,180),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:a,phiLength:s,thetaStart:l,thetaLength:d}=n.parameters,c;return d===0?(c=new Uo.BufferGeometry,c.setAttribute("position",new Uo.Float32BufferAttribute([],3))):c=new Uo.SphereGeometry(.5*t,o,i,a,s,l,d*Uo.MathUtils.DEG2RAD),c.scale(1,e/t,r/t),Object.assign(c,{userData:{...n,type:"SphereGeometry"}})}};var Bg=require("three"),Rg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new Bg.PlaneGeometry(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:{...n,type:"PlaneGeometry"}})}};var _n=require("three"),Vg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(n){let{width:t,height:e,depth:r,angle:o,cornerRadius:i,cornerSegments:a}=n.parameters,s=new Kd(t,e,r,o,i,a);return Object.assign(s,{userData:{...n,type:"BackdropGeometry"}})}},Kd=class extends _n.BufferGeometry{constructor(t=1,e=1,r=1,o=90,i=10,a=24){super(),this.type="BackdropGeometry";let s=[],l=[],d=[],c=.001;i==0&&(a=1),a=Math.max(1,Math.floor(a)),i=Math.min(i,100),o=Math.min(180-c,o),o*=Math.PI/180;let u=[],p=Math.PI/2,f=(q=0,U=0,G=0)=>new _n.Vector3(q,U,G),h=f(),m=f(),[y,g,x]=[e/2,t/2,r/2],S=-g,w=+g,[b,_,A]=[f(S,-y,+x),f(S,-y,-x),f(S,+y,-x)],v=(q,U=!1)=>Math.sin(q-Math.PI/(1+ +U)),M=(q,U=!1)=>Math.cos(q-Math.PI/(1+ +U));A.y=Math.sin(o)*e-y;let O=Math.cos(o)*e-x,T=b.z-c;o<=p?(A.z=Math.min(O,T),A.z==T&&(A.y-=(O-T)/Math.tan(p-o))):_.z=Math.min(_.z-O-x,b.z-c),h.subVectors(b,_),m.subVectors(A,_);let C=Math.min(h.length(),m.length())*i/100,P=C*Math.tan(o/2),I=C/Math.cos(o/2),E=h.clone().normalize().add(m.normalize()).setLength(I).add(_);h.set(0,v(o,!0),M(o,!0)),u.push([A,h.clone()]);let R=(Math.PI-o)/a;for(let q=0;q<=a;q++){let U=p+o+q*R;h.set(0,Math.sin(U)*P,Math.cos(U)*P),h.add(E),m.set(0,v(U),M(U)),u.push([h.clone(),m.clone()])}u.push([b,f(0,1,0)]);let D=Math.sin(R/2)*P*2,z=u.length-1,B=u[0][0].distanceTo(u[1][0]),V=u[z-1][0].distanceTo(u[z][0]),j=B+D*a+V;u[0].push(1);for(let q=0;q<=a;q++)u[q+1].push(1-(B+q*D)/j);u[z].push(0);let[H,X,$]=u[0],W,Y,k;for(let q=1;q<u.length;q++)[W,Y,k]=u[q],s.push(S,H.y,H.z,S,W.y,W.z,w,H.y,H.z,w,H.y,H.z,S,W.y,W.z,w,W.y,W.z),l.push(0,X.y,X.z,0,Y.y,Y.z,0,X.y,X.z,0,X.y,X.z,0,Y.y,Y.z,0,Y.y,Y.z),d.push(0,$,0,k,1,$,1,$,0,k,1,k),[H,X,$]=[W,Y,k];this.setAttribute("position",new _n.Float32BufferAttribute(s,3)),this.setAttribute("normal",new _n.Float32BufferAttribute(l,3)),this.setAttribute("uv",new _n.Float32BufferAttribute(d,2))}};var Uc=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Re?n.shape:new Re,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:a,depth:s,extrudeBevelSize:l,extrudeBevelSegments:d}=n.parameters,c=n.shape,u=t*.5,p=e*.5,f=0,h=0,m=a*Math.PI/360/o,y=Math.PI/2*3*-1,g=u*r/100,x=p*r/100;if(o===3&&r===50){m=2*Math.PI/o;for(let w=0;w<o;w++){let b=m*w,_=f+Math.sin(b)*u,A=h+Math.cos(b)*p;c.addPoint(c.createPoint(_,A))}}else for(let w=0;w<o;w++){let b=f+Math.cos(y)*u,_=h+Math.sin(y)*p;c.addPoint(c.createPoint(b,_)),y+=m,b=f+Math.cos(y)*g,_=h+Math.sin(y)*x,w<=o,c.addPoint(c.createPoint(b,_)),y+=m}c.isClosed=!0;for(let w=0,b=c.points.length;w<b;w++)c.points[w].roundness=i;c.roundness=i,c.update();let S=dr.create({shape:c,parameters:{roundness:i,depth:s,extrudeBevelSize:l,extrudeBevelSegments:d}});return Object.assign(S,{userData:{...n,type:"StarGeometry"}})}};var Gg=require("three"),zg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new Gg.PlaneGeometry(t,e);return Object.assign(r,{userData:{...n,type:"TextFrameGeometry"}})}};var ga=require("three");var kg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:360,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.round(Math.abs(e.depth??e.width*.25));return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:a,cornerRadius:s,cornerSegments:l}=n.parameters,d=VC(t,e,r,t*.5,a,i,0,0,o,s,l);return d.scale(1,e/t,1),Object.assign(d,{userData:{...n,type:"TorusGeometry"}})}};function VC(n,t,e,r,o,i,a,s,l,d,c){[t,e]=[e,t],a=t/2;let u=ga.MathUtils.clamp(o/360,0,1);if(u===0){let p=new ga.BufferGeometry;return p.setAttribute("position",new ga.Float32BufferAttribute([],3)),p}return u===1&&(d=0),new ks(!0,n,t,e,r,u,i,a,s,l,d,c)}var Fg=require("three"),jg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:a}=n.parameters,s=t*.5;s!==e&&(s-=e);let l=new Fg.TorusKnotGeometry(s,e,r,o,i,a);return Object.assign(l,{userData:{...n,type:"TorusKnotGeometry"}})}};var Ug=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Re?n.shape:new Re,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a,isRect:s}=n.parameters,l=n.shape,d=t*.5,c=e*.5;s?(l.addPoint(l.createPoint(-d,c)),l.addPoint(l.createPoint(d,-c)),l.addPoint(l.createPoint(-d,-c))):(l.addPoint(l.createPoint(0,c)),l.addPoint(l.createPoint(d,-c)),l.addPoint(l.createPoint(-d,-c))),l.isClosed=!0;for(let p=0,f=l.points.length;p<f;p++)l.points[p].roundness=r;l.roundness=r,l.update();let u=dr.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:a}});return Object.assign(u,{userData:{...n,type:"TriangleGeometry"}})}};var Se=require("three");function Hg(n,t){let e=2*Math.PI;return(n%e+e)%e===(t%e+e)%e}var GC=new Se.Matrix4,zC=new Se.Matrix4;function kC(n,t,e){let r=[new Se.Vector3,new Se.Vector3,new Se.Vector3],o=[new Se.Vector3,new Se.Vector3,new Se.Vector3];return n.extractBasis(r[0],r[1],r[2]),t.extractBasis(o[0],o[1],o[2]),r.forEach((i,a)=>{let s=o[a],l=Se.MathUtils.lerp(i.length(),s.length(),e);i.lerp(s,e).setLength(l)}),new Se.Matrix4().makeBasis(r[0],r[1],r[2])}var qg=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){let e=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),i=Math.abs(e.depth??0),a=t?.shapeData??ha.create({parameters:cd}).userData.shape;return{path:n.path??$i.defaultData(),parameters:Object.assign(e,{width:r,height:o,depth:i,extrusion:{...hc,...e.extrusion}}),shapeData:a}}static build(n){if(n.path.points.length>=2){let e=new Qd(n);return Object.assign(e,{userData:{...n,type:"PathGeometry"}})}else return Object.assign(new Se.BufferGeometry,{userData:{...n,type:"PathGeometry"}})}},Qd=class extends Se.BufferGeometry{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)||!Hg(e.twist,0)||e.startScale!==e.endScale}build(){let e=this._extractPathPoints();if(e.length<2)return;let r=this._computeBasisMatrices(e),{depth:o,offset:i}=this.inputs.parameters.extrusion;o=Math.max(0,Math.min(o,1)),i=Math.max(0,Math.min(i,1));let a=this.inputs.path.isClosed?e.length:e.length-1,s=Math.floor(i*a),l=this.inputs.path.isClosed?Math.ceil((o+i)*a):Math.ceil(Math.min(1,o+i)*a),d=Math.min(Math.max(2,l-s+1),a+2),c=[],u=[];for(let B=0;B<d;B++){let V=this.inputs.path.isClosed?(B+s)%e.length:Math.min(B+s,e.length-1);c.push(e[V].clone()),u.push(r[V].clone())}let p=(B,V,j)=>{c[B]=c[B].clone().lerp(c[V],j),u[B]=kC(u[B],u[V],j)},f=0,h=i*a%1;(!this.inputs.path.isClosed||o<=1)&&(h||i===0)&&(f=h,p(0,1,f));let m=0,y=(i+o)*a%1;if((this.inputs.path.isClosed&&o<=1||!this.inputs.path.isClosed&&i+o<1)&&y&&(m=y,p(c.length-1,c.length-2,1-m)),o===0){let B=c.length-1;c[B].copy(c[0]),u[B].copy(u[0])}this._applyPathModifiers(u,f,m);let{bevel:g,bevelSides:x}=this.inputs.parameters.extrusion,S=g>0?this.inputs.parameters.extrusion.capType:"flat",w=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(w=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:b,infos:_,vertices:A}=this._computeShapePoints(w),v=0,M;S==="round"&&(M=new Sn(this.inputs.shapeData,2*g,g,w,x,void 0,!0),v=M.getAttribute("position").count);let O=0,T=0;_.sort((B,V)=>B.start-V.start),_.forEach(B=>{B.verticesStart=O,B.verticesCount=B.continuous.reduce((V,j,H)=>V+(H===0||!j?2:1),0),T+=B.verticesCount,O=T});let C=T*d,P,I=0;if(this._isOpenEnded()&&S==="flat"){try{P=qr({windingRule:Ee.ODD,elementType:st.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:b})}catch{P=jd}I=P.vertexCount}let E=C+2*I+v*2,R=C+2*I,D={positions:new Float32Array(E*3),normals:new Float32Array(E*3),uvs:new Float32Array(E*2)},z=[];if(_.forEach(B=>{this._extrudeRegion(B,A,u,c,D,z,this._isGeometryClosed()&&!this._isOpenEnded())}),P&&(this._closeEnd(P,C,z,D,u[0],c[0],!1),this._closeEnd(P,C+I,z,D,u[u.length-1],c[c.length-1],!0)),M){D.positions.set(M.getAttribute("position").array,R*3),D.normals.set(M.getAttribute("normal").array,R*3),D.uvs.set(M.getAttribute("uv").array,R*2);let B=z.length;z.push(...M.getIndex().array.map(H=>H+R)),R+=v,D.positions.set(M.getAttribute("position").array,R*3),D.normals.set(M.getAttribute("normal").array,R*3),D.uvs.set(M.getAttribute("uv").array,R*2);let V=z.length;z.push(...M.getIndex().array.map(H=>H+R)),this.setAttribute("position",new Se.BufferAttribute(D.positions,3)),this.setAttribute("normal",new Se.BufferAttribute(D.normals,3)),this.setAttribute("uv",new Se.BufferAttribute(D.uvs,2)),this.setIndex(z);let j=GC;j.copy(u[u.length-1]).setPosition(c[c.length-1]),this.applyMatrix4OnRange(j,R,E),j.copy(u[0]).setPosition(c[0]).multiply(zC.makeScale(1,1,-1)),this.applyMatrix4OnRange(j,R-v,R),this.reverseIndicesOnRange(B,V)}else this.setAttribute("position",new Se.BufferAttribute(D.positions,3)),this.setAttribute("normal",new Se.BufferAttribute(D.normals,3)),this.setAttribute("uv",new Se.BufferAttribute(D.uvs,2)),this.setIndex(z)}_extractPathPoints(){let r=Mc(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(r.length<2)return[];let o=[r[0]];return r.forEach(a=>{o[o.length-1].distanceToSquared(a)>.001&&o.push(a)}),this.inputs.path.isClosed&&o[o.length-1].distanceTo(o[0])<.001&&o.pop(),o}_computeBasisMatrices(e){let r=[],o=e.length,i=this.inputs.path.isClosed,a=new Se.Vector3,s=new Se.Vector3,l=new Se.Vector3,d=new Se.Vector3,c=new Se.Vector3(0,1,0);for(let y=0;y<o;y++){let g=e[y],x;y===0?x=i?e[e.length-2]:g.clone().multiplyScalar(2).sub(e[1]):x=e[y-1];let S;y===o-1?S=i?e[1]:g.clone().multiplyScalar(2).sub(e[y-1]):S=e[y+1];let w=g.clone().sub(x).normalize(),b=S.clone().sub(g).normalize(),_=w.clone().add(b).normalize();l.copy(_),y===0&&(_.equals(c)||_.clone().negate().equals(c))&&c.set(0,0,1);let A=c.clone().cross(_).normalize(),v=_.clone().cross(A).normalize();c.copy(v),d.copy(A),y===0&&(a.copy(v),s.copy(_));let M=new Se.Matrix4().makeBasis(A,v,_);r.push(M)}let u=i?s:l,p=i?a:new Se.Vector3(0,1,0),f=u.clone().cross(d).normalize(),h=Math.acos(p.dot(f));if(isNaN(h))return r;let m=p.clone().cross(f);u.dot(m)>0&&(h*=-1);for(let y=1;y<r.length;y++){let g=new Se.Matrix4().makeRotationZ(h*y/r.length);r[y].multiply(g)}return r}_applyPathModifiers(e,r,o){let i=e.length,{angle:a,twist:s,startScale:l,endScale:d}=this.inputs.parameters.extrusion,c=new Se.Matrix4,u=new Se.Matrix4;return e.forEach((p,f)=>{let h=f===0?0:f===i-1?1:(f-r)/(i-(o===0?0:1)-(r+(1-o)));c.makeRotationZ(Se.MathUtils.lerp(a,a+s,h)*Se.MathUtils.DEG2RAD);let m=Se.MathUtils.lerp(l,d,h);u.makeScale(m,m,m),p.multiply(c).multiply(u)}),e}_computeShapePoints(e=12,r=Ee.ODD){let o=this.inputs.shapeData,i=o.extractShapePointsToFlatArray([],e),a=o.shapeHoles.map(m=>{let y=m.extractShapePointsToFlatArray([],e),g=[];for(let x=y.length-1;x>=1;x-=2){let S=y[x-1],w=y[x-0];g.push(S,w)}return g}),s;try{s=qr({windingRule:r,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[i]})}catch{s=zs}let l;try{l=qr({windingRule:Ee.ODD,elementType:st.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{l=Fd}if(!s)throw new Error("error generating geometry");let d=s.elementCount;if(l){s.elementCount+=l.elementCount;for(let m=0;m<l.elements.length;m++){let y=l.elements[m],g=m%2===0?s.vertexCount:0;s.elements.push(y+g)}for(let m=0;m<l.vertexIndices.length;m++){let y=l.vertexIndices[m],g=s.vertexCount;s.vertexIndices.push(y+g)}for(let m=0;m<l.vertices.length;m++){let y=l.vertices[m];s.vertices.push(y)}}let c=1/0,u=-1/0,p=1/0,f=-1/0;for(let m=0,y=s.vertexCount;m<y;m++){let g=m*2,x=s.vertices[g+0],S=s.vertices[g+1];x<c&&(c=x),x>u&&(u=x),S<p&&(p=S),S>f&&(f=S)}let h=[];for(let m=s.elementCount-1;m>=0;m--){let y=m>=d,g=m*2,x=s.elements[g+0],S=s.elements[g+1],w=x+S,b={start:x,count:S,normals:[],isHole:y,continuous:[],verticesStart:0,verticesCount:0};h.push(b);let _=x,A=w-1,v=x+1,M=o.roundedCurves.length;do{let O=_-x,T=s.vertices[A*2+0],C=s.vertices[A*2+1],P=s.vertices[_*2+0],I=s.vertices[_*2+1],E=s.vertices[v*2+0],R=s.vertices[v*2+1],D=P-T,z=I-C,B=Math.sqrt(D*D+z*z);D/=B,z/=B;let V=P-E,j=I-R,H=Math.sqrt(V*V+j*j);V/=H,j/=H,b.normals[O*2+0]=-j,b.normals[O*2+1]=V;let X=s.vertexIndices[_];if(Array.isArray(X))b.continuous[O]=!1;else{let[$,W]=o.getCurveIndexFromVertexId(X-1,!0);if(W>0&&W<1)b.continuous[O]=!0;else{let Y=W===1?$+1:$-1;Y=(Y+M)%M;let k=W===1?0:1,q=o.roundedCurves[$].getTangent(W),U=o.roundedCurves[Y].getTangent(k);b.continuous[O]=q.dot(U)>.95}}y&&(b.normals[O*2+0]*=-1,b.normals[O*2+1]*=-1),[A,_,v]=[_,v,v+1],v>=w&&(v-=S)}while(v!==x+1)}return{regions:[i,...a],infos:h,vertices:s.vertices}}_insertVertex(e,r,o,i,a){let s=r*2,l=r*3;e.positions[l+0]=o.x,e.positions[l+1]=o.y,e.positions[l+2]=o.z,e.normals[l+0]=i.x,e.normals[l+1]=i.y,e.normals[l+2]=i.z,e.uvs[s+0]=a.x,e.uvs[s+1]=a.y}_extrudeRegion(e,r,o,i,a,s,l){let d=new Se.Vector3,c=new Se.Vector3,u=new Se.Vector3,p=new Se.Vector3,f=new Se.Vector2;o.forEach((m,y)=>{let g=i[y],x=e.verticesStart*o.length+e.verticesCount*y;for(let S=0;S<e.count;S++){let w=(e.start+S)*2;if(d.set(r[w+0],r[w+1],0),u.copy(d).applyMatrix4(m).add(g),e.continuous[S])p.set(e.normals[S*2+0],e.normals[S*2+1],0);else{let b=S===0?(e.start+e.count-1)*2:w-2;c.set(r[b+0],r[b+1],0),p.copy(d).sub(c),p.set(-p.y,p.x,0),e.isHole||p.negate()}if(p.applyMatrix4(m).normalize(),f.set(S===0?1:S/e.count,y/(o.length-1)),this._insertVertex(a,x,u,p,f),x++,!e.continuous[S]||S===0){if(S===0)p.set(e.normals[S*2+0],e.normals[S*2+1],0),f.set(0,y/(o.length-1));else{let b=S===e.count-1?e.start*2:w+2;c.set(r[b+0],r[b+1],0),p.copy(c).sub(d),p.set(-p.y,p.x,0),e.isHole||p.negate()}p.applyMatrix4(m).normalize(),this._insertVertex(a,x,u,p,f),x++}}});let h=o.length-1;for(let m=0;m<h;m++){let y=e.verticesStart*o.length+e.verticesCount*m,g=e.verticesStart*o.length+e.verticesCount*(m+1),x=0;for(let S=0;S<e.count;S++){(!e.continuous[S]||S===0)&&x++;let w=S===e.count-1?0:x+1,b=y+x,_=y+w,A=g+w,v=g+x;e.isHole?s.push(b,A,_,b,v,A):s.push(b,_,A,b,A,v),x++}}}_closeEnd(e,r,o,i,a,s,l){let d=e.vertexCount,c=new Se.Vector3(0,0,l?-1:1).applyMatrix4(a),u=new Se.Vector3,p=new Se.Vector2;for(let h=0;h<d;h++){let m=2*h;u.set(e.vertices[m+0],e.vertices[m+1],0).applyMatrix4(a).add(s),this._insertVertex(i,r+h,u,c,p)}let f=e.elements;for(let h=0;h<e.elementCount;h++){let m=3*h,y=f[m+0]+r,g=f[m+(l?1:2)]+r,x=f[m+(l?2:1)]+r;o.push(y,g,x)}}applyMatrix4OnRange(e,r,o){let i=e.elements,a=new Se.Matrix3().getNormalMatrix(e).elements,s,l,d,c,u=this.attributes.position,p=this.attributes.normal;if(!u||!p)return;let f=u.array,h=p.array,m=u.itemSize;for(let y=r*m,g=o*m;y<g;y+=m){if(y===r)debugger;s=f[y+0],l=f[y+1],d=f[y+2],c=1/(i[3]*s+i[7]*l+i[11]*d+i[15]),f[y+0]=(i[0]*s+i[4]*l+i[8]*d+i[12])*c,f[y+1]=(i[1]*s+i[5]*l+i[9]*d+i[13])*c,f[y+2]=(i[2]*s+i[6]*l+i[10]*d+i[14])*c,s=h[y+0],l=h[y+1],d=h[y+2],h[y+0]=a[0]*s+a[3]*l+a[6]*d,h[y+1]=a[1]*s+a[4]*l+a[7]*d,h[y+2]=a[2]*s+a[5]*l+a[8]*d}u.needsUpdate=!0,p.needsUpdate=!0}reverseIndicesOnRange(e,r){let o=this.index;if(o){for(let i=e;i<r;i+=3){let a=o.getX(i),s=o.getX(i+1),l=o.getX(i+2);o.setXYZ(i,l,s,a)}o.needsUpdate=!0}}};var Kn=require("three"),Wg=require("three/examples/jsm/utils/BufferGeometryUtils.js");function $g(){let n=new Kn.BufferGeometry;return n.setAttribute("position",new Kn.BufferAttribute(new Float32Array([]),3)),n.setIndex(new Kn.BufferAttribute(new Uint16Array([]),1)),n}var FC=$g().attributes,jC=12,UC=1,xa=class extends Kn.BufferGeometry{constructor(e,r){super();this.charWidths=[];this.charCoords=[];this.wrappedText=[];this.isLowResolution=!1;this.vectorShapes=[];Object.assign(this.attributes,FC),this.userData={parameters:e,type:"TextGeometry"};let o=r.getFont(e.font);o?.isLoaded?(this.font=o,this.update(e)):this.updateFont(e.font,r).then(()=>{this.update(e),r?.requestRender()})}async updateFont(e,r){let o=r.getFont(e);o&&(this.font=o,await o.loadingPromise)}update(e){let r=this.font;if(this.userData={parameters:e,type:"TextGeometry"},!r?.isLoaded){console.warn("Cannot update text because its font is not loaded");return}let{width:o,height:i,depth:a,extrudeBevelSize:s,extrudeBevelSegments:l,text:d,textTransform:c}=e,u=wc.getDisplayedValue(d),p=c===2?u.toUpperCase():c===3?u.toLowerCase():u,f=HC(e,r,p),{shapes:h,charWidths:m,charCoords:y}=r.generateShapes(f,e),g=(typeof o=="number"?o:1)*.5,x=(typeof i=="number"?i:1)*.5,S=h.map(_=>new Re().fromShape(_,!0));this.vectorShapes=S;let w=S.map(_=>dr.create({shape:_,parameters:{depth:a,extrudeBevelSegments:l,extrudeBevelSize:s,windingRule:a<=0?Ee.NONZERO:Ee.ODD,subdivisions:this.isLowResolution&&a>0?UC:jC}})),b=w.length?(0,Wg.mergeBufferGeometries)(w):$g();b.translate(-g,x,0),this.dispose(),this.wrappedText=f,this.charCoords=y,this.charWidths=m,this.deleteAttribute("extrudeNormal"),Object.entries(b.attributes).forEach(([_,A])=>{this.setAttribute(_,A)}),this.setIndex(b.index),this.computeBoundingSphere()}clone(){let e=sr(new Kn.BufferGeometry,xa.prototype);return e.copy(this),console.log("CloneGeometry",this,e),e}copy(e){return Object.entries(e.attributes).forEach(([r,o])=>{this.setAttribute(r,o)}),this.setIndex(e.index),this.userData={parameters:{...e.userData.parameters},type:"TextGeometry"},this}async setText(e){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:e})}get text(){return this.userData.parameters.text??""}};function HC(n,t,e){let r=[""],o="";for(let i of e)o+=i,i===" "||i===`
|
|
16
|
+
`?(r[r.length-1]+=o,o="",i===`
|
|
17
|
+
`&&r.push("")):t.getTextWidth(r[r.length-1]+o,n)>n.width&&(r[r.length-1].length&&r.push(""),t.getTextWidth(r[r.length-1]+o,n)>n.width&&(o.length===1?(r[r.length-1]+=o,o=""):(r[r.length-1]+=o.slice(0,-1),o=o[o.length-1],r.push(""))));return r[r.length-1]+=o,r}var Ye=require("three");var Xg,va=new Promise(n=>{Xg=n}),Yg=!1;var Hc;function Kg(){if(Yg)return;if(Hc)return Hc;async function n(){let e=!1?".":"https://unpkg.com/@splinetool/modelling-wasm@0.9.498/build",o=import("./process.js"),[i,a]=await Promise.all([o,fetch(`${e}/process.wasm`).then(d=>d.arrayBuffer())]),s=i.default,l=await s({wasmBinary:a});Xg(l),Yg=!0}return Hc=n(),Hc}var Qg=require("three");function Zn(n,t,e,r){let o,i,a;n.type==="PathGeometry"?(i=JSON.parse(JSON.stringify(n)),a=[[],["extrusion"]]):(i={...n},a=[[]]);for(let d of a){let c=i;for(let u of d)c=c[u];for(o in c){let u=c[o];sy(u)&&(c[o]=t.getVariable(u,[r.uuid,"geometry",...d,o]))}}let s={parameters:i,type:i.type};if(i.type==="PathGeometry")s.path=i.path;else if(i.type==="VectorGeometry"){let d=Re.createFromState(i.shape,i.width,i.height);s.shape=d}else if(i.type==="NonParametricGeometry")i.data.groups&&i.data.groups?.forEach(d=>d.materialIndex=Math.max(d.materialIndex??0,0)),s.geometry=new Qg.BufferGeometryLoader().parse(i);else if(i.type==="SubdivGeometry"){let d=new bt(i,e);return d.data=n,d}else if(i.type==="TextGeometry")return new xa(i,t);let l;try{l=Zd(s)}catch(d){console.error(d)}if(!l){let d=Re.createFromState(Wi.defaultData(),100,100);s.shape=d,l=Zd(s)}return l}var Zg=require("three"),qC=new Zg.Matrix4;function Us(n,t,e,r){let o=n.position.array,i=n.normal.array,a=qC.makeScale(t,e,r).invert().elements,s,l,d;for(var c=0,u=o.length;c<u;c+=3)o[c]*=t,o[c+1]*=e,o[c+2]*=r,s=i[c],l=i[c+1],d=i[c+2],i[c]=a[0]*s+a[4]*l+a[8]*d,i[c+1]=a[1]*s+a[5]*l+a[9]*d,i[c+2]=a[2]*s+a[6]*l+a[10]*d;n.position.needsUpdate=!0,n.normal.needsUpdate=!0}var qc=new Ye.Box3,ba=new Ye.Vector3,he;va.then(n=>{he=n});var Jg=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),e0=new Uint32Array([0,1,2,3]),t0=new Uint8Array([4]),bt=class extends Ye.BufferGeometry{constructor(e,r){super();this.data=e;this.flatShading=r;this.subdivPointer=0;this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(e,r){this.freeSubdivPointer();let o=this.data.scaleBaked,i=an.div(r,o);this.subdividedGeometry&&Us(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Us(this.originalGeometry.attributes,...i),this.data=e;let a=this.userData.parameters;this.userData.parameters={width:a.width*i[0],height:a.height*i[1],depth:a.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(ba.fromArray(i));let s=ba.set(a.width,a.height,a.depth).length();this.originalGeometry.boundingSphere.radius=s/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let e,r,o;try{({originalGeometry:e,subdividedGeometry:r,subdivPointer:o}=bt.build(this.data,void 0,!this.flatShading,void 0))}catch{e=new Ye.BoxGeometry(100,100,100),o=0}this.subdivPointer=o,this.originalGeometry=e,this.subdividedGeometry=r??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(bt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new Ye.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;qc.setFromBufferAttribute(r),qc.getCenter(o),e.boundingSphere.radius=o.distanceTo(qc.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),qc.getSize(ba);let i={width:ba.x,height:ba.y,depth:ba.z};return this.userData.parameters=i,i}static build(e,r,o,i){let a,s,l,d=e?.phongAngle??35;o===!1&&(d=-1),r&&(he.free_bvh(r),he.free_subdivision_surface(r));try{a=bt.allocate(e,i)}catch(c){console.error(c,e),a=bt.allocate({positionWASM:Jg,indexWASM:e0,verticesPerFaceWASM:t0},i)}if(he.set_destination_refinement_level(a,0),s=bt.buildLevel(a,!0,d),e.subdivisions>0)try{he.set_destination_refinement_level(a,e.subdivisions),l=bt.buildLevel(a,!1,d)}catch{try{he.set_destination_refinement_level(a,e.subdivisions-1),l=bt.buildLevel(a,!1,d)}catch{l=null}}else l=null;return{subdivPointer:a,originalGeometry:s,subdividedGeometry:l}}static primitiveToQuads(e,r,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||e.path!==void 0?r.geometry:Zn(e,o,!1),a;e.type==="TorusGeometry"&&e.arc===Math.PI*2?a=i.getClosedTorusIndicesForBooleanOrSubdiv():a=i.getIndex();let s,l,d,c;({positions:s,triIndices:c}=rp(i.getAttribute("position"),a));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:l,verticesPerFace:d}=op(s,c,i,u),{positions:s,indices:l,verticesPerFace:d}}static allocate(e,r){let o,i,a,s=[],l=[];e.positionWASM&&e.positionWASM.length>0?(o=e.positionWASM,i=e.indexWASM,a=e.verticesPerFaceWASM):(o=Jg,i=e0,a=t0);let d=o.length,c=i.length,u=a.length,p=o.length+s.length+l.length,f=i.length+a.length,h=p*Float32Array.BYTES_PER_ELEMENT+f*Uint32Array.BYTES_PER_ELEMENT,m=p*Float32Array.BYTES_PER_ELEMENT,y=f*Uint32Array.BYTES_PER_ELEMENT,g=he._malloc(h),x=new Float32Array(he.HEAPF32.buffer,g,p),S=new Uint32Array(he.HEAPU32.buffer,g+m,f);x.set(o,0),x.set(s,o.length),x.set(l,o.length+s.length),S.set(i,0),S.set(a,i.length);let w;e?.scaleBaked?.some(_=>_!==1)&&(w=new Ye.Matrix4().makeScale(...e.scaleBaked)),r&&(w?w.premultiply(r):w=r);let b=w?he.alloc_subdivision_surface2(g,d,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,u,w.elements):he.alloc_subdivision_surface(g,d,g+m,c,g+m+i.length*Uint32Array.BYTES_PER_ELEMENT,u);return he._free(g),b}static buildLevel(e,r,o,i,a){let s=a?he.get_mesh_data2(e,r?he.Level.CONTROL:he.Level.REFINED,o,a.elements):he.get_mesh_data(e,r?he.Level.CONTROL:he.Level.REFINED,o),l=8,d=he.HEAPU32.subarray(s>>2,(s>>2)+l),c=d.subarray(4,4+4),u=0,p=he.HEAPU32[d[u]>>2],f=he.HEAPF32.subarray(p>>2,(p>>2)+c[u]);u++;let h=he.HEAPU32[d[u]>>2],m=he.HEAPF32.subarray(h>>2,(h>>2)+c[u]);u++;let y=he.HEAPU32[d[u]>>2],g=he.HEAPU32.subarray(y>>2,(y>>2)+c[u]);u++;let x=he.HEAPU32[d[u]>>2],S=he.HEAPU32.subarray(x>>2,(x>>2)+c[u]);if(u++,i===void 0){let w=new Ye.BufferGeometry;if(w.setIndex(new Ye.Uint32BufferAttribute(S,1)),w.setAttribute("position",new Ye.Float32BufferAttribute(f,3)),w.setAttribute("normal",new Ye.Float32BufferAttribute(m,3)),r){w.setAttribute("faceMap",new Ye.Uint32BufferAttribute(g,1));let b=new Float32Array(m.length/3*4).fill(0);w.setAttribute("color",new Ye.BufferAttribute(b,4))}return he.free_mesh_data(s),w.userData.type="SubdivGeometry",w}i.getAttribute("position").copyArray(f),i.getAttribute("normal").copyArray(m),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,he.free_mesh_data(s)}static freeSubdivPointer(e){he.free_bvh(e),he.free_subdivision_surface(e)}static buildControlCageWireframe(e,r,o){let i=he.get_wireframe_data_for_base_level(e),a=4,s=he.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+2),d=0,c=he.HEAPU32[s[d]>>2],u=he.HEAPF32.subarray(c>>2,(c>>2)+l[d]);d++;let p=he.HEAPU32[s[d]>>2],f=he.HEAPU32.subarray(p>>2,(p>>2)+l[d]);if(r===void 0){let h=new Ye.BufferGeometry;h.setAttribute("position",new Ye.Float32BufferAttribute(u,3));let m=new Float32Array(u.length);for(let y=0,g=u.length;y<g;)m[y++]=o.r,m[y++]=o.g,m[y++]=o.b;return h.setAttribute("color",new Ye.BufferAttribute(m,3)),h.setIndex(new Ye.Uint32BufferAttribute(f,1)),he.free_wireframe_data_for_base_level(i),h}r.getAttribute("position").copyArray(u),r.attributes.position.needsUpdate=!0,he.free_wireframe_data_for_base_level(i)}static updateCollabMesh(e,r,o){let i=r===0;i||he.set_destination_refinement_level(e,r);let a=o?he.get_topological_data2(e,i?he.Level.CONTROL:he.Level.REFINED,o.elements):he.get_topological_data(e,i?he.Level.CONTROL:he.Level.REFINED),s=6,l=he.HEAPU32.subarray(a>>2,(a>>2)+s),d=l.subarray(3,3+3),c=0,u=he.HEAPU32[l[c]>>2],p=new Float32Array(he.HEAPF32.subarray(u>>2,(u>>2)+d[c]));c++;let f=he.HEAPU32[l[c]>>2],h=new Uint32Array(he.HEAPU32.subarray(f>>2,(f>>2)+d[c]));c++;let m=he.HEAPU32[l[c]>>2],y=new Uint8Array(he.HEAPU32.subarray(m>>2,(m>>2)+d[c]));return he.free_topological_data(a),{positions:p,indices:h,verticesPerFace:y}}};var r0=["getX","getY","getZ"];function rp(n,t){let e={},r=t?t.count:n.count,o=0,i=[],a=[],s=1e4;for(let d=0;d<r;d++){let c=t?t.getX(d):d,u="";for(let p=0;p<3;p++)u+=`${~~(n[r0[p]](c)*s)},`;if(u in e)i.push(e[u]);else{for(let p=0;p<3;p++)a.push(n[r0[p]](c));e[u]=o,i.push(o),o++}}let l=[];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]||l.push(i[d],i[d+1],i[d+2]);return{positions:a,triIndices:l}}var Wc=new Ye.Vector3,Jd=new Ye.Vector3,ep=new Ye.Vector3,tp=new Ye.Vector3;function op(n,t,e,r){let o=[],i=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let l=e.userData.shape.extractShapePointsToFlatArray([]),d=e.userData.parameters.spikes;if(e.userData.type==="EllipseGeometry"&&d<=24&&d%4===0&&e.userData.parameters.angle>=360){let p=l.length/2/d;l=l.filter((f,h)=>Math.floor(h/2)%p===0)}let c=0;for(let p=0;p<l.length;p+=2)c+=(l[p]-l[(p===0?l.length:p)-2])*(l[p+1]+l[(p===0?l.length:p)-1]);n.length=0;let u=0;if(c<0)for(let p=0;p<l.length;p+=2)n.push(l[p],l[p+1],0),o.push(u++);else for(let p=l.length-2;p>=0;p-=2)n.push(l[p],l[p+1],0),o.push(u++);return i.push(u),{indices:o,verticesPerFace:i}}let a=new Float32Array([e.userData.parameters.depth])[0],s=0;for(;s<t.length;){if(e.useNgonForTopBottomFaceDuringBake){let l=0;if((n[t[s]*3+2]===a||n[t[s]*3+2]===0)&&l++,(n[t[s+1]*3+2]===a||n[t[s+1]*3+2]===0)&&l++,(n[t[s+2]*3+2]===a||n[t[s+2]*3+2]===0)&&l++,l===3)break}if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){Wc.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),Jd.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),ep.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),tp.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),Jd.sub(Wc).normalize(),ep.sub(Wc).normalize(),tp.sub(Wc).normalize();let l=Jd.cross(ep).dot(tp);Math.abs(l)>.005||r&&r.some((d,c)=>c%2===1?!1:s>=r[c]&&s<r[c+1])?(o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3):(o.push(t[s],t[s+1],t[s+4],t[s+5]),i.push(4),s+=6)}else o.push(t[s],t[s+1],t[s+2]),i.push(3),s+=3}if(e.useNgonForTopBottomFaceDuringBake){let l=[],d=[],c=0;for(let u=0,p=0;u<n.length;u+=3,p++)n[u+2]===0&&(l.push(p),c++),n[u+2]===a&&d.push(p);if(e.userData.parameters.extrudeBevelSize===0){let u=d[0];d[0]=d[1],d[1]=u}l.reverse(),o.push(...l,...d),i.push(c,c)}return{indices:o,verticesPerFace:i}}var Mr={};Qp(Mr,{calcBoolean:()=>XC,calcBooleanTopological:()=>YC,freeMeshSet:()=>JC,getMeshSet:()=>KC,hasOpenEdges:()=>QC,transformMeshSet:()=>ZC});var WC,o0=new Promise(n=>{WC=n});var Hs=require("three");var Ce,Sa;o0.then(n=>Ce=n);function $C(n,t,e){let r,o;n.userData.parameters.type==="TorusGeometry"&&n.userData.parameters.arc===Math.PI*2?o=n.getClosedTorusIndicesForBooleanOrSubdiv():o=n.getIndex();let{positions:i,triIndices:a}=rp(n.getAttribute("position"),o),s;if(t&&e){let{indices:l,verticesPerFace:d}=op(i,a,n);s=d.length,r=[];for(let c=0,u=0;c<s;c++){r.push(d[c]);for(let p=0;p<d[c];p++)r.push(l[u++])}}else{let l=a.length;r=Array(l+l/3),s=0;for(let d=0,c=0;c<r.length;)r[c++]=3,s++,r[c++]=a[d++],r[c++]=a[d++],r[c++]=a[d++]}return{positions:i,faceIndices:r,nFaces:s}}function n0(n){let t=n.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(n[0])?e:r,i=Ce._malloc(o);return(Number.isInteger(n[0])?new Uint32Array(Ce.HEAPU32.buffer,i,t):new Float32Array(Ce.HEAPF32.buffer,i,t)).set(n,0),i}function i0(n){switch(n){case 0:return Ce.OP.UNION;case 1:return Ce.OP.INTERSECTION;case 2:return Ce.OP.A_MINUS_B;case 3:return Ce.OP.B_MINUS_A;case 4:return Ce.OP.SYMMETRIC_DIFFERENCE;case 5:return Ce.OP.ALL;default:throw new Error("Unknown boolean operation "+n)}}function YC(n,t){Sa===void 0&&(Sa=Ce.init_csg());let e=n0(n),r=Ce.csg_calc_topological(Sa,e,n.length,i0(t));Ce._free(e);let o=6,i=Ce.HEAPU32.subarray(r>>2,(r>>2)+o),a=i.subarray(3,3+3),s=0,l=Ce.HEAPU32[i[s]>>2],d=new Float32Array(Ce.HEAPF32.subarray(l>>2,(l>>2)+a[s]));s++;let c=Ce.HEAPU32[i[s]>>2],u=new Uint32Array(Ce.HEAPU32.subarray(c>>2,(c>>2)+a[s]));s++;let p=Ce.HEAPU32[i[s]>>2],f=new Uint8Array(Ce.HEAPU32.subarray(p>>2,(p>>2)+a[s]));return Ce.free_mesh_data(r),{positions:d,indices:u,verticesPerFace:f}}function XC(n,t,e,r){Sa===void 0&&(Sa=Ce.init_csg());let o=n0(n),i=Ce.csg_calc(Sa,o,n.length,r,i0(t));Ce._free(o);let a=5,s=Ce.HEAPU32.subarray(i>>2,(i>>2)+a),l=s.subarray(2,2+3),d=0,c=Ce.HEAPU32[s[d]>>2],u=Ce.HEAPF32.subarray(c>>2,(c>>2)+l[d]);d++;let p=Ce.HEAPU32[s[d]>>2],f=Ce.HEAPF32.subarray(p>>2,(p>>2)+l[d]);d++;let h=l[d];e.setAttribute("position",new Hs.Float32BufferAttribute(u,3)),e.setAttribute("normal",new Hs.Float32BufferAttribute(f,3));let m=Ce.HEAPF32.subarray((i>>2)+5,(i>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Hs.Sphere),e.boundingSphere.radius=-1,e.userData.parameters={width:m[3]*2,height:m[4]*2,depth:m[5]*2},Ce.free_mesh_data(i),h}function KC(n,t,e){if(Ce===void 0)return-1;let r,o,i;if(t&&n.userData.positions!==void 0){let y=n.userData;i=y.verticesPerFace.length,r=y.positions,o=Array(y.verticesPerFace.reduce((g,x)=>g+x,0)+i);for(let g=0,x=0,S=0;g<y.verticesPerFace.length;g++){o[S++]=y.verticesPerFace[g];for(let w=0;w<y.verticesPerFace[g];w++)o[S++]=y.indices[x++]}}else({positions:r,faceIndices:o,nFaces:i}=$C(n,t,e));let a=r.length,s=o.length,l=r.length,d=o.length,c=l*Float32Array.BYTES_PER_ELEMENT+d*Uint32Array.BYTES_PER_ELEMENT,u=l*Float32Array.BYTES_PER_ELEMENT,p=d*Uint32Array.BYTES_PER_ELEMENT,f=Ce._malloc(c),h=new Float32Array(Ce.HEAPF32.buffer,f,l),m=new Uint32Array(Ce.HEAPU32.buffer,f+u,d);return h.set(r,0),m.set(o,0),Ce.get_csg_mesh(f,a,f+u,s,i)}function QC(n){return Ce.has_open_edges(n)}function ZC(n,t){Ce.transform_csg_mesh(n,t.elements)}function JC(n){Ce.free_csg_mesh(n)}var eP={ConeGeometry:$y,CubeGeometry:Yy,CylinderGeometry:Wy,DodecahedronGeometry:Ky,EllipseGeometry:ha,HelixGeometry:Tg,IcosahedronGeometry:Pg,LatheGeometry:Og,NonParametricGeometry:Eg,PolygonGeometry:Fc,PyramidGeometry:Dg,RectangleGeometry:jc,SphereGeometry:Lg,PlaneGeometry:Rg,BackdropGeometry:Vg,StarGeometry:Uc,TextFrameGeometry:zg,TorusGeometry:kg,TorusKnotGeometry:jg,TriangleGeometry:Ug,PathGeometry:qg,VectorGeometry:dr},Zd=n=>eP[n.type].create(n);function wa(n){return n!==null&&"booleanOp"in n}var _a=class extends aa($c.Mesh){constructor(){super(...arguments);this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new $c.Matrix4}updateVisible(e){super.updateVisible(e),this.visible=!wa(this.parent)&&this.visible,wa(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Mr.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),wa(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)e instanceof _a&&(e.freeBooleanPointer(),wa(e)&&e.invalidateUpstreamBooleanData())}updateTransformState(e,r){let o=super.updateTransformState(e,r);return o&&wa(this.parent)&&this.invalidateDownstreamBooleanData(!0),o}onVariableUpdate(e=!1){super.onVariableUpdate(e),wa(this.parent)&&this.invalidateDownstreamBooleanData(!0)}};var Yc=new Aa.Box3;function qs(n,t=0,e=n.count,r,o){let i=1/0,a=1/0,s=1/0,l=-1/0,d=-1/0,c=-1/0;for(let u=t;u<e;u++){let p=n.getX(u),f=n.getY(u),h=n.getZ(u);p<i&&(i=p),f<a&&(a=f),h<s&&(s=h),p>l&&(l=p),f>d&&(d=f),h>c&&(c=h)}Yc.min.set(i,a,s),Yc.max.set(l,d,c),Yc.getCenter(r),Yc.getSize(o).multiplyScalar(.5)}var tP=new Aa.BufferGeometry,rP=new Aa.MeshBasicMaterial,Ut=class extends _a{constructor(t,e){super(tP,rP),this.super_Entity(t,e)}updateState(t,e){this.updateState_Entity(t,e)}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?qs(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var qo=require("three");var Cr=require("three");var O0=require("three");var Kr=require("three");var Ws=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var a0=require("three"),Rt=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=a0.MathUtils.generateUUID(),this.type=t,this.name=""}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,a){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof Rt&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}};var np=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},Pt=new np;var ip=require("three");var s0=require("three"),se=class extends Rt{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,i){if(r=r??this.getType(e),this.getShared(e,r)){let a=this.getUnique(e,r);a&&this.uuid===void 0&&(this.uuid=s0.MathUtils.generateUUID()),o=e.getUUID(o??this.getUUID(),!a);let s=e.getNodeData(o),l=s.output||this.getType(e);if(e.analyzing)return(s.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,s,r),this.generate(e,r,o)):super.build(e,r,o);if(a)return s.name=s.name||super.build(e,r,o),s.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||s.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let d=this.getTemp(e,o);if(d)return e.format(d,l,r);{d=super.generate(e,r,o,s.output,i);let c=this.generate(e,l,o);return e.addNodeCode(d+" = "+c+";"),e.format(d,l,r)}}return super.build(e,r,o)}getShared(e,r){return r!=="sampler2D"&&r!=="samplerCube"&&this.shared}getUnique(e,r){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let r=this.uuid;return typeof this.scope=="string"&&(r=this.scope+"-"+r),r}getTemp(e,r){r=r||this.uuid;let o=e.getVars()[r];return o?o.name:void 0}generate(e,r,o,i,a){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,i??this.getType(e),a,this.getLabel()).name}};var Ue=class extends se{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}};var lt=class extends Ue{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof ip.Vector2?e:new ip.Vector2(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,a,s){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}};var ap=require("three");var Ht=class extends Ue{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof ap.Vector3?e:new ap.Vector3(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}};var l0=require("three"),Ot=class extends l0.Color{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(e,r="srgb"){let o;if(e==="transparent")return this.setRGBA(0,0,0,0),this;if(o=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(e)){let i,a=o[1],s=o[2];switch(a){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="rgba"?parseFloat(i[4]):1,super.setStyle(e,r);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.a=a==="hsla"?parseFloat(i[4]):1,super.setStyle(e,r);break}}return super.setStyle(e,r)}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 pr=class extends Ue{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Ot?e:new Ot(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,a,s){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}};var oP=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,c0=/[a-z_0-9]+/gi,K=class extends se{constructor(e,r,o,i,a){super(a);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=a===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,a){let s,l=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 c=[];for(;s=c0.exec(this.src);)c.push(s);for(let u=0;u<c.length;u++){let p=c[u],f=p[0],h=this.isMethod?!this.getInputByName(f):!0,m=f;if(this.keywords[f]||this.useKeywords&&h&&Pt.containsKeyword(f)){let y=this.keywords[f];if(!y){let g=Pt.getKeywordData(f);g.cache&&(y=e.keywords[f]),y=y||Pt.getKeyword(f,e),g.cache&&(e.keywords[f]=y)}m=y.build(e)}f!==m&&d[p.index+l-1]!=="."&&(d=d.substring(0,p.index+l)+m+d.substring(p.index+f.length+l),l+=m.length-f.length),this.getIncludeByName(m)===void 0&&Pt.contains(m)&&e.include(Pt.get(m))}return r==="source"?d:this.isMethod?(this.isInterface||e.include(this,void 0,d),this.name):e.format("( "+d+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=i??{},this.isMethod){let a=oP.exec(this.src);if(this.inputs=[],a&&a.length==4){this.type=a[1],this.name=a[2];let s=a[3].match(c0);if(s){let l=0;for(;l<s.length;){let d=s[l++],c;d==="in"||d==="out"||d==="inout"?c=s[l++]:(c=d,d="");let u=s[l++];this.inputs.push({name:u,type:c,qualifier:d})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var nP=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,sp=class extends se{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||sp.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,a){this.src=e||"";let s,l,d="",c=nP.exec(e);this.useDefine=a??this.src.charAt(0)==="#",c&&c.length>1?(l=c[1],s=c[2],d=c[3]):(s=this.src,l="f"),this.name=s,this.type=l,this.value=d}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,a){return e.format(this.name,this.getType(e),r)}},Be=sp;Be.PI="PI",Be.PI2="PI2",Be.RECIPROCAL_PI="RECIPROCAL_PI",Be.RECIPROCAL_PI2="RECIPROCAL_PI2",Be.LOG2="LOG2",Be.EPSILON="EPSILON";var iP=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
18
|
+
)*?)}`,"gim"),aP=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),Ta=class extends se{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,a){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=iP.exec(e);if(r){let o=r[2],i;for(;i=aP.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Ca=class extends se{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",i=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(i,this.getType(e),r)}};Pt.addKeyword("uv",function(){return new Ca});Pt.addKeyword("uv2",function(){return new Ca(1)});var Xc=require("three");var Jn=class extends se{constructor(e,r){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=r??Jn.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case Xc.LinearEncoding:return["Linear"];case Xc.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),i=this.getType(e),a=Jn.Nodes[this.method],s=e.include(a);if(s===Jn.LINEAR_TO_LINEAR)return e.format(o,i,r);if(a.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(s+"( "+o+", "+l+" )",i,r)}else return e.format(s+"( "+o+" )",i,r)}fromEncoding(e){let r=Jn.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=Jn.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}},tr=Jn;tr.Nodes={LinearToLinear:new K(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
19
|
+
`)),sRGBToLinear:new K(["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(`
|
|
20
|
+
`)),LinearTosRGB:new K(["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(`
|
|
21
|
+
`))},tr.LINEAR_TO_LINEAR="LinearToLinear",tr.SRGB_TO_LINEAR="sRGBToLinear",tr.LINEAR_TO_SRGB="LinearTosRGB";var Ge=class extends K{constructor(e="",r,o,i,a){super(e,a,i,o,r);this.nodeType="Expression"}};var u0=require("three"),rr=class extends Ue{constructor(e=new u0.Texture,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r??new Ca,this.bias=o,this.project=i!==void 0?i:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s,l;this.project?s="texture2DProj":s=a?"tex2DBias":"tex2D",a?l=s+"( "+o+", "+i+", "+a+" )":l=s+"( "+o+", "+i+" )";let d={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(d),this.colorSpace=this.colorSpace??new tr(new Ge("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,c),e.removeContext(),e.format(l,c,r)}};var J=class extends Ue{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,i,a,s){return e.format(this.value+(this.value%1?"":".0"),i,r)}};var $s=class extends se{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,a){i=this.getType(e);let s=this.value,l=s.build(e,r)+"( ",d=[];if(s.inputs){for(let c=0;c<s.inputs.length;c++){let u=s.inputs[c],p=this.inputs[c]||this.inputs[u.name];d.push(p.build(e,e.getTypeByFormat(u.type)))}l+=d.join(", ")+" )"}return e.format(l,i,r)}};var lp=class extends se{constructor(e,r,o=lp.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),a=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+a+" )",o,r)}},Vt=lp;Vt.ADD="+",Vt.SUB="-",Vt.MUL="*",Vt.DIV="/";var He=class extends se{constructor(e,r=He.ABS,o,i){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:i=r,typeof o!="string"?this.c=o:i=o,this.method=i,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case He.MIX:case He.CLAMP:case He.REFRACT:case He.SMOOTHSTEP:case He.FACEFORWARD:return 3;case He.MIN:case He.MAX:case He.MOD:case He.STEP:case He.REFLECT:case He.DISTANCE:case He.DOT:case He.CROSS:case He.POW:return 2;default:return 1}}getInputType(e){let r=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,i=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>i?this.a.getType(e):o>i?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case He.LENGTH:case He.DISTANCE:case He.DOT:return"f";case He.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,a,s=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,d=this.c?e.getTypeLength(this.c.getType(e)):0,c=this.getInputType(e),u=this.getType(e);switch(this.type=u,this.method){case He.NEGATE:return e.format("( -"+this.a.build(e,c)+" )",c,r);case He.INVERT:return e.format("( 1.0 - "+this.a.build(e,c)+" )",c,r);case He.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case He.STEP:o=this.a.build(e,s===1?"f":c),i=this.b.build(e,c);break;case He.MIN:case He.MAX:case He.MOD:o=this.a.build(e,c),i=this.b.build(e,l===1?"f":c);break;case He.REFRACT:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,"f");break;case He.MIX:o=this.a.build(e,c),i=this.b.build(e,c),a=this.c.build(e,d===1?"f":c);break;default:o=this.a.build(e,c),this.b&&(i=this.b.build(e,c)),this.c&&(a=this.c.build(e,c));break}let p=[];p.push(o),i&&p.push(i),a&&p.push(a);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,r)}},be=He;be.RAD="radians",be.DEG="degrees",be.EXP="exp",be.EXP2="exp2",be.LOG="log",be.LOG2="log2",be.SQRT="sqrt",be.INV_SQRT="inversesqrt",be.FLOOR="floor",be.CEIL="ceil",be.NORMALIZE="normalize",be.FRACT="fract",be.SATURATE="saturate",be.SIN="sin",be.COS="cos",be.TAN="tan",be.ASIN="asin",be.ACOS="acos",be.ARCTAN="atan",be.ABS="abs",be.SIGN="sign",be.LENGTH="length",be.NEGATE="negate",be.INVERT="invert",be.MIN="min",be.MAX="max",be.MOD="mod",be.STEP="step",be.REFLECT="reflect",be.DISTANCE="distance",be.DOT="dot",be.CROSS="cross",be.POW="pow",be.MIX="mix",be.CLAMP="clamp",be.REFRACT="refract",be.SMOOTHSTEP="smoothstep",be.FACEFORWARD="faceforward";var Pa=class extends se{constructor(e,r,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){let a=new $s(Pa.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=this.colorSpaceTL??new tr(new Ge("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(a.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new tr(new Ge("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(a.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new tr(new Ge("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(a.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new tr(new Ge("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(a.build(e)+".br");let s={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(s),this.colorSpaceTLExp=new Ge(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ge(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ge(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ge(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ge("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=a,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,a=new $s(Pa.Nodes.roughnessToMip,[i]),s=new be(a,Pa.Nodes.m0,Pa.Nodes.cubeUV_maxMipLevel,be.CLAMP),l=new be(s,be.FLOOR),d=new be(s,be.FRACT),c=this.bilinearCubeUV(e,this.value,o,l),u=this.bilinearCubeUV(e,this.value,o,new Vt(l,new J(1).setReadonly(!0),Vt.ADD)),p=new be(c,u,d,be.MIX);return e.format(p.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}},Oa=Pa;Oa.Nodes=function(){let e=new Ta(`struct TextureCubeUVData {
|
|
8
22
|
vec4 tl;
|
|
9
23
|
vec4 tr;
|
|
10
24
|
vec4 br;
|
|
11
25
|
vec4 bl;
|
|
12
26
|
vec2 f;
|
|
13
|
-
}`),
|
|
27
|
+
}`),r=new Be("float cubeUV_maxMipLevel 8.0",!0),o=new Be("float cubeUV_minMipLevel 4.0",!0),i=new Be("float cubeUV_maxTileSize 256.0",!0),a=new Be("float cubeUV_minTileSize 16.0",!0),s=new K(`float getFace(vec3 direction) {
|
|
14
28
|
vec3 absDirection = abs(direction);
|
|
15
29
|
float face = -1.0;
|
|
16
30
|
if (absDirection.x > absDirection.z) {
|
|
@@ -25,7 +39,7 @@
|
|
|
25
39
|
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
26
40
|
}
|
|
27
41
|
return face;
|
|
28
|
-
}`);s.useKeywords=!1;let
|
|
42
|
+
}`);s.useKeywords=!1;let l=new K(`vec2 getUV(vec3 direction, float face) {
|
|
29
43
|
vec2 uv;
|
|
30
44
|
if (face == 0.0) {
|
|
31
45
|
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
@@ -41,7 +55,7 @@
|
|
|
41
55
|
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
42
56
|
}
|
|
43
57
|
return 0.5 * (uv + 1.0);
|
|
44
|
-
}`);
|
|
58
|
+
}`);l.useKeywords=!1;let d=new K(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
45
59
|
float face = getFace(direction);
|
|
46
60
|
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
47
61
|
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
@@ -69,7 +83,7 @@
|
|
|
69
83
|
uv.x -= texelSize;
|
|
70
84
|
vec4 bl = texture2D(envMap, uv);
|
|
71
85
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
72
|
-
}`,[e,s,
|
|
86
|
+
}`,[e,s,l,r,o,i,a]);d.useKeywords=!1;let c=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),h=new Be("float v1 0.276",!0),m=new Be("float m1 -1.0",!0),y=new Be("float r4 0.4",!0),g=new Be("float v4 0.046",!0),x=new Be("float m4 2.0",!0),S=new Be("float r5 0.305",!0),w=new Be("float v5 0.016",!0),b=new Be("float m5 3.0",!0),_=new Be("float r6 0.21",!0),A=new Be("float v6 0.0038",!0),v=new Be("float m6 4.0",!0),M=[c,u,p,f,h,m,y,g,x,S,w,b,_,A,v],O=new K(`float roughnessToMip(float roughness) {
|
|
73
87
|
float mip = 0.0;
|
|
74
88
|
if (roughness >= r1) {
|
|
75
89
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -83,7 +97,7 @@
|
|
|
83
97
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
84
98
|
}
|
|
85
99
|
return mip;
|
|
86
|
-
}`,
|
|
100
|
+
}`,M);return{bilinearCubeUV:d,roughnessToMip:O,m0:p,cubeUV_maxMipLevel:r}}();var ei=class extends se{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??ei.VIEW}getShared(){return this.scope===ei.WORLD}build(e,r,o,i){let a=e.context[this.scope+"Normal"];return a?a.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,a){let s;switch(this.scope){case ei.VIEW:e.isShader("vertex")?s="transformedNormal":s="geometryNormal";break;case ei.LOCAL:e.isShader("vertex")?s="objectNormal":(e.requires.normal=!0,s="vObjectNormal");break;case ei.WORLD:e.isShader("vertex")?s="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,s="vWNormal");break}return e.format(s,this.getType(e),r)}},Gt=ei;Gt.LOCAL="local",Gt.WORLD="world",Gt.VIEW="view",Gt.NORMAL="normal";Pt.addKeyword("viewNormal",function(){return new Gt(Gt.VIEW)});Pt.addKeyword("localNormal",function(){return new Gt(Gt.NORMAL)});Pt.addKeyword("worldNormal",function(){return new Gt(Gt.WORLD)});var go=class extends se{constructor(e){super("v3");this.nodeType="Position";this.scope=e??go.LOCAL}getType(){switch(this.scope){case go.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case go.LOCAL:case go.WORLD:return!1}return!0}generate(e,r,o,i,a){let s;switch(this.scope){case go.LOCAL:e.isShader("vertex")?s="transformed":(e.requires.position=!0,s="vPosition");break;case go.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,s="vWPosition";break;case go.VIEW:s=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case go.PROJECTION:s=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(s,this.getType(),r)}},fr=go;fr.LOCAL="local",fr.WORLD="world",fr.VIEW="view",fr.PROJECTION="projection";Pt.addKeyword("position",function(){return new fr});Pt.addKeyword("worldPosition",function(){return new fr(fr.WORLD)});Pt.addKeyword("viewPosition",function(){return new fr(fr.VIEW)});var Xr=class extends se{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Xr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Xr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case Xr.VECTOR:{let a=new Gt(Gt.VIEW),s=e.context.roughness,l=a.build(e,"v3"),d=new fr(fr.VIEW).build(e,"v3"),c=s?s.build(e,"f"):void 0,u=`reflect( -normalize( ${d} ), ${l} )`;c&&(u=`normalize( mix( ${u}, ${l}, ${c} * ${c} ) )`);let p=`inverseTransformDirection( ${u}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),i="reflectVec"):i=p;break}case Xr.CUBE:{let a=new Xr(Xr.VECTOR).build(e,"v3"),s="vec3( -"+a+".x, "+a+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${s};`),i="reflectCubeVec"):i=s;break}case Xr.SPHERE:{let s="normalize( ( viewMatrix * vec4( "+new Xr(Xr.VECTOR).build(e,"v3")+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${s};`),i="reflectSphereVec"):i=s;break}}return e.format(i,this.getType(),r)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,r)}},xo=Xr;xo.CUBE="cube",xo.SPHERE="sphere",xo.VECTOR="vector";var Kc=class extends se{constructor(e=new rr,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new Oa(this.value,r??new xo(xo.VECTOR),o),this.irradianceNode=new Oa(this.value,new Gt(Gt.WORLD),new J(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}};var d0=require("three");var Qc=class extends Ue{constructor(e=new d0.CubeTexture,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new xo,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv?.build(e,"v3"),a=this.bias?this.bias.build(e,"f"):void 0;a===void 0&&e.context.bias&&(a=e.context.bias.setTexture(this).build(e,"f"));let s;a?s="texCubeBias( "+o+", "+i+", "+a+" )":s="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},d=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new tr(new Ge("",d)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(s),s=this.colorSpace.build(e,d),e.removeContext(),e.format(s,d,r)}};var p0=`
|
|
87
101
|
uniform int frameIndex;
|
|
88
102
|
uniform vec2 resolution;
|
|
89
103
|
uniform mat4 previousModelViewMatrix;
|
|
@@ -91,7 +105,7 @@ uniform mat4 previousProjectionMatrix;
|
|
|
91
105
|
|
|
92
106
|
varying vec4 vCurrentPosition;
|
|
93
107
|
varying vec4 vPreviousPosition;
|
|
94
|
-
`,
|
|
108
|
+
`,f0=`
|
|
95
109
|
layout(location = 1) out vec4 gVelocity;
|
|
96
110
|
|
|
97
111
|
uniform int frameIndex;
|
|
@@ -133,7 +147,7 @@ float getNoiseInterleavedGradient(vec2 screenPos) {
|
|
|
133
147
|
return fract(magic.z * fract(dot(screenPos, magic.xy)));
|
|
134
148
|
}
|
|
135
149
|
|
|
136
|
-
`,
|
|
150
|
+
`,h0=`
|
|
137
151
|
// TODO: This could be generated CPU side and passed to the shader every frame
|
|
138
152
|
const vec2 haltonSequence[16] = vec2[16](
|
|
139
153
|
vec2( 0.000000,-0.333334),
|
|
@@ -170,7 +184,7 @@ vPreviousPosition.xy += OUTLINE_COMPENSATION;
|
|
|
170
184
|
#endif
|
|
171
185
|
gl_Position = currentPositionJittered;
|
|
172
186
|
|
|
173
|
-
`,
|
|
187
|
+
`,m0=`
|
|
174
188
|
vec2 oldPos = vPreviousPosition.xy;
|
|
175
189
|
oldPos /= vPreviousPosition.w;
|
|
176
190
|
oldPos.xy = (oldPos.xy+1.)/2.0;
|
|
@@ -185,7 +199,7 @@ vec2 velocity = (newPos - oldPos);
|
|
|
185
199
|
if (gl_FragColor.a <= 0.0) discard;
|
|
186
200
|
|
|
187
201
|
gVelocity = vec4(velocity, 0.0, 1.0);
|
|
188
|
-
`;var
|
|
202
|
+
`;var y0=["x","y","z","w"],sP=["float","vec2","vec3","vec4"],lP={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},cP={t:"sampler2D",tc:"samplerCube",b:"bool",i:"int",f:"float",c:"vec3",v2:"vec2",v3:"vec3",v4:"vec4",m3:"mat3",m4:"mat4","f[]":"float[]","v4[]":"vec4[]"},Zc=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.needsJitter=!0;this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let a="";i=i.sort(t);for(let s=0;s<i.length;s++)i[s].src&&(a+=i[s].src+`
|
|
189
203
|
`);return a}}();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",`
|
|
190
204
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
191
205
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -223,20 +237,20 @@ gVelocity = vec4(velocity, 0.0, 1.0);
|
|
|
223
237
|
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
224
238
|
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
225
239
|
}`,""].join(`
|
|
226
|
-
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(
|
|
227
|
-
`}addVertexNodeCode(
|
|
228
|
-
`}clearNodeCode(
|
|
229
|
-
`}addVertexParsCode(
|
|
230
|
-
`}addVaryCode(
|
|
231
|
-
`)}getVarListCode(
|
|
232
|
-
`:
|
|
233
|
-
`}return
|
|
240
|
+
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.addVertexParsCode(p0),this.addFragmentParsCode(f0),this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this.needsJitter&&(this.addVertexFinalCode(h0),this.addFragmentFinalCode(m0)),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.defines={},this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
|
|
241
|
+
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
242
|
+
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
243
|
+
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
244
|
+
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",a=""){let s=this.getVars(o),l=s[t];if(!l){let d=s.length;l={name:r||"node"+i+d+(a?"_"+a:""),type:e},s.push(l),s[t]=l}return l}getTempVar(t,e,r,o){return this.getVar(t,e,r,this.shader,"T",o)}getAttribute(t,e){if(!this.attributes[t]){let r=this.getVar(t,e);this.addVertexParsCode("attribute "+e+" "+t+";"),this.addVertexFinalCode(r.name+" = "+t+";"),this.attributes[t]={varying:r,name:t,type:e}}return this.attributes[t]}getCode(t){return[this.prefixCode,this.parsCode[t],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[t],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[t],"uniform"),this.getIncludesCode("consts",t),this.getIncludesCode("structs",t),this.getIncludesCode("functions",t),"void main() {",this.getVarListCode(this.getVars(t)),this.code[t],this.resultCode[t],this.finalCode[t],"}"].join(`
|
|
245
|
+
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,i=t.length;o<i;++o){let a=t[o],s=a.type,l=a.name,d=a.size,c=this.getFormatByType(s);if(c===void 0)throw new Error("Node pars "+c+" not found.");c.includes("[]")?r+=e+" "+c.substring(0,c.length-2)+" "+l+`[${d}];
|
|
246
|
+
`:r+=e+" "+c+" "+l+`;
|
|
247
|
+
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof Rt?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,a){if(e.includes("[]")){let s=this.inputs.arrayUniforms,l=s.list.length,d=new Ws({type:e,size:r.size,name:o||"nodeUA"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(d),s[t].push(d),s[t][d.name]=d,this.uniforms[d.name]=d,d}else{let s=this.inputs.uniforms,l=s.list.length,d=new Ws({type:e,name:o||"nodeU"+l+(a?"_"+a:""),node:r,needsUpdate:i});return s.list.push(d),s[t].push(d),s[t][d.name]=d,this.uniforms[d.name]=d,d}}createVertexUniform(t,e,r,o,i){return this.createUniform("vertex",t,e,r,o,i)}createFragmentUniform(t,e,r,o,i){return this.createUniform("fragment",t,e,r,o,i)}include(t,e,r){let o;if(t=typeof t=="string"?Pt.get(t):t,this.context.include===!1)return t.name;t instanceof K?o=this.includes.functions:t instanceof Be?o=this.includes.consts:t instanceof Ta&&(o=this.includes.structs);let i=o[this.shader]=o[this.shader]||[];if(t){let a=i[t.name];if(a||(a=i[t.name]={node:t,deps:[]},i.push(a),a.src=t.build(this,"source")),t instanceof K&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),t.includes?.length)){let s=0;do this.include(t.includes[s++],e);while(s<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return sP[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case Kr.CubeReflectionMapping:case Kr.CubeRefractionMapping:return new Qc(r);case Kr.CubeUVReflectionMapping:return new Kc(new rr(r));default:return new rr(r)}else{if(r.isVector2)return new lt(r);if(r.isVector3)return new Ht(r);if(r.isVector4)return new pr(r)}}}}format(t,e,r){switch(this.colorToVector(r+" <- "+e)){case"f <- v2":return t+".x";case"f <- v3":return t+".x";case"f <- v4":return t+".x";case"f <- i":case"f <- b":return"float( "+t+" )";case"v2 <- f":return"vec2( "+t+" )";case"v2 <- v3":return t+".xy";case"v2 <- v4":return t+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+t+" ) )";case"v3 <- f":return"vec3( "+t+" )";case"v3 <- v2":return"vec3( "+t+", 0.0 )";case"v3 <- v4":return t+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+t+" ) )";case"v4 <- f":return"vec4( "+t+" )";case"v4 <- v2":return"vec4( "+t+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+t+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+t+" ) )";case"i <- f":case"i <- b":return"int( "+t+" )";case"i <- v2":return"int( "+t+".x )";case"i <- v3":return"int( "+t+".x )";case"i <- v4":return"int( "+t+".x )";case"b <- f":return"( "+t+" != 0.0 )";case"b <- v2":return"( "+t+" != vec2( 0.0 ) )";case"b <- v3":return"( "+t+" != vec3( 0.0 ) )";case"b <- v4":return"( "+t+" != vec4( 0.0 ) )";case"b <- i":return"( "+t+" != 0 )"}return t}getTypeByFormat(t){return lP[t]||t}getFormatByType(t){return cP[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return y0[t]}getIndexByElement(t){return y0.indexOf(t)}isShader(t){return this.shader===t}setShader(t){return this.shader=t,this}mergeDefines(t){for(let e in t)this.defines[e]=t[e];return this.defines}mergeUniform(t){for(let e in t)this.uniforms[e]=t[e];return this.uniforms}getTextureEncodingFromMap(t){let e;return t?t.isTexture&&(e=t.encoding):e=Kr.LinearEncoding,e===Kr.LinearEncoding&&this.context.gamma&&(e=Kr.sRGBEncoding),e}};var qe=require("three");var ke=class extends Ue{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Ot?e:new Ot(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,a,s){o=e.getUUID(o??this.getUUID()),i=i??this.getType(e);let l=e.getNodeData(o),d=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let c=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${c};`)}return d?this.generateReadonly(e,r,o,i,a,s):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,a,s,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,a,s,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,a,s){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};var Pe=class extends Ue{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,i,a,s){return e.format(this.value.toString(),i,r)}};var tu=require("three");var ht=class extends Ue{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}};var Qr=class extends Ue{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}};var g0=require("three");var An=class extends Ue{};var Jc=class extends An{constructor(e){super("v3");this.image=e;this._value=new g0.Vector3}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 ti=class extends An{constructor(e,r){super("t");this.image=e;this.wrap=r}get value(){return this.image.getTexture(this.wrap)}};var x0=require("three");var Ma=class extends Ue{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new x0.Matrix3}generateReadonly(e,r,o,i,a,s){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var v0=require("three");var qt=class extends Ue{constructor(e){super("m4");this.nodeType="Matrix4";this.value=e??new v0.Matrix4}generateReadonly(e,r,o,i,a,s){return e.format("mat4("+this.value.elements.join(", ")+")",i,r)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var S0=require("three");function b0(n,t,e){n.setUvTransform(e[0],e[1],t[0],t[1],0,0,0)}var eu=class extends Ma{constructor(e,r){super(new S0.Matrix3);this.repeat=e;this.offset=r;b0(this.value,e,r)}updateMatrix(){b0(this.value,this.repeat,this.offset)}};var cp=require("three");var Zr=class extends Ue{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof cp.Vector4?new Array(e).fill(r):new Array(e).fill(new cp.Vector4(0))}};var Ia=class extends se{constructor(e,r,o,i){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=i}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var up=class extends se{constructor(e,r){super("v3");this.nodeType="CustomColor";this.color=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(up.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),r)}else return console.warn("CustomColorNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ri=up;ri.Nodes=function(){return{customColor:new K(`vec3 customColor(vec3 color, float mask, float alpha, out float calpha) {
|
|
234
248
|
float lalpha = alpha * mask;
|
|
235
249
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
236
250
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
237
251
|
|
|
238
252
|
return color;
|
|
239
|
-
}`)}}();var
|
|
253
|
+
}`)}}();var dp=class extends se{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){let o=e.include(dp.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),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Na=dp;Na.Nodes=function(){return{customNormal:new K(`vec3 customNormal(vec3 cnormal, vec3 norm, float mask, float alpha, out float calpha) {
|
|
240
254
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
241
255
|
normal *= step( vec3(0.5), cnormal );
|
|
242
256
|
|
|
@@ -245,9 +259,9 @@ gVelocity = vec4(velocity, 0.0, 1.0);
|
|
|
245
259
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
246
260
|
|
|
247
261
|
return normal;
|
|
248
|
-
}`)}}();var
|
|
262
|
+
}`)}}();var Ea=class extends se{constructor(e,r,o,i,a,s,l,d,c,u,p,f){super("v3");this.nodeType="CustomTexture";this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=a,this.side=s,this.size=l,this.blending=d,this.mat=c,this.isMask=f,this.alpha=u,this.mode=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,i;switch(this.projection.value){case 3:i=e.include(Ea.Nodes.cylindrical);break;case 2:i=e.include(Ea.Nodes.spherical);break;case 1:let s=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=["zy","xz","xy"][this.axis.value],d=new K(`
|
|
249
263
|
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, out vec2 writeUv) {
|
|
250
|
-
vec2 projected = (1. + (position.${
|
|
264
|
+
vec2 projected = (1. + (position.${l})) / 2.;
|
|
251
265
|
vec2 uvs = ( mat * vec3( (projected * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
252
266
|
writeUv = uvs;
|
|
253
267
|
|
|
@@ -255,7 +269,7 @@ gVelocity = vec4(velocity, 0.0, 1.0);
|
|
|
255
269
|
|
|
256
270
|
vec3 col = tmp.rgb;
|
|
257
271
|
float lalpha = alpha * tmp.a;
|
|
258
|
-
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal,
|
|
272
|
+
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, ${s}));`}
|
|
259
273
|
|
|
260
274
|
if ( crop > 0.5 ) {
|
|
261
275
|
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
@@ -269,7 +283,7 @@ gVelocity = vec4(velocity, 0.0, 1.0);
|
|
|
269
283
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
270
284
|
|
|
271
285
|
return col;
|
|
272
|
-
}`);i=e.include(
|
|
286
|
+
}`);i=e.include(d);break;case 4:i=e.include(Ea.Nodes.triplanar);break;default:i=e.include(Ea.Nodes.uv);break}e.addFragmentVariable(this.calpha,"float");let a=[];if(a.push("normal"),a.push(this.texture.generate(e,"t")),a.push(this.textureSize.build(e,"v2")),a.push(this.crop.build(e,"f")),a.push(this.mat.build(e,"mat3")),a.push(this.size.build(e,"v2")),a.push(this.blending.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),this.projection.value===4){let s=`${o}_writeUvs`,l=s+"0",d=s+"1",c=s+"2",u=`${o}_triplanarWeights`;e.addFragmentVariable(l,"vec2"),e.addFragmentVariable(d,"vec2"),e.addFragmentVariable(c,"vec2"),e.addFragmentVariable(u,"vec3"),a.push(l),a.push(d),a.push(c),a.push(u)}else{let s=`${o}_writeUvs`;e.addFragmentVariable(s,"vec2"),a.push(s)}return e.format(i+"("+a.join(",")+")",this.getType(e),r)}},Tn=Ea;Tn.Nodes=function(){let e=new K(`
|
|
273
287
|
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, out vec2 writeUv) {
|
|
274
288
|
vec3 posN = normalize(position);
|
|
275
289
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -304,7 +318,7 @@ vec3 cylindricalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop
|
|
|
304
318
|
|
|
305
319
|
return col;
|
|
306
320
|
}
|
|
307
|
-
`),
|
|
321
|
+
`),r=new K(`
|
|
308
322
|
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, out vec2 writeUv) {
|
|
309
323
|
vec3 posN = normalize(vPosition);
|
|
310
324
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -337,7 +351,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
337
351
|
|
|
338
352
|
return col;
|
|
339
353
|
}
|
|
340
|
-
`),o=new
|
|
354
|
+
`),o=new K(`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, out vec2 writeUv) {
|
|
341
355
|
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
342
356
|
writeUv = uvs;
|
|
343
357
|
|
|
@@ -358,7 +372,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
358
372
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
359
373
|
|
|
360
374
|
return col;
|
|
361
|
-
}`),i=new
|
|
375
|
+
}`),i=new K(`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, out vec2 writeUvs0, out vec2 writeUvs1, out vec2 writeUvs2, out vec3 writeWeights) {
|
|
362
376
|
vec3 p = position;
|
|
363
377
|
vec2 uv0 = (1.0 + p.xy) / 2.0;
|
|
364
378
|
vec2 uv1 = (1.0 + p.zy) / 2.0;
|
|
@@ -424,7 +438,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
424
438
|
|
|
425
439
|
return col;//n * 0.5 + 0.5;
|
|
426
440
|
}
|
|
427
|
-
`);return{cylindrical:e,spherical:
|
|
441
|
+
`);return{cylindrical:e,spherical:r,uv:o,triplanar:i}}();var Da=class extends se{constructor(e,r,o,i,a,s,l,d,c,u,p,f){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=a,this.isWorldSpace=s,this.origin=l,this.direction=d,this.colors=c,this.steps=u,this.isMask=f,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new K(`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) {
|
|
428
442
|
vec4 color = colors[0];
|
|
429
443
|
#ifdef ${o}_IS_VECTOR
|
|
430
444
|
#ifdef ${o}_LINEAR
|
|
@@ -464,21 +478,21 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
464
478
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
465
479
|
|
|
466
480
|
return color.rgb;
|
|
467
|
-
}`,[
|
|
481
|
+
}`,[Da.Nodes.vectorLinearWorldSpaceDepth,Da.Nodes.vectorLinearObjectSpaceDepth,Da.Nodes.vectorSphericalObjectSpaceDepth,Da.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 a=e.include(i),s=[];return s.push(this.near.build(e,"f")),s.push(this.far.build(e,"f")),s.push(this.origin.build(e,"v3")),s.push(this.direction.build(e,"v3")),s.push(this.colors.build(e,"v4[]")),s.push(this.steps.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.calpha),e.format(a+"("+s.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},La=Da;La.Nodes=function(){let e=new K(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
468
482
|
vec3 n = normalize(direction);
|
|
469
483
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
470
484
|
return ( dist - near ) / ( far - near );
|
|
471
|
-
}`),
|
|
485
|
+
}`),r=new K(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
472
486
|
vec3 n = normalize(direction);
|
|
473
487
|
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
474
488
|
return ( dist - near ) / ( far - near );
|
|
475
|
-
}`),o=new
|
|
489
|
+
}`),o=new K(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
476
490
|
float dist = length(vWPosition - origin);
|
|
477
491
|
return ( dist - near ) / ( far - near );
|
|
478
|
-
}`),i=new
|
|
492
|
+
}`),i=new K(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
479
493
|
float dist = length(position - origin);
|
|
480
494
|
return ( dist - near ) / ( far - near );
|
|
481
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:
|
|
495
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:i}}();var Ys=class extends se{constructor(e,r,o,i,a,s,l,d){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=a,this.isMask=d,this.alpha=s,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=new K(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
482
496
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
483
497
|
|
|
484
498
|
float lalpha = clamp(fresnel, 0.0, 1.0) * alpha * mask;
|
|
@@ -486,7 +500,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
486
500
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
487
501
|
|
|
488
502
|
return color;
|
|
489
|
-
}`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),
|
|
503
|
+
}`),i=e.include(o),a=[];return a.push(this.color.build(e,"c")),a.push(this.bias.build(e,"f")),a.push(this.scale.build(e,"f")),a.push(this.intensity.build(e,"f")),a.push(this.factor.build(e,"f")),a.push(this.isMask.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.mode.build(e,"i")),a.push(this.calpha),e.format(i+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}};var pp=class extends se{constructor(e,r,o,i,a,s,l,d,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,this.colors=o,this.steps=i,this.offset=a,this.morph=s,this.angle=l,this.isMask=c,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(pp.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),r)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ba=pp;Ba.Nodes=function(){return{gradient:new K(`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) {
|
|
490
504
|
vec4 color = colors[0];
|
|
491
505
|
vec2 m = morph / vUv.xy;
|
|
492
506
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -528,7 +542,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
528
542
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
529
543
|
|
|
530
544
|
return color.xyz;
|
|
531
|
-
}`)}}();var
|
|
545
|
+
}`)}}();var fp=class extends se{constructor(e,r,o,i){super("v3");this.nodeType="Matcap";this.texture=e,this.isMask=i,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(fp.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),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ra=fp;Ra.Nodes=function(){return{matcap:new K(`vec3 matcap(sampler2D matcapTex, vec3 normal, bool isMask, float mask, float alpha, int mode, out float calpha) {
|
|
532
546
|
vec3 viewDir = normalize( vViewPosition );
|
|
533
547
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
534
548
|
vec3 y = cross( viewDir, x );
|
|
@@ -540,7 +554,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
540
554
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
541
555
|
|
|
542
556
|
return matcapColor.rgb;
|
|
543
|
-
}`)}}();var
|
|
557
|
+
}`)}}();var Xs=(a=>(a.SIMPLEX="simplex3d",a.SIMPLEX_FRACTAL="simplex3dFractal",a.ASHIMA="simplexAshima",a.FBM="fbm",a.PERLIN="perlin",a.VORONOI="voronoi",a))(Xs||{}),zt=function(){let t=new K(`vec3 random3(vec3 c) {
|
|
544
558
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
545
559
|
vec3 r;
|
|
546
560
|
r.z = fract(512.0*j);
|
|
@@ -549,7 +563,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
549
563
|
j *= .125;
|
|
550
564
|
r.y = fract(512.0*j);
|
|
551
565
|
return r-0.5;
|
|
552
|
-
}`),e=new
|
|
566
|
+
}`),e=new K(`float simplex3d(vec3 p) {
|
|
553
567
|
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
554
568
|
vec3 x = p - s + dot(s, vec3(G3));
|
|
555
569
|
|
|
@@ -580,7 +594,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
580
594
|
d *= w;
|
|
581
595
|
|
|
582
596
|
return dot(d, vec4(52.0));
|
|
583
|
-
}`,[
|
|
597
|
+
}`,[t]);e.keywords.F3=new Be("float F3 0.3333333"),e.keywords.G3=new Be("float G3 0.1666667");let r=new K(`float simplex3dFractal(vec3 m) {
|
|
584
598
|
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
585
599
|
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
586
600
|
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
@@ -588,7 +602,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
588
602
|
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
589
603
|
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
590
604
|
+ 0.0666667 * simplex3d(8.0 * m);
|
|
591
|
-
}`,[e]),o=new
|
|
605
|
+
}`,[e]),o=new K("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),i=new K("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),a=new K(`float simplexAshima(vec3 v) {
|
|
592
606
|
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
593
607
|
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
594
608
|
vec3 i = floor(v + dot(v, C.yyy) );
|
|
@@ -633,7 +647,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
633
647
|
m = m * m;
|
|
634
648
|
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
635
649
|
dot(p2,x2), dot(p3,x3) ) );
|
|
636
|
-
}`,[o,i]),s=new
|
|
650
|
+
}`,[o,i]),s=new K("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new K("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[s]),d=new K(`float noise(vec3 p){
|
|
637
651
|
vec3 a = floor(p);
|
|
638
652
|
vec3 d = p - a;
|
|
639
653
|
d = d * d * (3.0 - 2.0 * d);
|
|
@@ -648,7 +662,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
648
662
|
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
649
663
|
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
650
664
|
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
651
|
-
}`,[
|
|
665
|
+
}`,[l]),c=new K(`float fbm(vec3 x) {
|
|
652
666
|
float v = 0.0;
|
|
653
667
|
float a = 0.5;
|
|
654
668
|
vec3 shift = vec3(100);
|
|
@@ -658,7 +672,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
658
672
|
a *= 0.5;
|
|
659
673
|
}
|
|
660
674
|
return v;
|
|
661
|
-
}`,[
|
|
675
|
+
}`,[d]);c.keywords.NUM_OCTAVES=new Be(`int NUM_OCTAVES ${5}`);let u=new K("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new K(`float perlin(vec3 P){
|
|
662
676
|
vec3 Pi0 = floor(P);
|
|
663
677
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
664
678
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -717,17 +731,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
717
731
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
718
732
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
719
733
|
return 2.2 * n_xyz;
|
|
720
|
-
}`,[o,i,
|
|
734
|
+
}`,[o,i,u]),f=new K(`float hashwithoutsine13(vec3 p3)
|
|
721
735
|
{
|
|
722
736
|
p3 = fract(p3 * .1031);
|
|
723
737
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
724
738
|
return fract((p3.x + p3.y) * p3.z);
|
|
725
|
-
}`),
|
|
739
|
+
}`),h=new K(`vec3 hashwithoutsine33(vec3 p3)
|
|
726
740
|
{
|
|
727
741
|
p3 = fract(p3 * vec3(.1031, .1030, .0973));
|
|
728
742
|
p3 += dot(p3, p3.yxz+33.33);
|
|
729
743
|
return fract((p3.xxy + p3.yxx)*p3.zyx);
|
|
730
|
-
}`),
|
|
744
|
+
}`),m=new K(`float metric(in vec3 p)
|
|
731
745
|
{
|
|
732
746
|
// L2
|
|
733
747
|
return length(p);
|
|
@@ -735,17 +749,17 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
735
749
|
// Chebyshev
|
|
736
750
|
// vec3 a = abs(p);
|
|
737
751
|
// return max(a.x, max(a.y, a.z));
|
|
738
|
-
}`),y=new
|
|
752
|
+
}`),y=new K(`float smin( float a, float b, float k )
|
|
739
753
|
{
|
|
740
754
|
float h = smoothstep(0.0, 1.0, 0.5 + 0.5 * (b - a) / k);
|
|
741
755
|
float correction = k * h * (1.0 - h);
|
|
742
756
|
return mix(b, a, h) - correction;
|
|
743
|
-
}`),g=new
|
|
757
|
+
}`),g=new K(`float smax( float a, float b, float k )
|
|
744
758
|
{
|
|
745
759
|
float h = smoothstep(1.0, 0.0, 0.5 + 0.5 * (a - b) / k);
|
|
746
760
|
float correction = k * h * (1.0 - h);
|
|
747
761
|
return mix(a, b, h) + correction;
|
|
748
|
-
}`),x=new
|
|
762
|
+
}`),x=new K(`float remap(float value, float input_min, float input_max, float output_min, float output_max) {
|
|
749
763
|
// Compute width of each interval
|
|
750
764
|
float input_width = input_max - input_min;
|
|
751
765
|
float output_width = output_max - output_min;
|
|
@@ -755,7 +769,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
755
769
|
|
|
756
770
|
// Convert the 0-1 range into a value in output range
|
|
757
771
|
return output_min + (scaled * output_width);
|
|
758
|
-
}`),S=new
|
|
772
|
+
}`),S=new K(`float voronoi(in vec3 x, in int style, in float smoothness, in float seed, in int quality)
|
|
759
773
|
{
|
|
760
774
|
// Integer and fractional parts of this point's coordinates
|
|
761
775
|
ivec3 p = ivec3(floor(x));
|
|
@@ -893,7 +907,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
893
907
|
return hashwithoutsine13(vec3(p + mb) + seed);
|
|
894
908
|
}
|
|
895
909
|
}
|
|
896
|
-
`,[f,m,
|
|
910
|
+
`,[f,h,m,y,g,x]);return{simplex:e,simplexFractal:r,simplexAshima:a,fbm:c,perlin:p,voronoi:S}}();var Va=class extends se{constructor(e,r,o,i,a,s,l,d,c,u,p,f,h,m,y,g,x,S,w){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=a,this.distortion=s,this.colorA=l,this.colorB=d,this.colorC=c,this.colorD=u,this.noiseType=f,this.voronoiStyle=m,this.highCut=y,this.lowCut=g,this.smoothness=x,this.seed=S,this.quality=w,this.isMask=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,a){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let s=Object.values(Xs)[this.noiseType.value],l=s=="voronoi"?`
|
|
897
911
|
float v = ${s}(st + move, voronoiStyle, smoothness, seed, quality);
|
|
898
912
|
|
|
899
913
|
// Apply clipping to colors
|
|
@@ -915,7 +929,7 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
915
929
|
color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
|
|
916
930
|
color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
|
|
917
931
|
color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
|
|
918
|
-
`,
|
|
932
|
+
`,d=new K(`vec3 ${s}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)
|
|
919
933
|
{
|
|
920
934
|
// Prevent scale of zero
|
|
921
935
|
scale = max(abs(scale), 0.001);
|
|
@@ -923,14 +937,14 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
923
937
|
vec3 st = position / size;
|
|
924
938
|
st /= scale;
|
|
925
939
|
|
|
926
|
-
${
|
|
940
|
+
${l}
|
|
927
941
|
|
|
928
942
|
float lalpha = alpha * color.a * mask;
|
|
929
943
|
calpha = mix(lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0), lalpha, float(isMask));
|
|
930
944
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
931
945
|
|
|
932
946
|
return clamp(color, 0.0, 1.0).rgb;
|
|
933
|
-
}`,[
|
|
947
|
+
}`,[zt.simplex,zt.simplexFractal,zt.simplexAshima,zt.fbm,zt.perlin,zt.voronoi]),c=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(c+"("+u.join(",")+")",this.getType(e),r)}};Va.numOctaves=5;var hp=class extends se{constructor(e,r,o,i,a,s,l,d,c,u,p,f,h,m,y,g){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=r,this.outlineWidth=o,this.contourWidth=i,this.contourThreshold=a,this.outlineThreshold=s,this.contourFrequency=l,this.outlineSmoothing=d,this.contourDirection=c,this.positionalLines=u,this.compensation=p,this.resolution=f,this.normalMap=h,this.depthMap=m,this.pixelRatio=y,this.alpha=g,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`;if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.compensation.value&&e.define("OUTLINE_COMPENSATION",`${o}_offset`),this.firstTime){let i=this.outlineWidth.build(e,"f"),a=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(i,"uniform float"),e.addVertexParsVariable(a,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(l,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float"),e.addVertexFinalCode(`
|
|
934
948
|
vID = randomColor.r;
|
|
935
949
|
vec2 ${o}_offset = vec2(0.0);
|
|
936
950
|
if (${s}) {
|
|
@@ -939,13 +953,13 @@ vec3 sphericalTexture(vec3 normal, sampler2D tex, vec2 textureSize, float crop,
|
|
|
939
953
|
// normals face the camera directly. So we hackily fix this by offsetting the normal
|
|
940
954
|
// by a tiny amount.
|
|
941
955
|
vec3 ${o}_clipNormal = mat3(projectionMatrix) * (mat3(modelViewMatrix) * extrudeNormal) + 0.0000001;
|
|
942
|
-
${o}_offset = normalize(${o}_clipNormal.xy) / ${a} * (${i} / 2.0) * ${o}_clipPosition.w * 2.0 * ${
|
|
956
|
+
${o}_offset = normalize(${o}_clipNormal.xy) / ${a} * (${i} / 2.0) * ${o}_clipPosition.w * 2.0 * ${l};
|
|
943
957
|
${o}_clipPosition.xy += ${o}_offset;
|
|
944
958
|
// TODO(MAX): To handle multiple outline layers, we only want to extrude
|
|
945
959
|
// if this offset is the biggest of all the potential offsets
|
|
946
960
|
gl_Position = ${o}_clipPosition;
|
|
947
961
|
}
|
|
948
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(
|
|
962
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let i=e.include(hp.Nodes.outline),a=[];return a.push(this.outlineColor.build(e,"c")),a.push(this.contourColor.build(e,"c")),a.push(this.outlineWidth.build(e,"f")),a.push(this.contourWidth.build(e,"f")),a.push(this.contourThreshold.build(e,"f")),a.push(this.outlineThreshold.build(e,"f")),a.push(this.contourFrequency.build(e,"f")),a.push(this.outlineSmoothing.build(e,"f")),a.push(this.contourDirection.build(e,"v3")),a.push(this.positionalLines.build(e,"b")),a.push(this.resolution.build(e,"v2")),a.push(this.normalMap.getTexture(e,"t")),a.push(this.depthMap.getTexture(e,"t")),a.push(this.pixelRatio.build(e,"f")),a.push(this.compensation.build(e,"b")),a.push(this.mask?`luminance(${this.mask.flow(e,"v3").result})`:"1.0"),a.push(this.alpha.build(e,"f")),a.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},Ga=hp;Ga.Nodes=function(){let e=new K(`
|
|
949
963
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
950
964
|
{
|
|
951
965
|
vec2 halton = haltonSequence[frameIndex];
|
|
@@ -1051,7 +1065,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1051
1065
|
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
1052
1066
|
return edgeNormal;
|
|
1053
1067
|
}
|
|
1054
|
-
`);return{outline:new
|
|
1068
|
+
`);return{outline:new K(`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) {
|
|
1055
1069
|
vec3 result = outlineColor;
|
|
1056
1070
|
float resultAlpha = 0.0;
|
|
1057
1071
|
|
|
@@ -1094,12 +1108,12 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1094
1108
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1095
1109
|
|
|
1096
1110
|
return result;
|
|
1097
|
-
}`,[e])}}();var
|
|
1111
|
+
}`,[e])}}();var vo=class extends se{constructor(e,r,o,i,a,s,l,d,c,u,p,f,h,m,y,g,x,S){super("v3");this.nodeType="Pattern";this.style=e,this.projection=r,this.axis=o,this.blending=i,this.offset=a,this.colorA=s,this.colorB=l,this.frequency=d,this.size=c,this.variation=u,this.smoothness=p,this.zigzag=f,this.rotation=h,this.vertical=m,this.horizontal=y,this.sides=g,this.isMask=S,this.alpha=x,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){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,"")}`,a=new K(`float hashwithoutsine12(vec2 p)
|
|
1098
1112
|
{
|
|
1099
1113
|
vec3 p3 = fract(vec3(p.xyx) * .1031);
|
|
1100
1114
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
1101
1115
|
return fract((p3.x + p3.y) * p3.z);
|
|
1102
|
-
}`),s=new
|
|
1116
|
+
}`),s=new K(`vec2 rotate_uv(in vec2 uv, float a, bool repeat)
|
|
1103
1117
|
{
|
|
1104
1118
|
const float mid = 0.5;
|
|
1105
1119
|
float radians = a * (PI / 180.0);
|
|
@@ -1108,7 +1122,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1108
1122
|
cos(radians) * (uv.y - mid) - sin(radians) * (uv.x - mid) + mid
|
|
1109
1123
|
);
|
|
1110
1124
|
return repeat ? fract(rotated): rotated;
|
|
1111
|
-
}`),
|
|
1125
|
+
}`),l="";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)`,h=this.style.value===2?`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation, sides)`:`${o}(uv2, frequency, size, variation, smoothness_remapped, zigzag, rotation)`;l=`
|
|
1112
1126
|
vec3 p = position;
|
|
1113
1127
|
float factor = 0.0125;
|
|
1114
1128
|
vec2 uv0 = fract(p.xy * factor);
|
|
@@ -1121,7 +1135,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1121
1135
|
|
|
1122
1136
|
float d0 = ${p};
|
|
1123
1137
|
float d1 = ${f};
|
|
1124
|
-
float d2 = ${
|
|
1138
|
+
float d2 = ${h};
|
|
1125
1139
|
|
|
1126
1140
|
// Range from 3 to 128 seems to be good
|
|
1127
1141
|
float exponent = (1.0 - blending) * 125.0 + 3.0;
|
|
@@ -1142,25 +1156,25 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1142
1156
|
float theta = atan(p.x, p.z);
|
|
1143
1157
|
float phi = acos(p.y / radius);`:(this.axis.value,f=`float radius = length(p);
|
|
1144
1158
|
float theta = atan(p.y, p.x);
|
|
1145
|
-
float phi = acos(p.z / radius);`);let
|
|
1159
|
+
float phi = acos(p.z / radius);`);let h="";switch(this.projection.value){case 0:h="custom_uv = vUv.st;";break;case 1:break;case 2:h=`
|
|
1146
1160
|
vec3 p = position;
|
|
1147
1161
|
${f}
|
|
1148
1162
|
custom_uv = vec2(theta, phi);
|
|
1149
1163
|
custom_uv /= PI;
|
|
1150
|
-
`;break;case 3:break;default:break}
|
|
1164
|
+
`;break;case 3:break;default:break}l=`
|
|
1151
1165
|
vec2 custom_uv;
|
|
1152
|
-
${
|
|
1166
|
+
${h}
|
|
1153
1167
|
|
|
1154
1168
|
custom_uv += offset;
|
|
1155
1169
|
custom_uv = fract(custom_uv);
|
|
1156
1170
|
custom_uv = rotate_uv(custom_uv, rotation, true);
|
|
1157
1171
|
|
|
1158
1172
|
float draw = ${p};
|
|
1159
|
-
`}let
|
|
1173
|
+
`}let d=new K(`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) {
|
|
1160
1174
|
const float TWO_PI = PI * 2.0;
|
|
1161
1175
|
float smoothness_remapped = pow(smoothness, 5.0);
|
|
1162
1176
|
|
|
1163
|
-
${
|
|
1177
|
+
${l}
|
|
1164
1178
|
|
|
1165
1179
|
// Construct final output color
|
|
1166
1180
|
vec4 color = mix(colorA, colorB, draw);
|
|
@@ -1180,11 +1194,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1180
1194
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1181
1195
|
|
|
1182
1196
|
return clamp(color, 0.0, 1.0).rgb;
|
|
1183
|
-
}`,[s,a,
|
|
1197
|
+
}`,[s,a,vo.DrawFunctions.circle,vo.DrawFunctions.ring,vo.DrawFunctions.polygon,vo.DrawFunctions.cross,vo.DrawFunctions.diamond,vo.DrawFunctions.checkerboard,vo.DrawFunctions.line,vo.DrawFunctions.wave]),c=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(c+"("+u.join(",")+")",this.getType(e),r)}else return console.warn("PatterNode is not compatible with "+e.shader+" shader."),e.format("vec3(0.0)",this.getType(e),r)}},za=vo;za.DrawFunctions=function(){let e=new K(`float hashwithoutsine12(vec2 p) {
|
|
1184
1198
|
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
1185
1199
|
p3 += dot(p3, p3.yzx + 33.33);
|
|
1186
1200
|
return fract((p3.x + p3.y) * p3.z);
|
|
1187
|
-
}`),
|
|
1201
|
+
}`),r=new K(`vec2 tile_and_center(in vec2 uv, in vec2 frequency, in float variation, in float zigzag, in float rotation) {
|
|
1188
1202
|
// Create tiles in UV-space
|
|
1189
1203
|
uv *= frequency;
|
|
1190
1204
|
|
|
@@ -1213,14 +1227,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1213
1227
|
f *= jitter;
|
|
1214
1228
|
|
|
1215
1229
|
return f;
|
|
1216
|
-
}`,[e]),o=new
|
|
1230
|
+
}`,[e]),o=new K(`float circle(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1217
1231
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1218
1232
|
return smoothstep(
|
|
1219
1233
|
-smoothness,
|
|
1220
1234
|
smoothness,
|
|
1221
1235
|
length(f) - size
|
|
1222
1236
|
);
|
|
1223
|
-
}`,[
|
|
1237
|
+
}`,[r]),i=new K(`float ring(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1224
1238
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1225
1239
|
|
|
1226
1240
|
float d = length(f);
|
|
@@ -1229,7 +1243,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1229
1243
|
float outer = smoothstep(-smoothness, smoothness, d - size);
|
|
1230
1244
|
float inner = smoothstep(-smoothness, smoothness, d - size * inner_width);
|
|
1231
1245
|
return outer + (1.0 - inner);
|
|
1232
|
-
}`,[
|
|
1246
|
+
}`,[r]),a=new K(`float sdf_ngon(in vec2 p, in float r, in int n) {
|
|
1233
1247
|
float an = (PI * 2.0) / float(n);
|
|
1234
1248
|
float he = r * tan(0.5 * an);
|
|
1235
1249
|
|
|
@@ -1246,7 +1260,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1246
1260
|
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) {
|
|
1247
1261
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1248
1262
|
return smoothstep(-smoothness, smoothness, sdf_ngon(f, size, sides));
|
|
1249
|
-
}`,[
|
|
1263
|
+
}`,[r]),s=new K(`float sdf_cross(in vec2 p, in vec2 b, float r ) {
|
|
1250
1264
|
p = abs(p);
|
|
1251
1265
|
p = (p.y > p.x) ? p.yx : p.xy;
|
|
1252
1266
|
vec2 q = p - b;
|
|
@@ -1259,7 +1273,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1259
1273
|
float xcross(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1260
1274
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1261
1275
|
return smoothstep(-smoothness, smoothness, sdf_cross(f, vec2(size, size * 0.25), smoothness));
|
|
1262
|
-
}`,[
|
|
1276
|
+
}`,[r]),l=new K(`float ndot(vec2 a, vec2 b) {
|
|
1263
1277
|
return a.x*b.x - a.y*b.y;
|
|
1264
1278
|
}
|
|
1265
1279
|
|
|
@@ -1273,7 +1287,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1273
1287
|
float diamond(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1274
1288
|
vec2 f = tile_and_center(uv, frequency, variation, zigzag, rotation);
|
|
1275
1289
|
return smoothstep(-smoothness, smoothness, sdf_diamond(f, vec2(size)));
|
|
1276
|
-
}`,[
|
|
1290
|
+
}`,[r]),d=new K(`float checkerboard(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1277
1291
|
uv *= frequency;
|
|
1278
1292
|
vec2 i = floor(uv);
|
|
1279
1293
|
|
|
@@ -1283,7 +1297,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1283
1297
|
float x = floor(uv.x);
|
|
1284
1298
|
|
|
1285
1299
|
return mod(x, 2.0);
|
|
1286
|
-
}`),
|
|
1300
|
+
}`),c=new K(`float line(in vec2 uv, in vec2 frequency, in float size, in float variation, in float smoothness, in float zigzag, in float rotation) {
|
|
1287
1301
|
vec2 f = tile_and_center(uv, frequency, 0.0, zigzag, rotation);
|
|
1288
1302
|
|
|
1289
1303
|
// Different approach for variation param here
|
|
@@ -1296,7 +1310,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1296
1310
|
s + smoothness,
|
|
1297
1311
|
abs(f.y)
|
|
1298
1312
|
);
|
|
1299
|
-
}`,[
|
|
1313
|
+
}`,[r]),u=new K(`// Uses bisection
|
|
1300
1314
|
float udf_cos(in vec2 p, in float a, in float b, in float c, in float d) {
|
|
1301
1315
|
// Convert all data to a primitive cosine wave
|
|
1302
1316
|
p = c * (p - vec2(d, a));
|
|
@@ -1345,7 +1359,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1345
1359
|
float s = mix(size, size * rand, variation);
|
|
1346
1360
|
|
|
1347
1361
|
return smoothstep(-smoothness, smoothness, distance_estimate - s * 0.5);
|
|
1348
|
-
}`);return{tileAndCenter:
|
|
1362
|
+
}`);return{tileAndCenter:r,circle:o,ring:i,polygon:a,cross:s,diamond:l,checkerboard:d,line:c,wave:u}}();var mp=class extends se{constructor(e,r,o,i,a,s,l,d){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=a,this.offset=s,this.isMask=d,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(mp.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),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ka=mp;ka.Nodes=function(){let e=new K(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
1349
1363
|
vec3 st = position / noiseScale;
|
|
1350
1364
|
vec3 q = vec3(simplex3d(st),
|
|
1351
1365
|
simplex3d(st + vec3(1.0)),
|
|
@@ -1358,7 +1372,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1358
1372
|
float noise = simplex3d(st + r);
|
|
1359
1373
|
|
|
1360
1374
|
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);
|
|
1361
|
-
}`,[
|
|
1375
|
+
}`,[zt.simplex]);return{rainbow:new K(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, bool isMask, float mask, float alpha, out float calpha) {
|
|
1362
1376
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
1363
1377
|
|
|
1364
1378
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -1368,14 +1382,14 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1368
1382
|
accumAlpha += (1.0 - accumAlpha) * lalpha * (1.0 - float(isMask));
|
|
1369
1383
|
|
|
1370
1384
|
return res;
|
|
1371
|
-
}`,[e])}}();var
|
|
1385
|
+
}`,[e])}}();var yp=class extends se{constructor(e,r,o,i,a,s,l,d,c,u){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=i,this.isWorldSpace=a,this.noiseStrength=s,this.noiseScale=l,this.shadowColor=d,this.offset=c,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(yp.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),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Fa=yp;Fa.Nodes=function(){let e=new K(`float rand(float n) {
|
|
1372
1386
|
return fract(sin(n) * 43758.5453123);
|
|
1373
|
-
}`),
|
|
1387
|
+
}`),r=new K(`float hash1(float p) {
|
|
1374
1388
|
p = fract(p * 0.011);
|
|
1375
1389
|
p *= p + 7.5;
|
|
1376
1390
|
p *= p + p;
|
|
1377
1391
|
return fract(p);
|
|
1378
|
-
}`),o=new
|
|
1392
|
+
}`),o=new K(`float valueNoise(vec3 x) {
|
|
1379
1393
|
const vec3 step = vec3(110, 241, 171);
|
|
1380
1394
|
|
|
1381
1395
|
vec3 i = floor(x);
|
|
@@ -1390,13 +1404,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1390
1404
|
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
1391
1405
|
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
1392
1406
|
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
1393
|
-
}`,[
|
|
1407
|
+
}`,[r]),i=new K(`vec3 hash3(vec3 x) {
|
|
1394
1408
|
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
1395
1409
|
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
1396
1410
|
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
1397
1411
|
|
|
1398
1412
|
return fract(sin(x)*43758.5453123);
|
|
1399
|
-
}`),a=new
|
|
1413
|
+
}`),a=new K(`vec3 voronoiNoise(in vec3 x)
|
|
1400
1414
|
{
|
|
1401
1415
|
vec3 p = floor(x);
|
|
1402
1416
|
vec3 f = fract(x);
|
|
@@ -1427,7 +1441,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1427
1441
|
|
|
1428
1442
|
return vec3(sqrt(res), abs(id));
|
|
1429
1443
|
}
|
|
1430
|
-
`,[i]);return{toon:new
|
|
1444
|
+
`,[i]);return{toon:new K(`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) {
|
|
1431
1445
|
float t = 0.0;
|
|
1432
1446
|
float shadow = 1.0;
|
|
1433
1447
|
|
|
@@ -1604,7 +1618,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1604
1618
|
|
|
1605
1619
|
return color.xyz;
|
|
1606
1620
|
|
|
1607
|
-
}`,[
|
|
1621
|
+
}`,[zt.simplex,e,o,a])}}();var gp=require("three");var w0=function(){return{textureBicubic:new K(`float w0( float a ) {
|
|
1608
1622
|
return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
|
|
1609
1623
|
}
|
|
1610
1624
|
|
|
@@ -1668,7 +1682,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1668
1682
|
vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
|
|
1669
1683
|
vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
|
|
1670
1684
|
return mix( fSample, cSample, fract( lod ) );
|
|
1671
|
-
}`)}}();function
|
|
1685
|
+
}`)}}();function _0(n,t){return n>=t?new gp.Vector2(t/n,1):new gp.Vector2(1,n/t)}var xp=class extends se{constructor(e,r,o,i,a,s,l,d){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,this.roughness=o,this.transmissionSamplerSize=i,this.transmissionSamplerMap=a,this.transmissionDepthMap=s,this.aspectRatio=l,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",6),e.define("BLUR_SLOD",Math.pow(2,Ae.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(xp.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),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},ja=xp;ja.Nodes=function(){let e=new K(`vec3 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
1672
1686
|
// Slightly modified version of this:
|
|
1673
1687
|
// https://www.shadertoy.com/view/ltScRG
|
|
1674
1688
|
|
|
@@ -1701,7 +1715,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1701
1715
|
res += textureLod(sp, uv, lod).rgb;
|
|
1702
1716
|
}
|
|
1703
1717
|
return res / float(NUM_SAMPLES);
|
|
1704
|
-
}`),
|
|
1718
|
+
}`),r=new K(`vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
1705
1719
|
// Direction of refracted light.
|
|
1706
1720
|
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
1707
1721
|
|
|
@@ -1713,11 +1727,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1713
1727
|
|
|
1714
1728
|
// The thickness is specified in local space
|
|
1715
1729
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
1716
|
-
}`),o=new
|
|
1730
|
+
}`),o=new K(`float applyIorToRoughness( float roughness, float ior ) {
|
|
1717
1731
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
1718
1732
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
1719
1733
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
1720
|
-
}`),i=new
|
|
1734
|
+
}`),i=new K(`vec3 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
1721
1735
|
// Threejs exports do not pass a depth map to this shader, so we have to fallback to the "Threejs method of blurring" - see
|
|
1722
1736
|
// also the code in convertTransmission.ts, which runs during export
|
|
1723
1737
|
#ifdef IS_THREEJS_EXPORT
|
|
@@ -1728,7 +1742,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1728
1742
|
float lod = applyIorToRoughness(roughness, ior);
|
|
1729
1743
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
1730
1744
|
#endif
|
|
1731
|
-
}`,[
|
|
1745
|
+
}`,[w0.textureBicubic,o,e]),a=new K(`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 ) {
|
|
1732
1746
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
1733
1747
|
vec3 refractedRayExit = position + transmissionRay;
|
|
1734
1748
|
|
|
@@ -1745,7 +1759,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1745
1759
|
|
|
1746
1760
|
// Sample framebuffer to get pixel the refracted ray hits.
|
|
1747
1761
|
return getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
1748
|
-
}`,[i,
|
|
1762
|
+
}`,[i,r]);return{transmission:new K(`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) {
|
|
1749
1763
|
vec3 v = vec3(0.);
|
|
1750
1764
|
if (isOrthographic) {
|
|
1751
1765
|
v = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
|
|
@@ -1759,9 +1773,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1759
1773
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1760
1774
|
|
|
1761
1775
|
return transmission;
|
|
1762
|
-
}`,[a])}}();var
|
|
1776
|
+
}`,[a])}}();var vp=(e=>(e.NOISE="noise",e.MAP="map",e))(vp||{}),bp=class extends se{constructor(e,r,o,i,a,s,l,d,c,u,p){super("v3");this.displacementTypeIndex=new Pe(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=r,Object.values(vp)[this.displacementTypeIndex.value]==="map"&&(this.mat=new Ma(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=u,this.noiseFunctionIndex=p,this.voronoiStyle=i,this.smoothness=a,this.seed=s,this.highCut=l,this.lowCut=d,this.quality=c}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,i=[];switch(i.push("displaced_position"),i.push("displaced_normal"),Object.values(vp)[this.displacementTypeIndex.value]){case"map":{o=e.include(bp.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 s=Object.values(Xs)[this.noiseFunctionIndex.value],l=new K(`vec3 orthogonal(vec3 v) {
|
|
1763
1777
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1764
|
-
}`),
|
|
1778
|
+
}`),d=s=="voronoi"?`
|
|
1765
1779
|
float v = ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1), voronoiStyle, smoothness, seed, quality);
|
|
1766
1780
|
v = remap(v, lowCut, highCut, 0.0, 1.0);
|
|
1767
1781
|
v = smax(v, 0.0, smoothness * 0.25);
|
|
@@ -1770,9 +1784,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1770
1784
|
return p + n * v * intensity;
|
|
1771
1785
|
`:`
|
|
1772
1786
|
return p + n * ${s}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
1773
|
-
`,
|
|
1774
|
-
${
|
|
1775
|
-
}`,[
|
|
1787
|
+
`,c=new K(`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) {
|
|
1788
|
+
${d}
|
|
1789
|
+
}`,[zt.simplex,zt.simplexFractal,zt.simplexAshima,zt.fbm,zt.perlin,zt.voronoi]),u=new K(`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) {
|
|
1776
1790
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1777
1791
|
vec3 tangent1 = orthogonal(normal);
|
|
1778
1792
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -1788,9 +1802,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1788
1802
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement, voronoiStyle, smoothness, seed, highCut, lowCut, quality);
|
|
1789
1803
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1790
1804
|
return displaced_position;
|
|
1791
|
-
}`,[l
|
|
1805
|
+
}`,[c,l]);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),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}},Ua=bp;Ua.Nodes=function(){let e=new K(`vec3 orthogonal(vec3 v) {
|
|
1792
1806
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
1793
|
-
}`),
|
|
1807
|
+
}`),r=new K(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
1794
1808
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
1795
1809
|
vec4 tmp = texture2D(tex, uvs);
|
|
1796
1810
|
vec3 col = tmp.rgb;
|
|
@@ -1800,7 +1814,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1800
1814
|
}
|
|
1801
1815
|
}
|
|
1802
1816
|
return col.r;
|
|
1803
|
-
}`);return{map:new
|
|
1817
|
+
}`);return{map:new K(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
1804
1818
|
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
1805
1819
|
vec3 tangent1 = normalize(orthogonal(normal));
|
|
1806
1820
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -1810,7 +1824,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1810
1824
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
1811
1825
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
1812
1826
|
return displaced_position;
|
|
1813
|
-
}`,[e,
|
|
1827
|
+
}`,[e,r])}}();var Ae={normalRenderTarget:new rr,normalRenderTargetDepth:new rr,transmissionRenderTarget:new rr,aspectRatio:new lt,transmissionSize:new lt(2048,2048),transmissionRenderTargetDepth:new rr,aoRenderTarget:new rr,aoEnabled:new ht,pixelRatioNode:new J(1),resolution:new lt,penumbraSize:new Qr(5,.5),frameIndex:new Pe(0),transmissionLod:new Pe(2)};for(let n of Object.values(Ae))n.isRenderGlobal=!0;var ni=class extends Rt{constructor(){super("basic");this.nodeType="Basic";this.color=new ke(Tt),this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.previousModelViewMatrix=new qt,this.previouseProjectionMatrix=new qt}get category(){return"phong"}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(tu.UniformsUtils.merge([tu.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
1814
1828
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1815
1829
|
#if !defined( USE_LAYER_DISPLACE )
|
|
1816
1830
|
#include <defaultnormal_vertex>
|
|
@@ -1827,10 +1841,10 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1827
1841
|
#if !defined( USE_LAYER_DISPLACE )
|
|
1828
1842
|
#include <begin_vertex>
|
|
1829
1843
|
#endif /* !USE_LAYER_DISPLACE */
|
|
1830
|
-
`];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;"),
|
|
1831
|
-
`)}else{this.color===void 0&&(this.color=new
|
|
1832
|
-
`));let
|
|
1833
|
-
`)}return
|
|
1844
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
1845
|
+
`)}else{this.color===void 0&&(this.color=new ke(Tt)),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,a=this.alphaOverride?this.alphaOverride.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(`
|
|
1846
|
+
`));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 d="1.0";this.mask&&(this.mask.analyze(e),d=`luminance(${this.mask.flow(e,"v3").result})`),i?l.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} * ${d} );`):l.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a&&l.push(`gl_FragColor.a *= ${a.result};`),l.push("#include <fog_fragment>","#include <dithering_fragment>"),r=l.join(`
|
|
1847
|
+
`)}return r}};var Ks=require("three");var Qs=class extends Rt{constructor(){super("lambert");this.nodeType="Lambert";this.color=new ke(Tt),this.emissive=new ke(0),this.emissiveIntensity=new J(1),this.previousModelViewMatrix=new qt,this.previouseProjectionMatrix=new qt,this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.occlusion=new ht(!0)}get category(){return"lambert"}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ks.UniformsUtils.merge([Ks.UniformsLib.fog,Ks.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1834
1848
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1835
1849
|
#ifndef USE_LAYER_DISPLACE
|
|
1836
1850
|
#include <defaultnormal_vertex>
|
|
@@ -1922,24 +1936,24 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1922
1936
|
}
|
|
1923
1937
|
#pragma unroll_loop_end
|
|
1924
1938
|
#endif
|
|
1925
|
-
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),
|
|
1926
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
1939
|
+
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
1940
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new ke(Tt)),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"}),a=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),s=this.occlusion.flow(e,"b",{slot:"occlusion"}),l=this.shadingAlpha.flow(e,"f"),d=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","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(`
|
|
1927
1941
|
`));let f=["#include <normal_fragment_begin>",`
|
|
1928
1942
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1929
1943
|
vec3 viewdx = dFdx(vViewPosition);
|
|
1930
1944
|
vec3 viewdy = dFdy(vViewPosition);
|
|
1931
1945
|
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
1932
1946
|
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
1933
|
-
`,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),
|
|
1947
|
+
`,"#include <clipping_planes_fragment>"];f.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),u&&f.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.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&&f.push(i.code,"reflectedLight.directDiffuse += "+i.result+" * "+a.result+";"),f.push("vec3 ao = aoEnabled && "+s.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = (reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) ;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
|
|
1934
1948
|
if (outgoingLight != diffuseColor) {
|
|
1935
1949
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1936
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${
|
|
1937
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${
|
|
1950
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
|
|
1951
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${h}, ${d.result} );
|
|
1938
1952
|
|
|
1939
1953
|
outgoingLight *= ao;
|
|
1940
1954
|
}
|
|
1941
|
-
`),
|
|
1942
|
-
`)}return
|
|
1955
|
+
`),c&&f.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
1956
|
+
`)}return r}};var Zs=require("three");var Ho=function(){let n=new K(`vec2 dHdxy(sampler2D bumpMap, vec2 bumpMapUv, float bumpScale) {
|
|
1943
1957
|
|
|
1944
1958
|
// Gradient of UVs w.r.t. X coordinate (in screen-space)
|
|
1945
1959
|
vec2 dSTdx = dFdx(bumpMapUv);
|
|
@@ -1953,7 +1967,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1953
1967
|
float dBy = bumpScale * luminance(texture(bumpMap, bumpMapUv + dSTdy).rgb) - Hll;
|
|
1954
1968
|
|
|
1955
1969
|
return vec2( dBx, dBy );
|
|
1956
|
-
}`),
|
|
1970
|
+
}`),t=new K(`vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
|
|
1957
1971
|
vec3 vSigmaX = dFdx( surf_pos.xyz );
|
|
1958
1972
|
vec3 vSigmaY = dFdy( surf_pos.xyz );
|
|
1959
1973
|
vec3 vN = surf_norm; // normalized
|
|
@@ -1970,7 +1984,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1970
1984
|
|
|
1971
1985
|
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
|
|
1972
1986
|
return normalize( abs( fDet ) * vN - vGrad );
|
|
1973
|
-
}`);return{dHdxy:n,perturbNormalArb:
|
|
1987
|
+
}`);return{dHdxy:n,perturbNormalArb:t}}();var Js=class extends Rt{constructor(){super("phong");this.nodeType="Phong";this.color=new ke(Tt),this.specular=new ke(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new qt,this.previouseProjectionMatrix=new qt,this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.occlusion=new ht(!0)}get category(){return"phong"}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Zs.UniformsUtils.merge([Zs.UniformsLib.fog,Zs.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <skinning_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1974
1988
|
`));let i=["#include <beginnormal_vertex>",`
|
|
1975
1989
|
#include <skinbase_vertex>
|
|
1976
1990
|
#include <skinnormal_vertex>
|
|
@@ -1990,8 +2004,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
1990
2004
|
#ifndef USE_LAYER_DISPLACE
|
|
1991
2005
|
#include <begin_vertex>
|
|
1992
2006
|
#endif
|
|
1993
|
-
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <skinning_vertex>","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;"),
|
|
1994
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2007
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","#include <skinning_vertex>","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
2008
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new ke(Tt)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e);let o=this.occlusion.flow(e,"b",{slot:"occlusion"});this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let i=this.color.flow(e,"c",{slot:"color"}),a=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),d=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#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(`
|
|
1995
2009
|
`));let f=["#include <normal_fragment_begin>",`
|
|
1996
2010
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1997
2011
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -2000,7 +2014,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2000
2014
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2001
2015
|
normal *= -1.0;
|
|
2002
2016
|
}
|
|
2003
|
-
`," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(
|
|
2017
|
+
`," BlinnPhongMaterial material;"];if(this.bumpMap){e.include(Ho.dHdxy),e.include(Ho.perturbNormalArb);let m=this.bumpMap.texture.flow(e,"t"),y=this.bumpMap.flow(e,"v3"),g=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",x="";this.bumpMap.projection.value===4?x=`
|
|
2004
2018
|
vec3 bumpNormal = vec3(0.0);
|
|
2005
2019
|
{
|
|
2006
2020
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2008,13 +2022,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2008
2022
|
vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2009
2023
|
vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2010
2024
|
|
|
2011
|
-
vec2 grad0 = dHdxy(${
|
|
2025
|
+
vec2 grad0 = dHdxy(${m.result}, uv0, ${g});
|
|
2012
2026
|
vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
|
|
2013
2027
|
|
|
2014
|
-
vec2 grad1 = dHdxy(${
|
|
2028
|
+
vec2 grad1 = dHdxy(${m.result}, uv1, ${g});
|
|
2015
2029
|
vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
|
|
2016
2030
|
|
|
2017
|
-
vec2 grad2 = dHdxy(${
|
|
2031
|
+
vec2 grad2 = dHdxy(${m.result}, uv2, ${g});
|
|
2018
2032
|
vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
|
|
2019
2033
|
|
|
2020
2034
|
bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
|
|
@@ -2024,21 +2038,21 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2024
2038
|
normal = bumpNormal;
|
|
2025
2039
|
`:x=`
|
|
2026
2040
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2027
|
-
vec2 grad = dHdxy(${
|
|
2041
|
+
vec2 grad = dHdxy(${m.result}, bumpMapCachedUv, ${g});
|
|
2028
2042
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2029
2043
|
`,f.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2030
2044
|
${y.result};
|
|
2031
2045
|
${x}
|
|
2032
|
-
`)}f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),
|
|
2046
|
+
`)}f.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",a.code," vec3 specular = "+a.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),u&&f.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),f.push("material.diffuseColor = diffuseColor;"),f.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),f.push("vec3 ao = aoEnabled && "+o.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;");let h="1.0";this.mask&&(this.mask.analyze(e),h=`luminance(${this.mask.flow(e,"v3").result})`),f.push(`
|
|
2033
2047
|
if (outgoingLight != diffuseColor) {
|
|
2034
2048
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2035
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${
|
|
2036
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${
|
|
2049
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * ${h} * lightAccu;
|
|
2050
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result} * ${h}, ${d.result} );
|
|
2037
2051
|
|
|
2038
2052
|
outgoingLight *= ao;
|
|
2039
2053
|
}
|
|
2040
|
-
`),
|
|
2041
|
-
`)}return
|
|
2054
|
+
`),c&&f.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?f.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result});`):f.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p&&f.push(`gl_FragColor.a *= ${p.result};`),f.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=f.join(`
|
|
2055
|
+
`)}return r}};var Ha=require("three");var el=class extends Rt{constructor(){super("standard");this.nodeType="Standard";this.color=new ke(Tt),this.roughness=new J(.3),this.metalness=new J(0),this.reflectivity=new J(.5),this.previousModelViewMatrix=new qt,this.previouseProjectionMatrix=new qt,this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0),this.occlusion=new ht(!0)}get category(){return"physical"}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(Ha.UniformsUtils.merge([Ha.UniformsLib.fog,Ha.UniformsLib.lights])),Ha.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2042
2056
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2043
2057
|
#if !defined( USE_LAYER_DISPLACE )
|
|
2044
2058
|
#include <defaultnormal_vertex>
|
|
@@ -2055,9 +2069,9 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2055
2069
|
#if !defined( USE_LAYER_DISPLACE )
|
|
2056
2070
|
#include <begin_vertex>
|
|
2057
2071
|
#endif /* !USE_LAYER_DISPLACE */
|
|
2058
|
-
`];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;"),
|
|
2059
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2060
|
-
`));let
|
|
2072
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
2073
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled});let o={gamma:!0};this.color===void 0&&(this.color=new ke(Tt)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e);let i=this.occlusion.flow(e,"b",{slot:"occlusion"});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 a=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),l=this.metalness.flow(e,"f"),d=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,f=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0,h=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","#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(`
|
|
2074
|
+
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
2061
2075
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
2062
2076
|
vec3 viewdx = dFdx(vViewPosition);
|
|
2063
2077
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -2065,7 +2079,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2065
2079
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2066
2080
|
normal *= -1.0;
|
|
2067
2081
|
}
|
|
2068
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(
|
|
2082
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];if(this.bumpMap){e.include(Ho.dHdxy),e.include(Ho.perturbNormalArb);let g=this.bumpMap.texture.flow(e,"t"),x=this.bumpMap.flow(e,"v3"),S=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",w="";this.bumpMap.projection.value===4?w=`
|
|
2069
2083
|
vec3 bumpNormal = vec3(0.0);
|
|
2070
2084
|
{
|
|
2071
2085
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2091,10 +2105,10 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2091
2105
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2092
2106
|
vec2 grad = dHdxy(${g.result}, bumpMapCachedUv, ${S});
|
|
2093
2107
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2094
|
-
`,
|
|
2108
|
+
`,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2095
2109
|
${x.result};
|
|
2096
2110
|
${w}
|
|
2097
|
-
`)}if(
|
|
2111
|
+
`)}if(m.push(a.code," vec3 diffuseColor = "+a.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",l.code," float metalnessFactor = "+l.result+";"),this.roughnessMap){let g=this.roughnessMap.texture.flow(e,"t"),x=this.roughnessMap.flow(e,"v3"),S="";this.roughnessMap.projection.value===4?S=`
|
|
2098
2112
|
float roughnessChange = 1.0;
|
|
2099
2113
|
{
|
|
2100
2114
|
vec2 uv0 = g${this.roughnessMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2114,22 +2128,22 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2114
2128
|
|
|
2115
2129
|
vec4 vals = texture(${g.result}, roughnessMapCachedUv);
|
|
2116
2130
|
float roughnessFactor = luminance(vals.rgb) * ${s.result};
|
|
2117
|
-
`,
|
|
2131
|
+
`,m.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2118
2132
|
${x.result};
|
|
2119
2133
|
|
|
2120
2134
|
const float roughnessScale = 1.0;
|
|
2121
2135
|
|
|
2122
2136
|
${S}
|
|
2123
|
-
`)}else
|
|
2137
|
+
`)}else m.push(s.code," float roughnessFactor = "+s.result+";");p&&m.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),m.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),m.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),h?m.push(h.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+h.result+" ) ), diffuseColor, metalnessFactor );"):m.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),m.push("#include <lights_fragment_begin>"),m.push("#include <lights_fragment_end>"),m.push("vec3 ao = aoEnabled && "+i.result+" ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse)) + reflectedLight.directSpecular + reflectedLight.indirectSpecular;");let y="1.0";this.mask&&(this.mask.analyze(e),y=`luminance(${this.mask.flow(e,"v3").result})`),m.push(`
|
|
2124
2138
|
if (outgoingLight != diffuseColor) {
|
|
2125
2139
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2126
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${
|
|
2127
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${
|
|
2140
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${d.result} * ${y} * lightAccu;
|
|
2141
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${d.result} * ${y}, ${c.result} );
|
|
2128
2142
|
|
|
2129
2143
|
outgoingLight *= ao;
|
|
2130
2144
|
}
|
|
2131
|
-
`),
|
|
2132
|
-
`)}return
|
|
2145
|
+
`),u&&m.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),p?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),f&&m.push(`gl_FragColor.a *= ${f.result};`),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
|
|
2146
|
+
`)}return r}};var tl=require("three");var rl=class extends Rt{constructor(){super("toon");this.nodeType="Toon";this.color=new ke(Tt),this.specular=new ke(1118481),this.shininess=new J(30),this.previousModelViewMatrix=new qt,this.previouseProjectionMatrix=new qt,this.shadingAlpha=new J(1),this.shadingBlend=new Pe(0)}get category(){return"toon"}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({resolution:Ae.resolution}),e.mergeUniform({previousModelViewMatrix:this.previousModelViewMatrix}),e.mergeUniform({previousProjectionMatrix:this.previouseProjectionMatrix}),e.mergeUniform(tl.UniformsUtils.merge([tl.UniformsLib.fog,tl.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
2133
2147
|
`));let i=["#include <beginnormal_vertex>",`
|
|
2134
2148
|
#ifndef USE_LAYER_DISPLACE
|
|
2135
2149
|
#include <defaultnormal_vertex>
|
|
@@ -2146,8 +2160,8 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2146
2160
|
#ifndef USE_LAYER_DISPLACE
|
|
2147
2161
|
#include <begin_vertex>
|
|
2148
2162
|
#endif
|
|
2149
|
-
`];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;"),
|
|
2150
|
-
`)}else{e.mergeUniform({penumbraSize:
|
|
2163
|
+
`];o&&i.push(o.code,o.result?"displaced_position = "+o.result+";":""),i.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),i.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),i.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=i.join(`
|
|
2164
|
+
`)}else{e.mergeUniform({penumbraSize:Ae.penumbraSize}),e.mergeUniform({frameIndex:Ae.frameIndex}),e.mergeUniform({aoMap:Ae.aoRenderTarget}),e.mergeUniform({aoEnabled:Ae.aoEnabled}),this.color===void 0&&(this.color=new ke(Tt)),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"),a=this.shininess.flow(e,"f"),s=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),d=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,c=this.alpha?this.alpha.flow(e,"f"):void 0,u=this.alphaOverride?this.alphaOverride.flow(e,"f"):void 0;e.requires.transparent=c!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"uniform sampler2D aoMap;","uniform bool aoEnabled;","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>",`
|
|
2151
2165
|
varying vec3 vViewPosition;
|
|
2152
2166
|
struct ToonMaterial {
|
|
2153
2167
|
vec3 diffuseColor;
|
|
@@ -2176,7 +2190,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2176
2190
|
if (dot(normal, faceNormal) < 0.0) {
|
|
2177
2191
|
normal *= -1.0;
|
|
2178
2192
|
}
|
|
2179
|
-
`," ToonMaterial material;"];if(this.bumpMap){e.include(
|
|
2193
|
+
`," ToonMaterial material;"];if(this.bumpMap){e.include(Ho.dHdxy),e.include(Ho.perturbNormalArb);let h=this.bumpMap.texture.flow(e,"t"),m=this.bumpMap.flow(e,"v3"),y=this.bumpMapIntensity?this.bumpMapIntensity.flow(e,"f").result:"1.0",g="";this.bumpMap.projection.value===4?g=`
|
|
2180
2194
|
vec3 bumpNormal = vec3(0.0);
|
|
2181
2195
|
{
|
|
2182
2196
|
vec2 uv0 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs0;
|
|
@@ -2184,13 +2198,13 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2184
2198
|
vec2 uv2 = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs2;
|
|
2185
2199
|
vec3 weights = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_triplanarWeights;
|
|
2186
2200
|
|
|
2187
|
-
vec2 grad0 = dHdxy(${
|
|
2201
|
+
vec2 grad0 = dHdxy(${h.result}, uv0, ${y});
|
|
2188
2202
|
vec3 n0 = perturbNormalArb(-vViewPosition, normal, grad0, faceDirection);
|
|
2189
2203
|
|
|
2190
|
-
vec2 grad1 = dHdxy(${
|
|
2204
|
+
vec2 grad1 = dHdxy(${h.result}, uv1, ${y});
|
|
2191
2205
|
vec3 n1 = perturbNormalArb(-vViewPosition, normal, grad1, faceDirection);
|
|
2192
2206
|
|
|
2193
|
-
vec2 grad2 = dHdxy(${
|
|
2207
|
+
vec2 grad2 = dHdxy(${h.result}, uv2, ${y});
|
|
2194
2208
|
vec3 n2 = perturbNormalArb(-vViewPosition, normal, grad2, faceDirection);
|
|
2195
2209
|
|
|
2196
2210
|
bumpNormal = n0 * weights.z + n1 * weights.x + n2 * weights.y;
|
|
@@ -2200,23 +2214,23 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
2200
2214
|
normal = bumpNormal;
|
|
2201
2215
|
`:g=`
|
|
2202
2216
|
vec2 bumpMapCachedUv = g${this.bumpMap.uuid.toString().replace(/-/g,"")}_writeUvs;
|
|
2203
|
-
vec2 grad = dHdxy(${
|
|
2217
|
+
vec2 grad = dHdxy(${h.result}, bumpMapCachedUv, ${y});
|
|
2204
2218
|
normal = perturbNormalArb( - vViewPosition, normal, grad, faceDirection );
|
|
2205
2219
|
`,p.push(`// Call the Texture Layer's function once here so that it writes out its procedural UV coordinates
|
|
2206
|
-
${
|
|
2220
|
+
${m.result};
|
|
2207
2221
|
${g}
|
|
2208
|
-
`)}p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),
|
|
2222
|
+
`)}p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",i.code," vec3 specular = "+i.result+";",a.code," float shininess = max( 0.0001, "+a.result+" );"," float specularStrength = 1.0;"),c&&p.push(c.code,"#ifdef ALPHATEST","if ( "+c.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 ao = aoEnabled ? tex2D(aoMap, gl_FragCoord.xy / resolution).rgb : vec3(1.0);","vec3 outgoingLight = ((reflectedLight.directDiffuse + reflectedLight.indirectDiffuse) * ao) + reflectedLight.directSpecular;");let f="1.0";this.mask&&(this.mask.analyze(e),f=`luminance(${this.mask.flow(e,"v3").result})`),p.push(`
|
|
2209
2223
|
if (outgoingLight != diffuseColor) {
|
|
2210
2224
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
2211
2225
|
accumAlpha += ( 1.0 - accumAlpha ) * ${s.result} * ${f} * lightAccu;
|
|
2212
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${
|
|
2226
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${s.result} * ${f}, ${l.result} );
|
|
2213
2227
|
}
|
|
2214
|
-
`),
|
|
2215
|
-
`)}return t}};var Ic=require("three");var Ac=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 Uu=class extends Ac{create(r){return URL.createObjectURL(new Blob([r]))}dispose(r,e){URL.revokeObjectURL(e)}},ku;function Vg(n){return typeof n=="string"?n:(ku||(ku=new Uu),ku.load(n))}var Cc=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")}},Nc=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 xa=class extends Cc{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 a of i){let s=this[a];s&&(s.image=this.img,s.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(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{t()}}else this.img=new Image,this.img.src=Vg(e),this.img.onload=t}getTexture(e){let t=this[e];if(t)return t;{let o;return this.isVideo?o=new Ic.VideoTexture(this.img,void 0,e,e):o=new Ic.Texture(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 hr=class extends xa{};var $e=require("three");function Bt(n,r){return r.color(n)}function zg(n,r){switch(n.type){case"fresnel":return $P(n,r);case"gradient":return YP(n,r);case"depth":return XP(n,r);case"normal":return KP(n,r);case"noise":return ZP(n,r);case"rainbow":return QP(n,r);case"toon":return JP(n,r);case"outline":return eO(n,r);case"transmission":return tO(n,r);case"color":return qP(n,r);case"pattern":return rO(n,r)}}function WP(n){return{type:n.type}}function Gr(n,r){let{alpha:e,mode:t,isMask:o}=n,i=typeof e=="string"?(Number(r.getVariable(e))??100)/100:e;return{...WP(n),alpha:i,mode:t,isMask:o}}function qP(n,r){return{...Gr(n,r),color:Bt(n.color,r)}}function $P(n,r){let{bias:e,scale:t,intensity:o,factor:i,color:a}=n;return{...Gr(n,r),color:Bt(a,r),bias:e,scale:t,intensity:o,factor:i}}function YP(n,r){let{gradientType:e,smooth:t,colors:o,steps:i,angle:a,offset:s,morph:c}=n;return{...Gr(n,r),gradientType:e,smooth:t,colors:o.map(u=>new $e.Vector4(u[0],u[1],u[2],u[3])),num:o.length,steps:i,offset:new $e.Vector2(...s),morph:new $e.Vector2(...c),angle:a}}function XP(n,r){let{gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:s,direction:c,colors:u,steps:l,smooth:d}=n;return{...Gr(n,r),gradientType:e,near:t,far:o,isVector:i,isWorldSpace:a,origin:new $e.Vector3(...s),direction:c?new $e.Vector3(...c):new $e.Vector3(1,0,0),colors:u.map(p=>p!==void 0?new $e.Vector4(p[0],p[1],p[2],p[3]):new $e.Vector4(0,0,0,0)),steps:l.slice(0,u.length),smooth:d}}function KP(n,r){let{cnormal:e}=n;return{...Gr(n,r),cnormal:new $e.Vector3(e[0],e[1],e[2])}}function ZP(n,r){return{...Gr(n,r),scale:n.scale,move:n.move,fA:new $e.Vector2(...n.fA),fB:new $e.Vector2(...n.fB),size:new $e.Vector3(...n.size),distortion:new $e.Vector2(...n.distortion),colorA:Bt(n.colorA,r),colorB:Bt(n.colorB,r),colorC:Bt(n.colorC,r),colorD:Bt(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,r){return{...Gr(n,r),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new $e.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new $e.Vector3(...n.offset)}}function JP(n,r){return{...Gr(n,r),positioning:n.positioning,colors:n.colors.map(e=>new $e.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new $e.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Bt(n.shadowColor,r),offset:new $e.Vector3(...n.offset)}}function eO(n,r){return{...Gr(n,r),outlineColor:Bt(n.outlineColor,r),contourColor:Bt(n.contourColor,r),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new $e.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function tO(n,r){return{...Gr(n,r),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function rO(n,r){return{...Gr(n,r),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new $e.Vector2(...n.offset),colorA:Bt(n.colorA,r),colorB:Bt(n.colorB,r),frequency:new $e.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new $e.Vector2(...n.vertical),horizontal:new $e.Vector2(...n.horizontal),sides:n.sides}}var an=class extends xt{};var jg=require("three");var Hu={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Wu={depth:["colors"]};function oO(n,r,e){if(r==="isMask")return!0;let t=Hu[n.type],o=Wu[n.type];if(o!==void 0){let i=n.color;if(o.includes(r)){let a=i[r]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return t!==void 0?t.includes(r):!1}function qu(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 a=i.image,s=r.image(a),c=t;c.image instanceof hr||c.image.deref(),c.image=s}if("video"in i){let a=i.video,s=r.video(a),c=t;c.image instanceof hr||c.image.deref(),c.image=s}if("wrapping"in i){let a=t;a.wrap=i.wrapping}if("repeat"in i||"offset"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),s.updateMatrix()}return o}function Fg(n,r,e,t){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if($u(i,e,t,r)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=t.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof on))switch(o=o||oO(e,i,a),s.constructor){case Re:if(typeof a=="string"){let c=r.getColor(a);c&&(s.value=c);break}else{let c=a;s.value instanceof an?s.value=new xt(c.r,c.g,c.b,c.a):s.setRGBA(c);break}case Jt:if(typeof a=="string"){let c=r.getColor(a);c&&(s.value=c);break}else{let c=a;s.value instanceof an?s.value=new xt(c.r,c.g,c.b,c.a):s.value.setRGBA(c.r,c.g,c.b,c.a);break}case tt:{let c=a;s.value.setX(c[0]),s.value.setY(c[1]);break}case Lt:{let c=a;s.value.setX(c[0]),s.value.setY(c[1]),s.value.setZ(c[2]);break}case Ht:{qu(a,r,e);break}case Rr:{s.value=a.map(c=>new jg.Vector4(...c));break}default:{s.value=a;break}}}return o}var sn=(n,r,e)=>Math.max(0,Math.min(1,Number(r.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,ro=class{constructor(r,e,t,o,i){this.id=r;this.uuid=e;this.data=t;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in t)$u(a,this,t,i)}get type(){return this.data.type}static create(r,e,t,o){if(t.type==="light")return cr.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),a=new Nn(i,t.texture.wrapping),s=new _c(i),c=new Pc(t.texture.repeat,t.texture.offset),u=new J(t.crop?1:0),l=new Pe(t.projection??0),d=new Pe(["x","y","z"].indexOf(t.axis)??0),p=new Pe(t.side??0),f=new tt(t.size?new Fe.Vector2(t.size[0],t.size[1]):new Fe.Vector2(100,100)),m=new J(t.blending??0),h=new J(sn(t.alpha,o)),y=new Pe(t.mode??0),g=new at(t.isMask??!1),x=new nn(a,s,u,l,d,p,f,m,c,h,y,g),S=new De(x.calpha,"f");return new Ke(r,e,t,{texture:a,textureSize:s,crop:u,projection:l,axis:d,side:p,size:f,blending:m,mat:c,alpha:h,mode:y,isMask:g},x,y,S,g,o)}else if(t.type==="matcap"){let i=o.image(t.texture.image),a=new Nn(i,t.texture.wrapping),s=new J(sn(t.alpha,o)),c=new Pe(t.mode??0),u=new at(t.isMask??!1),l=new ca(a,s,c,u),d=new De(l.calpha,"f");return new Ke(r,e,t,{texture:a,alpha:s,mode:c,isMask:u},l,c,d,u,o)}else if(t.type==="displace")if(t.displacementType==="noise"){let i=new Lt(new Fe.Vector3(...t.offset)),a=new J(t.scale??10),s=new J(t.intensity??8),c=new J(t.movement??1),u=new Pe(t.noiseType??0),l=new Pe(t.voronoiStyle??0),d=new J(t.smoothness??.5),p=new J(t.seed??0),f=new J(t.highCut??1),m=new J(t.lowCut??0),h=new Pe(t.quality??1),y=new ya(s,c,i,l,d,p,f,m,h,a,u);return new Cs(r,e,t,{offset:i,scale:a,intensity:s,movement:c,noiseType:u,voronoiStyle:l,smoothness:d,seed:p,highCut:f,lowCut:m,quality:h},y,o)}else throw new Error;else return aO(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):Fg(o.props,t.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?qu(o.props,t.shared,this):!0;return!1}dispose(){if(nO(this)){let r=this.uniforms[`f${this.id}_texture`];if(!r)return!1;let e=r;e.image instanceof hr||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}},Ke=class extends ro{constructor(e,t,o,i,a,s,c,u,l){super(e,t,o,i,l);this.params=i;this.color=a;this.mode=s;this.alpha=c;this.isMask=u}},Cs=class extends ro{constructor(e,t,o,i,a,s){super(e,t,o,i,s);this.position=a}},cr=class extends ro{constructor(e,t,o,i,a,s){super(e,t,o,a,s);this.node=i}static createLigherLayer(e,t,o,i){let a,s=new J(sn(o.alpha,i)),c=new Pe(o.mode),u=new J(o.bumpMapIntensity),l=new J(sn(o.alphaOverride,i)),d;if(!o.visible)a=new En,d={};else if(o.category==="lambert"){a=new ws;let p=new Re(i.color(o.emissive)??0),f=new at(o.occlusion??!0);d={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new As;let p=new J(o.shininess??30),f=new Re(i.color(o.specular)??1118481);d={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new Ps;let p=new J(o.roughness??.3),f=new J(o.metalness??0),m=new J(o.reflectivity??.5),h=new at(o.occlusion??!0);d={roughness:p,metalness:f,reflectivity:m,occlusion:h},a.roughness=p,a.metalness=f,a.reflectivity=m,a.occlusion=h}else{a=new _s;let p=new J(o.shininess??30),f=new Re(o.specular!==void 0?i.color(o.specular)??1118481:1118481),m=new at(o.occlusion??!0);d={shininess:p,specular:f,occlusion:m},a.shininess=p,a.specular=f,a.occlusion=m}return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=c,a.bumpMapIntensity=u,a.alphaOverride=l,d.alpha=a.shadingAlpha,d.mode=a.shadingBlend,d.bumpMapIntensity=a.bumpMapIntensity,d.alphaOverride=a.alphaOverride,new cr(e,t,o,a,d,i)}get category(){return this.node.category}};function nO(n){let r=n instanceof ro?n.type:n;return r==="texture"||r==="video"||r==="displace_map"||r==="matcap"}function yr(n){return{alpha:new J(n.alpha??1),mode:new Pe(n.mode??0),isMask:new at(n.isMask??!1)}}function iO(n,r,e,t,o){switch(n.type){case"color":{let i=new Re(t.color??ht),a=yr(t),s=new In(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{color:i,...a},s,a.mode,c,a.isMask,o)}case"fresnel":{let i=new Re(t.color??16777215),a=new J(t.bias??.1),s=new J(t.scale??1),c=new J(t.intensity??2),u=new J(t.factor??1),l=yr(t),d=new vs(i,a,s,c,u,l.alpha,l.mode,l.isMask),p=new De(d.calpha,"f");return new Ke(r,e,n,{color:i,bias:a,scale:s,intensity:c,factor:u,...l},d,l.mode,p,l.isMask,o)}case"rainbow":{let i=new J(t.filmThickness??30),a=new J(t.movement??0),s=new Lt(t.wavelengths??new Fe.Vector3(0,0,0)),c=new J(t.noiseStrength??0),u=new J(t.noiseScale??1),l=new Lt(t.offset??new Fe.Vector3(0,0,0)),d=yr(t),p=new fa(i,a,s,c,u,l,d.alpha,d.isMask),f=new De(p.calpha,"f");return new Ke(r,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:c,noiseScale:u,offset:l,...d},p,d.mode,f,d.isMask,o)}case"transmission":{let i=new J(t.thickness??10),a=new J(t.ior??1.5),s=new J(t.roughness??.5),c=we.transmissionSize,u=we.transmissionRenderTarget,l=we.transmissionRenderTargetDepth,d=window.innerWidth,p=window.innerHeight,f=d>=p?new tt(p/d,1):new tt(1,d/p),m=yr(t),h=new ha(i,a,s,c,u,l,f,m.alpha),y=new De(h.calpha,"f");return new Ke(r,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...m},h,m.mode,y,m.isMask,o)}case"toon":{let i=new Pe(t.positioning??0),a;t.colors?a=new Rr(t.colors.length,t.colors):(a=new Rr(10,new Fe.Vector4(0,0,0,1)),a.value[1]=new Fe.Vector4(1,1,1,1));let s;t.steps?s=new Br(t.steps.length,t.steps):(s=new Br(10,1),s.value[0]=0);let c=new Lt(t.source??new Fe.Vector3(0,0,0)),u=new at(t.isWorldSpace??!0),l=new J(t.noiseStrength??0),d=new J(t.noiseScale??1),p=new Jt(t.shadowColor),f=new Lt(t.offset??new Fe.Vector3(0,0,0)),m=yr(t),h=new ma(i,a,s,c,u,l,d,p,f,m.alpha),y=new De(h.calpha,"f");return new Ke(r,e,n,{positioning:i,colors:a,steps:s,source:c,isWorldSpace:u,noiseStrength:l,noiseScale:d,shadowColor:p,offset:f,...m},h,m.mode,y,m.isMask,o)}case"outline":{let i=new Re(t.outlineColor??16777215),a=new Re(t.contourColor??16777215),s=new J(t.outlineWidth??.1),c=new J(t.contourWidth??.1),u=new J(t.outlineThreshold??.1),l=new J(t.contourThreshold??.1),d=new J(t.outlineSmoothing??.1),p=new J(t.contourFrequency??.1),f=new Lt(t.contourDirection??new Fe.Vector3(0,1,0)),m=new at(t.positionalLines??!1),h=new at(t.compensation??!0),y=we.normalRenderTarget,g=we.normalRenderTargetDepth,x=we.pixelRatioNode,S=we.resolution,w=yr(t),b=new ua(i,a,s,c,u,l,d,p,f,m,h,S,y,g,x,w.alpha),T=new De(b.calpha,"f");return new Ke(r,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:c,outlineThreshold:u,contourThreshold:l,outlineSmoothing:d,contourFrequency:p,contourDirection:f,positionalLines:m,compensation:h,...w},b,w.mode,T,w.isMask,o)}case"depth":{let i=new Pe(t.gradientType??0),a=new at(t.smooth??!1),s=new J(t.near??50),c=new J(t.far??200),u=new J(t.isVector??1),l=new J(t.isWorldSpace??0),d=new Lt(t.origin??new Fe.Vector3),p=new Lt(t.direction??new Fe.Vector3),f;t.colors?f=new Rr(t.colors.length,t.colors):(f=new Rr(2,new Fe.Vector4(0,0,0,1)),f.value[1]=new Fe.Vector4(1,1,1,1));let m;t.steps?m=new Br(t.steps.length,t.steps):(m=new Br(2,1),m.value[0]=0);let h=yr(t),y=new sa(i,a,s,c,u,l,d,p,f,m,h.alpha,h.isMask),g=new De(y.calpha,"f");return new Ke(r,e,n,{gradientType:i,smooth:a,near:s,far:c,isVector:u,isWorldSpace:l,origin:d,direction:p,colors:f,steps:m,...h},y,h.mode,g,h.isMask,o)}case"noise":{let i=new J(t.scale??1),a=new Lt(t.size??new Fe.Vector3(100,100,100)),s=new J(t.move??1),c=new tt(t.fA??new Fe.Vector2(1.7,9.2)),u=new tt(t.fB??new Fe.Vector2(8.3,2.8)),l=new tt(t.distortion??new Fe.Vector2(1,1)),d=new Jt(t.colorA),p=new Jt(t.colorB),f=new Jt(t.colorC),m=new Jt(t.colorD),h=new Pe(t.noiseType??0),y=new Pe(t.voronoiStyle??0),g=new J(t.highCut??1),x=new J(t.lowCut??0),S=new J(t.smoothness??.5),w=new J(t.seed??.5),b=new Pe(t.quality??1),T=yr(t),_=new da(i,a,s,c,u,l,d,p,f,m,T.alpha,h,T.isMask,y,g,x,S,w,b),v=new De(_.calpha,"f");return new Ke(r,e,n,{scale:i,size:a,move:s,fA:c,fB:u,distortion:l,colorA:d,colorB:p,colorC:f,colorD:m,noiseType:h,...T,voronoiStyle:y,highCut:g,lowCut:x,smoothness:S,seed:w,quality:b},_,T.mode,v,T.isMask,o)}case"normal":{let i=new Lt(t.cnormal??new Fe.Vector3(1,1,1)),a=yr(t),s=new na(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{cnormal:i,...a},s,a.mode,c,a.isMask,o)}case"gradient":{let i=new Pe(t.gradientType??0),a=new at(t.smooth??!1),s;t.colors?s=new Rr(t.colors.length,t.colors):(s=new Rr(10,new Fe.Vector4(0,0,0,1)),s.value[1]=new Fe.Vector4(1,1,1,1));let c;t.steps?c=new Br(t.steps.length,t.steps):(c=new Br(10,1),c.value[0]=0);let u=new tt(t.offset??new Fe.Vector2(0,0)),l=new tt(t.morph??new Fe.Vector2(0,0)),d=new J(t.angle??0),p=yr(t),f=new la(i,a,s,c,u,l,d,p.alpha,p.isMask),m=new De(f.calpha,"f");return new Ke(r,e,n,{gradientType:i,smooth:a,colors:s,steps:c,offset:u,morph:l,angle:d,...p},f,p.mode,m,p.isMask,o)}case"pattern":{let i=new Pe(t.style??0),a=new Pe(t.projection??0),s=new Pe(["x","y","z"].indexOf(t.axis)??0),c=new J(t.blending??0),u=new tt(t.offset??new Fe.Vector2(0,0)),l=new Jt(t.colorA),d=new Jt(t.colorB),p=new tt(t.frequency??new Fe.Vector2(10,10)),f=new J(t.size??.5),m=new J(t.variation??0),h=new J(t.smoothness??.5),y=new J(t.zigzag??0),g=new J(t.rotation??0),x=new tt(t.vertical??new Fe.Vector2(0,1)),S=new tt(t.horizontal??new Fe.Vector2(0,1)),w=new Pe(t.sides??6),b=yr(t),T=new pa(i,a,s,c,u,l,d,p,f,m,h,y,g,x,S,w,b.alpha,b.isMask),_=new De(T.calpha,"f");return new Ke(r,e,n,{style:i,projection:a,axis:s,blending:c,offset:u,colorA:l,colorB:d,frequency:p,size:f,variation:m,smoothness:h,zigzag:y,rotation:g,vertical:x,horizontal:S,sides:w,...b},T,b.mode,_,b.isMask,o)}default:{let i=new Re(1,0,0,1),a=yr(t),s=new In(i,a.alpha),c=new De(s.calpha,"f");return new Ke(r,e,n,{color:i,...a},s,a.mode,c,a.isMask,o)}}}function aO(n,r,e,t){let o=zg(e,t);return iO(e,n,r,o,t)}function $u(n,r,e,t){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=r.uniforms[`f${r.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=r.uniforms[`f${r.id}_alpha`];if(!o)return;if(o.value=sn(e.alpha,t)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=r.uniforms[`f${r.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function Mc(n,r){let e=0,t=n.layers.find(o=>o.data.type==="light");if(t){let o=t.data,i=Number(r.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(r.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=r.color(o.data.colorA).a,s=r.color(o.data.colorB).a,c=r.color(o.data.colorC).a,u=r.color(o.data.colorD).a,l=Math.min(a,Math.min(s,Math.min(c,u)));l<1&&(i=l)}e+=(1-e)*i}}return e<1}var tr=class extends kg.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},Ec=class extends tr{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}get hasAO(){return this.root.hasAO}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()}},Ln=class extends tr{constructor(e,t,o=!0){super();this.data=e;this.allowVariableSaves=o;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 a=this.flavors[i];return a===void 0&&(a=new Ec(e,t,o,this),this.flavors[i]=a,a.flatShading=e,a.side=t,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,t){this.data!==e&&this.reset0(e,t)}reset0(e,t){this.data=e;let o=e.layers??It.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>ro.create(this.layerIdGen++,i.id,i.data,t.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t.shared),this.transparent=Mc(e,t.shared),this.saveVariableLocations(t)}onVariableUpdate(e,t,o){if(e[0]==="alphaOverride")this.transparent=Mc(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(t)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(c=>c.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=Mc(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(t)/100,1)))):s.setValue(a,t))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let t=this.data.layers.find(o=>o.data.type==="light");t&&e.shared.getVariable(t.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(t=>t instanceof cr),this.lightLayer===void 0&&(this.lightLayer=new cr(0,"",{...kt.defaultData("light","phong"),visible:!1},new En,{},e)),this.dispose();for(let t of this.flavors)t&&t.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof cr);if(!e)return;let t=e.data,o=t.bumpMap,i=t.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof Ke&&s.color instanceof nn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,t,o){if(t!==void 0?this.data=t:t=this.data,this.transparent=Mc(t,o.shared),e.path[0]==="layers"){this.data=t;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=ro.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,s),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 s=this.layers.findIndex(u=>u.uuid===e.id),c=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,c),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(o.shared)}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(c=>c.uuid===a);if(s){let c=t.layers.data(a),u;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?u={...e.props,alpha:sn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:u={...e.props,alphaOverride:sn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...u?{props:u}:{},path:e.path.slice(2)},c,o)){let d=ro.create(this.layerIdGen++,a,c,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,d),this.onUpdate(o.shared)}}}}else this.reset(t,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let t=this.layers[e];t instanceof Ke?t.color.mask=void 0:t instanceof cr&&(t.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let t=this.layers[e];if(t instanceof Ke&&t.isMask.value&&t.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof cr?i.node.mask=new Ot(t.color,t.alpha,Ot.MUL):i instanceof Ke&&(i.isMask.value||(i.color.mask=new Ot(t.color,t.alpha,Ot.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof Ke),t=this.layers.findIndex(o=>o instanceof cr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let i=e+1;i<t;++i){let a=this.layers[i];if(a instanceof Ke){if(a.isMask.value)continue;o=new oa(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new De("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof cr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof Ke){if(i.isMask.value)continue;e=new oa(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 Ot(t,e[o].position,Ot.ADD),t=new Ot(t,new J(.5).setReadonly(!0),Ot.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,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,t);i.uniforms[`f${i.id}_intensity`].value=a}}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=(Hu[t.type]??[]).map(u=>t[u]),i=(Wu[t.type]??[]).map(u=>t[u]?.length??0),a=[...o,...i],s="isMask"in t&&t.isMask,c=`"${t.type}-${t.visible}-${s}"`;a.length?e+=`[${c}, "${a.join('","')}"],`:e+=c}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 Tc;e.needsJitter=this.needsJitter,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 Ke){let t=e.params.texture;if(t instanceof Nn&&!t.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(tr.prototype,{properties:{get:function(){return this.fragment.properties}}});var Dn=class extends Ln{constructor(r,e,t){super(r,e,!1),this.uuid=t,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var qg=ja(Ug());var Hg=new Map;function Wg(n){if(typeof n=="string")return n;let r=Hg.get(n);return r||(r={url:URL.createObjectURL(new Blob([n]))},Hg.set(n,r)),r.url}var Bn=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:Wg(r),format:"wav"},this.sound=new qg.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()}};var vt=require("three"),Dc=class{constructor(){this.type="ShapePath";this.color=new vt.Color;this.subPaths=[];this.currentPath=null}moveTo(r,e){return this.currentPath=new vt.Path,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,a){return this.currentPath?.bezierCurveTo(r,e,t,o,i,a),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,x){let S=h.x,w=y.x,b=g.x,T=x.x,_=h.y,v=y.y,C=g.y,P=x.y,N=(T-b)*(_-C)-(P-C)*(S-b),O=(w-S)*(_-C)-(v-_)*(S-b),A=(P-C)*(w-S)-(T-b)*(v-_),M=N/A,L=O/A;if(A===0&&N!==0||M<=0||M>=1||L<0||L>1)return null;if(N===0&&A===0){for(let X=0;X<2;X++)if(i(X===0?g:x,h,y),t.loc===e.ORIGIN){let R=X===0?g:x;return{x:R.x,y:R.y,t:t.t}}else if(t.loc===e.BETWEEN){let R=+(S+t.t*(w-S)).toPrecision(10),Z=+(_+t.t*(v-_)).toPrecision(10);return{x:R,y:Z,t:t.t}}return null}else{for(let Z=0;Z<2;Z++)if(i(Z===0?g:x,h,y),t.loc===e.ORIGIN){let z=Z===0?g:x;return{x:z.x,y:z.y,t:t.t}}let X=+(S+M*(w-S)).toPrecision(10),R=+(_+M*(v-_)).toPrecision(10);return{x:X,y:R,t:M}}}function i(h,y,g){let x=g.x-y.x,S=g.y-y.y,w=h.x-y.x,b=h.y-y.y,T=x*b-w*S;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(x*w<0||S*b<0){t.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){t.loc=e.BEYOND;return}let _;x!==0?_=w/x:_=b/S,t.loc=e.BETWEEN,t.t=_}function a(h,y){let g=[],x=[];for(let S=1;S<h.length;S++){let w=h[S-1],b=h[S];for(let T=1;T<y.length;T++){let _=y[T-1],v=y[T],C=o(w,b,_,v);C!==null&&g.find(P=>P.t<=C.t+Number.EPSILON&&P.t>=C.t-Number.EPSILON)===void 0&&(g.push(C),x.push(new vt.Vector2(C.x,C.y)))}}return x}function s(h,y,g){let x=new vt.Vector2;y.getCenter(x);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&a(h,w.points).forEach(T=>{S.push({identifier:w.identifier,isCW:w.isCW,point:T})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function c(h,y,g,x,S){(S==null||S==="")&&(S="nonzero");let w=new vt.Vector2;h.boundingBox.getCenter(w);let b=[new vt.Vector2(g,w.y),new vt.Vector2(x,w.y)],T=s(b,h.boundingBox,y);T.sort((O,A)=>O.point.x-A.point.x);let _=[],v=[];T.forEach(O=>{O.identifier===h.identifier?_.push(O):v.push(O)});let C=_[0].point.x,P=[],N=0;for(;N<v.length&&v[N].point.x<C;)P.length>0&&P[P.length-1]===v[N].identifier?P.pop():P.push(v[N].identifier),N++;if(P.push(h.identifier),S==="evenodd"){let O=P.length%2===0,A=P[P.length-2];return{identifier:h.identifier,isHole:O,for:A}}else if(S==="nonzero"){let O=!0,A=null,M=null;for(let L=0;L<P.length;L++){let X=P[L];y[X]&&(O?(M=y[X].isCW,O=!1,A=X):M!==y[X].isCW&&(M=y[X].isCW,O=!0))}return{identifier:h.identifier,isHole:O,for:A}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let u=0,l=999999999,d=-999999999,p=[];this.subPaths.forEach(h=>{let y=h.getPoints(),g=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<y.length;b++){let T=y[b];T.y>g&&(g=T.y),T.y<x&&(x=T.y),T.x>S&&(S=T.x),T.x<w&&(w=T.x)}d<=S&&(d=S+1),l>=w&&(l=w-1),y.length&&p.push({curves:h.curves,points:y,isCW:vt.ShapeUtils.isClockWise(y),identifier:u++,boundingBox:new vt.Box2(new vt.Vector2(w,x),new vt.Vector2(S,g))})});let f=p.map(h=>c(h,p,l,d,this.userData?.style.fillRule)),m=[];return p.forEach(h=>{let y=f[h.identifier];if(y&&!y.isHole){let g=new vt.Shape;g.curves=h.curves,f.filter(S=>S?.isHole&&S.for===h.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new vt.Path;b.curves=w.curves,g.holes.push(b)}}),m.push(g)}}),m}};var Yg,Yu=new Promise(n=>{Yg=n}),$g=!1;var Bc;function Xg(){if($g)return;if(Bc)return Bc;async function n(){let e=await import("./opentype.js");Yg(e),$g=!0}return Bc=n(),Bc}var Ns=class{async load(r,e,t=()=>{}){let{load:o}=await Yu;o(r,(i,a)=>{i||!a?t(i??"Something went wrong"):e(a)})}async parse(r){let{parse:e,Bidi:t}=await Yu;try{let o=e(r),i=new t,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function sO(n){return await(await fetch(n)).arrayBuffer()}var lO=new Ns;async function Xu(n){let r,e,t=!1;if(n.url?(r=await sO(n.url),e=n.url,t=n.url.startsWith("/")):n.data&&(r=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),r){let o=await lO.parse(r);if(o)return{font:o.font,url:e,intercepted:t,arr:r,bidi:o.bidi}}}var va=require("three");function cO(n,r){return r.state.glyphIndex===n||r.state.fina===n||r.state.medi===n||r.state.init===n}var Rc=class{constructor(r){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=r.isUserFont??!1,this._loadingPromise=Xu(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=Xu(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,a=[],s=0,c=t.length===i.length;for(let u=0;u<t.length;u++){let l=t[u].index,d=String.fromCharCode(t[u].unicode),p=i[s];if(cO(l,p)||c)a.push({char:d,index:l,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,m="",h=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,m=e.charAt(s),f+=m,h.push(r.charToGlyphIndex(m)),y=r.stringToGlyphs(f),y.length===1&&y[0].index===l&&(g=!0),s>e.length&&(g=!0);a.push({char:d,index:l,replacements:h,replacementChars:Array.from(f)}),s++}}return a}generateShapes(r,e){if(!this._isLoaded)return;let t=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=r.map(x=>this.getTextWidth(x,e)),s=e.width,c=this.getCharWidth(`
|
|
2216
|
-
`,e),
|
|
2217
|
-
`:v.unicode?String.fromCharCode(v.unicode):void 0,
|
|
2218
|
-
`)
|
|
2219
|
-
`)>=0&&(r-=i),t===3?e*.5-r*.5:t===2?e-r:0}getLineInitialOffsetY(r,e,t,o,i){let a=e*r,s=Math.abs(this.ascender-this.descender)*o,c=r-s,u=-this.ascender*o-c/2;return i===3?-(t-a-u):i===2?-(t*.5-a*.5-u):u}createPath(r,e,t,o,i){let a=r.getPath(t,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+r+'" does not exists in font family '+this.familyName+".");return}let s=new Dc,c=(r.advanceWidth??1)*e;if(r)for(let u of a.commands){let l=s.currentPath?.currentPoint;if(!(l&&u.type!=="Z"&&l.x===u.x&&-l.y===u.y))switch(u.type){case"M":s.moveTo(u.x,-u.y);break;case"L":s.lineTo(u.x,-u.y);break;case"Q":s.quadraticCurveTo(u.x1,-u.y1,u.x,-u.y);break;case"C":s.bezierCurveTo(u.x1,-u.y1,u.x2,-u.y2,u.x,-u.y);break}}return s.subPaths.forEach(u=>{let l=dO(u.curves);l!==void 0&&u.currentPoint.distanceTo(l)>0&&u.lineTo(l.x,l.y)}),{offsetX:c+i.fontSize*i.letterSpacing,path:s}}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 a=this.countSpaces(i.trimEnd());if(t.horizontalAlign===4&&e<r.length-1&&a){let s=t.width,c=this.getTextWidth(i,t);return(s-(c-a*o))/a}}return o}countSpaces(r){return(r.match(/ /g)||[]).length}};function dO(n){if(n.length){let r=n[0];if(r instanceof va.LineCurve)return r.v1;if(r instanceof va.CubicBezierCurve||r instanceof va.QuadraticBezierCurve)return r.v0}}var Ku=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,t){let o=this.objects.get(r);return o===void 0?(o=this.createObject(r,e,t),this.objects.set(r,o)):o.isShared=!0,o}forceDelete(r){let e=this.objects.get(r);e&&(this.disposeObject(e),this.objects.delete(r))}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 Ku{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,t,o){let i=On(e,t,this.flatShading,o);return i.computeBoundingSphere(),i}};var Kg={markNeedsUpdateRendererDirty:()=>{}};var Zu=require("three"),Qu=class extends Nc{constructor(e){super();this.shared=e}create(e){return new xa(e,this.shared)}},Rn=class{constructor(r,e={}){this.data=r;this.geometryCache=new Is(!0);this.geometryCache2=new Is(!1);this.imageHolderCache=new Qu(this);this.thisContext={scene:Kg,shared:this};this.deletedMaterial=new Dn(It.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new hr(Ai.emptyImage,this);this.deletedVideo=new hr(xi.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;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);this.reset(r)}setRequestRender(r){this._requestRender=r}setEntityOpContext(r){this.entityOpContext=r}reset(r,e=!1){this.resetLib(r.lib);for(let{id:t,data:o}of r.variables)this.addVariableHolder(t,o),e&&this.updateVariableHolder(t,o);for(let[t,o]of Object.entries(r.images))this.addImage(t,o);for(let[t,o]of Object.entries(r.videos))this.addVideo(t,o);for(let[t,o]of Object.entries(r.colors))this.addColor(t,o);for(let[t,o]of Object.entries(r.materials))this.addMaterial(t,o);for(let[t,o]of Object.entries(r.audios))this.addAudio(t,o);for(let[t,o]of Object.entries(r.fonts))this.addFont(t,o)}addMaterial(r,e){if(this.materials[r]){let t=this.materials[r];t.reset(e,this.thisContext),t.dispose()}else{let t=new Dn(e,this.thisContext,r);this.materials[r]=t}}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):r==null?(console.error("material is undefined or null"),this.deletedMaterial):new Ln(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 hr(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 hr(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 an(e.r,e.g,e.b,e.a):this.colors[r]=new an(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 xt(0,0,0,0))}else return"a"in r?new xt(r.r,r.g,r.b,r.a):new xt(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 Bn)return e;{let t=new Bn({src:e.data});return this.audios[r]=t,t}}deleteAudio(r){let e=this.audios[r];e&&(e instanceof Bn&&e.dispose(),delete this.audios[r])}addFont(r,e){this.fonts[r]=new Rc(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 Bn&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(r,e){return this.variables[r]===void 0?(this.variables[r]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0),!0):(this.variables[r].value=e.value,!1)}resetDynamicVariablePlayState(){for(let r in this.variables)this.variables[r].dynamicVariablePlayState!==void 0&&(this.variables[r].dynamicVariablePlayState="Playing",this.variables[r].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(r,e){this.updateVariable(r,e.value)}updateVariable(r,e){if(this.variables[r]===void 0)return!1;this.variables[r].value=e;let t=e;for(;typeof t=="string";)t=this.variables[t].value;let o=this.entityOpContext.scene;for(let i=this.variables[r].locations.length-1;i>=0;i--){let a=this.variables[r].locations[i];if(a[0]==="material"){let s=a[1],c=t,u={scene:o,shared:this},l=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(l,c,u)});let d=this.materials[s];d&&d.onVariableUpdate(l,c,u)}else{let s=o.find(a[0]);if(s===void 0){this.variables[r].locations.splice(i,1);continue}if(a[1]!=="geometry"){for(let c=1;c<a.length-1;c++)s=s[a[c]];a[1]==="rotation"&&(t=Zu.MathUtils.DEG2RAD*t),s[a[a.length-1]]=t}if(s=o.find(a[0]),Oe.is(s)){if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let c=s;s.component&&(c=s.component);let u=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(u.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0),c.instances.forEach(l=>{let d=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(d.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0)})}}}}return!0}deleteVariable(r){this.variables[r]&&delete this.variables[r]}getVariable(r,e){if(Array.isArray(r)){if(r[0]==="mouse")return this.mouseProperty?.[r[1]]??0;if(r[0]==="raycast")return this.raycastProperty?.[r[1]]??0;let t=this.entityOpContext.scene.find(r[0]);if(r[1]==="width"||r[1]==="height"||r[1]==="depth")return t.geometry.userData.parameters[r[1]];for(let o=1;o<r.length;o++)t=t[r[o]];return r[1]==="rotation"&&(t*=Zu.MathUtils.RAD2DEG),t}for(let t in this.variables){if(e===void 0)break;let o=this.variables[t],i=o.locations?.findIndex(a=>lt.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof r=="string"){let t=r,o=r;do{if(o=t,this.variables[t]===void 0)break;t=this.variables[t].value}while(typeof t=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),t}else return r}getVariables(){return this.variables}getDynamicVariablePlayState(r){return this.variables[r]?.dynamicVariablePlayState}setDynamicVariablePlayState(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(r){return this.variables[r]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(r,e){this.variables[r]!==void 0&&(this.variables[r].dynamicVariableToggleIsForward=e)}resetLib(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t.asset);for(let[e,t]of Object.entries(r.audios))this.addAudio(e,t.asset);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t.asset);for(let[e,t]of Object.entries(r.fonts))this.addFont(e,t.asset);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,t.asset);for(let[e,t]of Object.entries(r.videos))this.addVideo(e,t.asset);for(let[e,t]of Object.entries(r.variables))this.addVariableHolder(e,t.asset)}updateLibByOp(r,e){r.path[0]==="images"?r.path.length===1&&r.type===1?this.addImage(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===1&&r.type===1?this.addVideo(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===1&&r.type===1?this.addAudio(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="colors"?r.path.length===1&&r.type===1?this.addColor(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteMaterial(r.id):r.path[0]==="fonts"?r.path.length===1&&r.type===1?this.addFont(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===1&&r.type===1?this.addVariableHolder(r.id,r.data.asset):r.path.length===1&&r.type===2&&this.deleteVariable(r.id):r.path[0]==="components"&&e.updateByLibOp(r,this)}updateByOp(r,e,t){this.data=e,r.path[0]==="images"?r.path.length===2&&r.type===0?r.props.data&&this.getImage(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addImage(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteImage(r.id):r.path[0]==="videos"?r.path.length===2&&r.type===0?r.props.data&&this.getVideo(r.path[1]).updateSrc(r.props.data):r.path.length===1&&r.type===1?this.addVideo(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteVideo(r.id):r.path[0]==="audios"?r.path.length===2&&r.type===0?r.props.data&&this.addAudio(r.path[1],e.audios[r.path[1]]):r.path.length===1&&r.type===1?this.addAudio(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteAudio(r.id):r.path[0]==="colors"?r.path.length===2&&r.type===0?this.updateColor(r.path[1],r.props):r.path.length===1&&r.type===1?this.addColor(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteColor(r.id):r.path[0]==="materials"?r.path.length===1&&r.type===1?this.addMaterial(r.id,r.data):r.path.length===1&&r.type===2?this.deleteMaterial(r.id):r.path.length>1&&this.getMaterial(r.path[1]).updateByOp(ct.drop(r,2),e.materials[r.path[1]],{shared:this,scene:t}):r.path[0]==="fonts"?r.path.length===2&&r.type===0?this.updateFont(r.path[1],r,t):r.path.length===1&&r.type===1?this.addFont(r.id,r.data):r.path.length===1&&r.type===2&&this.deleteFont(r.id):r.path[0]==="variables"?r.path.length===2&&r.type===0&&"value"in r.props?this.updateVariable(r.path[1],r.props.value):r.path.length===1&&r.type===4?this.addVariableHolder(r.id,r.data):r.path.length===1&&r.type===5&&this.deleteVariable(r.id):r.path[0]==="lib"&&this.updateLibByOp(ct.drop(r,1),t)}updateFont(r,e,t){if(e.props.url){let o=this.getFont(r),i={...this.data.fonts[r],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),t.updateFont(r,this)}}},Zg=new Rn(Pr.emptyData());var rr=class extends Et{updateByPatchedOp(e,t,o){if(super.updateByPatchedOp(e,t,o),$m(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Gt(e.path,["material"])&&this.material instanceof tr)"material"in t&&typeof t.material!="string"&&this.material.updateByOp(ct.drop(e,1),t.material,o);else if(Gt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in t&&i<this.material.length){let a=t.materials[i];typeof a!="string"&&this.material[i].updateByOp(ct.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}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&&Hs(this.material).forEach(e=>{e instanceof tr&&(e instanceof Dn||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var dr=require("three");var Qg=new dr.Vector3,Jg=new dr.Vector4,e0=new dr.Vector4,pO=new dr.Vector3,t0=new dr.Matrix4,pt=class extends rr{constructor(e,t,o){super(e,t);this.data=t;this.localGeometry=void 0,t.bindMode&&t.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=t.bindMode,this.bindMatrix=new dr.Matrix4().fromArray(t.bindMatrix),this.bindMatrixInverse=new dr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof dr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof Rn){let e=this.geometryCreateDeleyed,t=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=t.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Qa.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Qa.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,t,o){super.updateByPatchedOp(e,t,o),Gt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(ct.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 l={...this.data.geometry,...i};this.localGeometry=On(l,t,this.data.flatShading,this)}let a,s,c;i.scaleBaked?[a,s,c]=i.scaleBaked:{width:a,height:s,depth:c}=i;let u=this.localGeometry.userData;u.sxPrev!==void 0&&ms(this.localGeometry.attributes,a/u.sxPrev,s/u.syPrev,c/u.szPrev),u.sxPrev=a,u.syPrev=s,u.szPrev=c}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=On(i,t,this.data.flatShading,this)}}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&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof ut&&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)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let t=new dr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){t.fromBufferAttribute(o,i);let s=1/t.manhattanLength();s!==1/0?t.multiplyScalar(s):t.set(1,0,0,0),o.setXYZW(i,t.x,t.y,t.z,t.w)}}boneTransform(e,t){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;Jg.fromBufferAttribute(i.attributes.skinIndex,e),e0.fromBufferAttribute(i.attributes.skinWeight,e),Qg.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){let s=e0.getComponent(a);if(s!==0){let c=Jg.getComponent(a);t0.multiplyMatrices(o.bones[c].matrixWorld,o.boneInverses[c]),t.addScaledVector(pO.copy(Qg).applyMatrix4(t0),s)}}return t.applyMatrix4(this.bindMatrixInverse)}};function fO(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 a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,c=new ur.Vector3(o[a],o[a+1],o[a+2]);r.has(s)?r.get(s)?.normals.push(c):r.set(s,{normals:[c],result:new ur.Vector3})}r.forEach((a,s)=>{for(let c of a.normals)a.result.add(c);a.result.divideScalar(a.normals.length)});for(let a=0;a<t.length;a+=3){let s=`${t[a]}_${t[a+1]}_${t[a+2]}`,c=r.get(s)?.result;c&&(i[a]=c.x,i[a+1]=c.y,i[a+2]=c.z)}n.geometry.setAttribute("extrudeNormal",new ur.Float32BufferAttribute(i,3))}function mO(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 ur.Vector3;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 ur.Float32BufferAttribute(t,3))}function ba(n){if(Array.isArray(n.material)){for(let r of n.material)if(r.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof tr)||n.material.getLayersOfType("outline").length===0)return;n instanceof pt&&n.is2DAndNoDepth?mO(n):fO(n)}function Sa(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=[ur.MathUtils.seededRandom(o),ur.MathUtils.seededRandom(o+1e4),ur.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)t[a]=i[a%3];n.geometry.setAttribute("randomColor",new ur.BufferAttribute(t,3))}var hO;qi.then(n=>{hO=n});var oo=new Oo.Box3,Ms=new Oo.Vector3;function r0(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="SubdivGeometry"&&(r=!0)}),r}var Gn=class extends pt{constructor(e,t,o){super(e,t,o);this.data=t;this.hiddenMatrixOld=new Oo.Matrix4;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:a}=ut.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,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,ba(this),Sa(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){ut.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&ut.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=ut.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=ut.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,Et.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 Oo.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let t=e.attributes.position,o=e.boundingSphere.center;oo.setFromBufferAttribute(t),oo.getCenter(o),e.boundingSphere.radius=o.distanceTo(oo.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),oo.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;oo.min.set(e[0],e[2],e[4]),oo.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(oo.min.applyMatrix4(this.shearScaleInv),oo.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new Oo.Sphere);let o=t.boundingSphere.center;oo.getCenter(o),t.boundingSphere.radius=o.distanceTo(oo.max)}freeSubdivPointer(){this.subdivPointer&&(ut.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)}};var no=require("three"),o0=-1,yO=1,n0={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},i0={polygon_center:0,edge:1,vertex:2},Es=(n,r)=>(e,t)=>!r||e===0||n===0?0:n*t/100,be=(n,r)=>{let e=Math.abs(r),t=e*-1;return(n-o0)*(e-t)/(yO-o0)+t};function a0(n){let r=[],e={};for(var t=0,o=n.length;t<o;t++){var i=JSON.stringify(n[t].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(r.push(n[t]),e[i]=!0)}return r}var gO=new no.Vector3,Gc=new no.Vector3,xO=new no.Vector3,vO=new no.Vector3;function wa(n,r){let e=xO.fromArray(n),t=vO.fromArray(r);Gc.copy(t).sub(e);let o=Gc.length();return Gc.normalize().multiplyScalar(o*.5),gO.copy(e).add(Gc).toArray()}var gr=new no.Triangle,Vc=new no.Vector3,zc=new no.Vector3,Vn=new no.Vector3;function s0(n){let r=[];for(let e=0;e<=n.index.count;e++)if(Vc.fromArray(n.index.array,e*3),gr.setFromAttributeAndIndices(n.attributes.position,Vc.x,Vc.y,Vc.z),gr.getNormal(zc),gr.getMidpoint(Vn),!(isNaN(Vn.x)||isNaN(Vn.y)||isNaN(Vn.z))){let{a:t,b:o,c:i}=gr,a=t.toArray(),s=o.toArray(),c=i.toArray(),u=t.distanceTo(o),l=o.distanceTo(i),d=i.distanceTo(t),p=wa(a,s),f=wa(s,c),m=wa(c,a),h=[u,l,d],y=Math.max(...h),g=h.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=gr.getMidpoint(Vn).toArray();y===u&&!g&&(x=[f,m,m],S=p),y===l&&!g&&(x=[p,m,m],S=f),y===d&&!g&&(x=[p,f,f],S=m),g&&(x=[p,f,m]),r.push({vertices:[a,s,c],faceCenters:x,midpoint:S,norm:gr.getNormal(zc).toArray()})}return r}function l0(n){let r=[],{position:e}=n.attributes;for(let t=0;t<e.count;t++){gr.setFromAttributeAndIndices(e,t*3,t*3+1,t*3+2),gr.getNormal(zc),gr.getMidpoint(Vn);let o=gr.a.toArray(),i=gr.b.toArray(),a=gr.c.toArray();r.push({vertices:[o,i,a],faceCenters:[wa(o,i),wa(i,a),wa(a,o)],midpoint:Vn.toArray(),norm:zc.toArray()})}return r}var bO=4,SO=.5,Ju=n=>.5*(1-Math.cos(n*Math.PI)),ep=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),a=Math.floor(t),s=r-o,c=e-i,u=t-a,l,d,p=0,f=.5,m,h,y;for(let g=0;g<bO;g++){let x=o+(i<<4)+(a<<8);l=Ju(s),d=Ju(c),m=this.perlin[x&4095],m+=l*(this.perlin[x+1&4095]-m),h=this.perlin[x+16&4095],h+=l*(this.perlin[x+16+1&4095]-h),m+=d*(h-m),x+=256,h=this.perlin[x&4095],h+=l*(this.perlin[x+1&4095]-h),y=this.perlin[x+16&4095],y+=l*(this.perlin[x+16+1&4095]-y),h+=d*(y-h),m+=Ju(u)*(h-m),p+=m*f,f*=SO,o<<=1,s*=2,i<<=1,c*=2,a<<=1,u*=2,s>=1&&(o++,s--),c>=1&&(i++,c--),u>=1&&(a++,u--)}return p}noiseSeed(r){let e=(()=>{let a,s;return{setSeed(c){s=a=(c??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(r),this.perlin=new Array(4095+1);for(let t=0;t<4095+1;t++)this.perlin[t]=e.rand()}},c0=ep;var _a=require("three");var d0=new _a.Vector3,u0=new _a.Matrix4,p0=new _a.Ray;function f0(n){let r=!1;return n.scene.objects.traverse((e,t)=>{t.type==="Mesh"&&t.geometry.type==="TextGeometry"&&(r=!0)}),r}var Ta=class extends pt{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)&&(u0.copy(o).invert(),p0.copy(e.ray).applyMatrix4(u0),p0.intersectBox(this.singleBBox,d0))){let i=d0.applyMatrix4(o),a=e.ray.origin.distanceTo(i);t.push({distance:a,point:i.clone(),object:this})}}};var Wt=1e-4,io,y0,g0,x0,m0=new Ge.Vector3,h0=new Ge.Vector3;qi.then(n=>{io=n,y0=[io.get_face_center,io.get_edge_midpoint,io.get_vertex_position],g0=[io.get_face_normal,io.get_edge_normal,io.get_vertex_normal],x0=[io.face_count,io.edge_count,io.vertex_count]});var wO=new Ge.Matrix4,TO=new Ge.Matrix4,ln=new Ge.Vector3,zn=new Ge.Vector3,Ls=new Ge.Vector3,tp=new Ge.Vector3,_O=new Ge.Vector3,PO=new Ge.Vector3;var Ao=new c0,Oa=class extends Ii(Ge.Object3D){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 wo&&t.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(t=>{t instanceof wo&&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,a=this.children.length;i<a;++i)this.remove(this.children[0]);let o=this.children;if(o.length===t)return;if(o.length<t)for(let i=0,a=t-o.length;i<a;++i){let s=new wo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-t;i<a;++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 a=new wo(this.object);a.expand(),this.add(a)}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*Ge.MathUtils.DEG2RAD,i=t.end*Ge.MathUtils.DEG2RAD,a=o-i,s=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),c;switch(t.axis){case"z":c=new Ge.Vector3(0,0,1);break;case"y":c=new Ge.Vector3(0,1,0);break;default:case"x":c=new Ge.Vector3(1,0,0);break}let u=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,l=u.noiseType==="perlin";Ao.noiseSeed(u.seed);let d=Zl((0,Pa.default)(u.seed)),p=Es(u.strength,this.parameters.randomness);for(let[f,m]of this.children.entries()){let h=f*(u.freqScale/10)+u.movement,y=l?Ao.noise(h):d(h,h),g=f+1;m.scale.x=t.scale[0]+p(g,be(y,u.scale[0]))||Wt,m.scale.y=t.scale[1]+p(g,be(y,u.scale[1]))||Wt,m.scale.z=t.scale[2]+p(g,be(y,u.scale[2]))||Wt,m.position.setScalar(0);let x=a/e.count*f-o;switch(t.axis){case"x":m.rotation.set(0,x,0);break;case"y":m.rotation.set(0,0,x);break;case"z":m.rotation.set(x,0,0);break}m.translateOnAxis(c,t.radius),m.position.x+=t.position[0]+p(g,be(y,u.position[0])),m.position.y+=t.position[1]+p(g,be(y,u.position[1])),m.position.z+=t.position[2]+p(g,be(y,u.position[2]));let S=p(g,be(y,u.rotation[0])),w=p(g,be(y,u.rotation[1])),b=p(g,be(y,u.rotation[2]));t.alignment===!0?(m.rotation.x+=s.x+S,m.rotation.y+=s.y+w,m.rotation.z+=s.z+b):m.rotation.set(s.x+S,s.y+w,s.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let s=Zl((0,Pa.default)(i.seed)),c=Es(i.strength,this.parameters.randomness);for(let[u,l]of this.children.entries()){let d=u*(i.freqScale/10)+i.movement,p=a?Ao.noise(d):s(d,d),f=u+1,m=c(f,be(p,i.rotation[0])),h=c(f,be(p,i.rotation[1])),y=c(f,be(p,i.rotation[2]));l.scale.x=1+(t.scale[0]-1)*u+c(f,be(p,i.scale[0]))||Wt,l.scale.y=1+(t.scale[1]-1)*u+c(f,be(p,i.scale[1]))||Wt,l.scale.z=1+(t.scale[2]-1)*u+c(f,be(p,i.scale[2]))||Wt,l.rotation.x=o.x*u+m,l.rotation.y=o.y*u+h,l.rotation.z=o.z*u+y,l.position.x=t.position[0]*u+c(f,be(p,i.position[0])),l.position.y=t.position[1]*u+c(f,be(p,i.position[1])),l.position.z=t.position[2]*u+c(f,be(p,i.position[2]))}}_updateGrid(e){let t=0,o=e.grid,i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=Es(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let c=Kh((0,Pa.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},l=new Ge.Vector3(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=s?Ao.noise(...m):c(...m),y=this.children[t++];y.scale.x=1+a(t,be(h,i.scale[0]))||Wt,y.scale.y=1+a(t,be(h,i.scale[1]))||Wt,y.scale.z=1+a(t,be(h,i.scale[2]))||Wt;let g=a(t,be(h,i.rotation[0])),x=a(t,be(h,i.rotation[1])),S=a(t,be(h,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*d-l.x+a(t,be(h,i.position[0])),y.position.y=o.size[1]*p-l.y+a(t,be(h,i.position[1])),y.position.z=o.size[2]*f-l.z+a(t,be(h,i.position[2]))}}else for(let u=0;u<o.count[0];u++)for(let l=0;l<o.count[1];l++)for(let d=0;d<o.count[2];d++){let p=[(u+1)*(i.freqScale/10)+i.movement,(l+1)*(i.freqScale/10)+i.movement,(d+1)*(i.freqScale/10)+i.movement],f=s?Ao.noise(...p):c(...p),m=this.children[t++];m.scale.x=1+a(t,be(f,i.scale[0]))||Wt,m.scale.y=1+a(t,be(f,i.scale[1]))||Wt,m.scale.z=1+a(t,be(f,i.scale[2]))||Wt;let h=a(t,be(f,i.rotation[0])),y=a(t,be(f,i.rotation[1])),g=a(t,be(f,i.rotation[2]));m.rotation.set(h,y,g),m.position.x=o.size[0]*u+a(t,be(f,i.position[0])),m.position.y=-o.size[1]*l+a(t,be(f,i.position[1])),m.position.z=-o.size[2]*d+a(t,be(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:t}=e,o=new Ge.Euler(t.rotation[0],t.rotation[1],t.rotation[2]),i=e.randomnessObject??$r.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Ao.noiseSeed(i.seed);let s=Zl((0,Pa.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 Ta)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(),l=[],d=g=>{let x=g.length,S=g.map(T=>T[0]).reduce((T,_)=>T+_,0),w=g.map(T=>T[1]).reduce((T,_)=>T+_,0),b=g.map(T=>T[2]).reduce((T,_)=>T+_,0);return[S/x,w/x,b/x]},p=g=>Math.round(g*1e6)/1e6;u.forEach(g=>{let x=u.filter(S=>p(g.pos[0])===p(S.pos[0])&&p(g.pos[1])===p(S.pos[1])&&p(g.pos[2])===p(S.pos[2]));x.length>1?l.push({pos:g.pos,norm:d(x.map(S=>S.norm))}):l.push(g)});let f=a0(l);if(f.length>0){let g=Math.round(f.length*t.count/100);this._updateCount(g)}else{let g=this.objectForSample.geometry.getAttribute("position");if(!g||isNaN(g.count)||g.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let m=new Ql(this.objectForSample).build(),h=n0[t.axis],y=this.children;m.setRandomGenerator((0,Pa.default)(this.object.uuid+t.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Ao.noise(S):s(S,S),b=g+1,T=c(b,be(w,i.rotation[0])),_=c(b,be(w,i.rotation[1])),v=c(b,be(w,i.rotation[2]));t.spreadType==="random"?m.sample(Ls,tp):(f.length&&(Ls.fromArray(f[g].pos),tp.fromArray(f[g].norm)),this.objectForSample instanceof Gn&&Ls.applyMatrix4(wO.copy(this.objectForSample.matrixWorld).invert())),Ls.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(Ls),ln.fromArray(h);let C=t.align==="normal"?tp:this.object.getWorldDirection(PO),P=zn.fromArray(t.position);zn.x+=zn.x+c(b,be(w,i.position[0])),zn.y+=zn.y+c(b,be(w,i.position[1])),zn.z+=zn.z+c(b,be(w,i.position[2]));let N=Math.acos(C.dot(ln)),O=_O.crossVectors(ln,C).normalize(),A=TO.makeRotationAxis(O,N),M=C.clone().cross(this.object.up).normalize(),L=M.clone().cross(C).normalize(),X=new Ge.Matrix4().makeBasis(M,C,L),R=new Ge.Vector3(ln.y,ln.z,ln.x).normalize(),Z=R.clone().cross(ln).normalize(),z=new Ge.Matrix4().makeBasis(R,ln,Z).invert(),V=new Ge.Matrix4().multiplyMatrices(X,z);x.rotation.setFromRotationMatrix(V),P.applyMatrix4(A),x.position.add(P),x.rotation.x=x.rotation.x+o.x+T,x.rotation.y=x.rotation.y+o.y+_,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+t.scale[0]+c(b,be(w,i.scale[0]))||Wt,x.scale.y=x.scale.y+t.scale[1]+c(b,be(w,i.scale[1]))||Wt,x.scale.z=x.scale.z+t.scale[2]+c(b,be(w,i.scale[2]))||Wt,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof Gn){let t=this.objectForSample,o=i0[e],i=x0[o],a=y0[o],s=g0[o],c=[],u=i(t.subdivPointerNew);for(let l=0;l<=u-1;l++){let d=a(t.subdivPointerNew,l),p=s(t.subdivPointerNew,l);m0.fromArray(d).applyMatrix4(t.matrixWorld),h0.fromArray(p),c.push({pos:m0.toArray(),norm:h0.toArray()})}return c}else return(this.objectForSample.geometry.index?s0(this.objectForSample.geometry):l0(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=yo(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 Et?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Ge.Matrix4,this.hiddenMatrix=new Ge.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var wr=require("three");var Ze=require("three");var Rt=require("three");var v0=require("three"),ao=n=>{var r;return r=class extends n{},r.geometryHelper=new v0.BoxGeometry(30,30,30),r};var zt=require("three"),jc=new zt.Ray,rp=new zt.Sphere,b0=new zt.Matrix4,so=(n,r,e,t,o=!1)=>{let i=r,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),rp.copy(i.boundingSphere),rp.applyMatrix4(a),e.ray.intersectsSphere(rp)===!1||(b0.copy(a).invert(),jc.copy(e.ray).applyMatrix4(b0),i.boundingBox!==null&&jc.intersectsBox(i.boundingBox)===!1))return;let s,c,u,l,d=i.index,p=i.attributes.position,f=i.drawRange,m,h;if(o===!1){let g=Math.max(0,f.start),x=Math.min(d.count,f.start+f.count);for(m=g,h=x;m<h;m+=3)if(c=d.getX(m),u=d.getX(m+1),l=d.getX(m+2),s=y(n,e,jc,p,c,u,l),s){s.faceIndex=Math.floor(m/3),t.push(s);return}}else{let x=i.attributes.position,S=new zt.Vector3,w=new zt.Vector3,b=new zt.Vector3,T=new zt.Vector3,_=2,C=1/((n.scale.x+n.scale.y+n.scale.z)/3),P=C*C,N=Math.max(0,f.start),O=Math.min(x.count,f.start+f.count);for(let A=N,M=O-1;A<M;A+=_){if(S.fromBufferAttribute(x,A),w.fromBufferAttribute(x,A+1),jc.distanceSqToSegment(S,w,T,b)>P)continue;T.applyMatrix4(n.matrixWorld);let X=e.ray.origin.distanceTo(T);X<e.near||X>e.far||t.push({distance:X,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,S,w,b,T,_){let v=new zt.Vector3,C=new zt.Vector3,P=new zt.Vector3,N=new zt.Vector3,O=new zt.Vector3;if(v.fromBufferAttribute(w,b),C.fromBufferAttribute(w,T),P.fromBufferAttribute(w,_),S.intersectTriangle(v,C,P,!1,N)===null)return null;O.copy(N),O.applyMatrix4(g.matrixWorld);let M=x.ray.origin.distanceTo(O);return M<x.near||M>x.far?null:{faceIndex:1,distance:M,point:O.clone(),object:g}}};var Fc=new Rt.Vector3,xr=new Rt.Camera,op=class extends Rt.LineSegments{constructor(e){let t=new Rt.BufferGeometry,o=new Rt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},c=new Rt.Color(15711266),u=new Rt.Color(15711266),l=new Rt.Color(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",l),d("u2","u3",l),d("u3","u1",l);function d(f,m,h){p(f,h),p(m,h)}function p(f,m){i.push(0,0,0),a.push(m.r,m.g,m.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}t.setAttribute("position",new Rt.Float32BufferAttribute(i,3)),t.setAttribute("color",new Rt.Float32BufferAttribute(a,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=s,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;xr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;Vr("n1",t,e,xr,-i,-a,s),Vr("n2",t,e,xr,i,-a,s),Vr("n3",t,e,xr,-i,a,s),Vr("n4",t,e,xr,i,a,s);let c=s;Vr("f1",t,e,xr,-i,-a,c),Vr("f2",t,e,xr,i,-a,c),Vr("f3",t,e,xr,-i,a,c),Vr("f4",t,e,xr,i,a,c);let u=c,l=.5;Vr("u1",t,e,xr,i*.7*l,a*1.1,u),Vr("u2",t,e,xr,-i*.7*l,a*1.1,u),Vr("u3",t,e,xr,0,a*(1.1+.9*l),u),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Vr(n,r,e,t,o,i,a){Fc.set(o,i,a).unproject(t);let s=r[n];if(s!==void 0){let c=e.getAttribute("position");for(let u=0,l=s.length;u<l;u++)c.setXYZ(s[u],Fc.x,Fc.y,Fc.z)}}var kc=class extends ao(op){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){so(this.object,this.geometry,e,t,!0)}};var Ds=require("three");var Uc;(r=>r.is=e=>"objectHelper"in e)(Uc||(Uc={}));var lo=(n,r)=>class extends Li(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 Ds.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof Ds.BoxGeometry?(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 Ds.Box3Helper&&(i.visible=!1)}}};var Hc=790,Aa=new Ze.Vector3,np=new Ze.Vector3,ip=new Ze.Quaternion,ap=new Ze.Vector3,Bs=new Ze.Vector3,sp=new Ze.Vector3,Co=class extends lo(Ze.Camera,kc){constructor(e="",t={...vn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=Uo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,t),this.previousProjectionMatrix=new Ze.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new Ze.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new Ze.PerspectiveCamera(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 Ze.Vector3(e,t,o)),super.lookAt(e),this.getWorldPosition(Aa),this.targetOffset=Aa.distanceTo(e)}getTarget(e=new Ze.Vector3){return this.getWorldDirection(np),this.getWorldPosition(Aa),np.multiplyScalar(this.targetOffset),e.copy(Aa).add(np),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Aa),Aa.distanceTo(e)}updateUp(){this.getWorldQuaternion(ip),ap.set(0,0,1).applyQuaternion(ip),Bs.copy(Ze.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&Bs.negate(),Bs.applyQuaternion(ip),sp.copy(Ze.Object3D.DEFAULT_UP).projectOnPlane(ap),this.angleOffsetFromUp=sp.angleTo(Bs),this.angleOffsetFromUp*=sp.cross(Bs).dot(ap)>=0?1:-1}updateTransformState(e,t){let o=super.updateTransformState(e,t);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let t=e.getWorldPosition(new Ze.Vector3),i=e.getWorldDirection(new Ze.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(i),target:t}}getViewToTarget(e){let o=this.getWorldDirection(new Ze.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let t=new Ze.Vector3,o=e.getWorldPosition(t);return this.getViewToTarget(t)}setViewplaneSize(e,t,o=!1){if(this.aspect=e/t,o){let i=e>t?this.aspect:1,a=e>t?1:this.aspect;this.left=-Hc*.5*i,this.right=Hc*.5*i,this.top=Hc*.5*(1/a),this.bottom=-Hc*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,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,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,i,a,s):this.orthoCamera.setViewOffset(e,t,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}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},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return di(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}}};var CO=require("three");var vr=require("three");var Ca=new vr.Matrix4,AO=new vr.Matrix4,Wc=new vr.Matrix4,S0=new vr.Vector3,w0=new vr.Vector3;var br=class extends rr{constructor(e,t,o){super(e,t);this.data=t;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new vr.BufferGeometry;this.onAfterRender=(e,t,o,i,a,s)=>{super.onAfterRender(e,t,o,i,a,s),this.recomputeBoolean()};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 a=this.children[i];a instanceof br&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,t)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Et&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0){if(Ca.multiplyMatrices(a.hiddenMatrix,a.matrix),a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=mr.getMeshSet(a.geometry,e===!0,t)),a.booleanMeshSetAddress===-1)return;mr.transformMeshSet(a.booleanMeshSetAddress,Ca),a.booleanMatrixInvOld.copy(Ca).invert(),a.booleanWasTransformed=!1}else a instanceof br&&a.needsTransformForDownstream===!0?(mr.transformMeshSet(a.booleanMeshSetAddress,Ca),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(mr.transformMeshSet(a.booleanMeshSetAddress,AO.multiplyMatrices(Ca,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(Ca).invert(),a.booleanWasTransformed=!1);mr.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.wasFilteredFromBoolean=!1):a.geometry.userData.wasFilteredFromBoolean=!0}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new vr.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return mr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new vr.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=mr.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,ba(this),Sa(this)}dispose(){super.dispose(),this.geometry.dispose()}get recursiveBBox(){let e=super.recursiveBBox;return this.geometry.boundingSphere?.radius===-1&&(e.getCenter(this.geometry.boundingSphere.center),Wc.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(Wc),S0.copy(e.max).applyMatrix4(Wc),w0.copy(e.min).applyMatrix4(Wc),this.geometry.boundingSphere.radius=S0.distanceTo(w0)/2),e}};var _0=require("three");var T0;(r=>{function n(e){return Oe.is(e)&&e instanceof _0.Light}r.is=n})(T0||(T0={}));var Na=(n,r)=>class extends lo(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 cn=n=>n instanceof Et,Ia=n=>n!==null&&n instanceof br;var Rs=n=>Uc.is(n);var O0=require("three");var P0=require("three");var co=class extends ao(P0.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,t){so(this.object,co.geometryHelper,e,t)}update(){}};var jn=class extends lo(O0.Group,co){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update()}updateState(r,e){this.updateState_Entity(r,e)}};var Ra=require("three");var Ma=require("three"),NO=n=>`
|
|
2228
|
+
`),d&&p.push(d.code,`outgoingLight = spe_blend(outgoingLight, ${d.result}, 1.0, SPE_BLENDING_NORMAL);`),c?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${c.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u&&p.push(`gl_FragColor.a *= ${u.result};`),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
2229
|
+
`)}return r}};var iu=require("three");var ru=class{constructor(t=1e3*10){this.timeout=t;this.cache=new Map;this.head={data:null,time:0,src:null,next:null,prev:null};this.tail={data:null,time:1/0,src:null,next:null,prev:null};this.hasClean=!1;this.head.next=this.tail,this.tail.prev=this.head}log(...t){}remove(t){let e=this.cache.get(t);e&&(this.dispose(t,e.data),this.cache.delete(t),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 t=Date.now(),e=this.head.next;for(;e.time<t-this.timeout;)this.dispose(e.src,e.data),this.cache.delete(e.src),e=e.next,e.prev=this.head,this.head.next=e;this.head.next!==this.tail?this.scheduleCleanup():this.log("no more cleanup")},this.timeout+1e3))}has(t){return this.cache.get(t)?.data}load(t){let e=Date.now(),r=this.cache.get(t);return r===void 0?(r={data:this.create(t),src:t,time:e,next:null,prev:null},this.cache.set(t,r)):(r.time=e,r.prev.next=r.next,r.next.prev=r.prev),r.prev=this.tail.prev,r.next=this.tail,this.tail.prev.next=r,this.tail.prev=r,this.scheduleCleanup(),r.data}};var wp=class extends ru{create(t){return URL.createObjectURL(new Blob([t]))}dispose(t,e){URL.revokeObjectURL(e)}},Sp;function A0(n){return typeof n=="string"?n:(Sp||(Sp=new wp),Sp.load(n))}var ou=class{constructor(t,e){this.data=t;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")}},nu=class{constructor(){this.cache=new Map}remove(t){if(this.cache.delete(t.data)===!1&&!1)throw new Error("ref count remove non-exists")}load(t){let e=this.cache.get(t);return e===void 0&&(e=this.create(t),this.cache.set(t,e)),e.refCount+=1,e}};var qa=class extends ou{constructor(e,r){super(e,r.imageHolderCache);this.data=e;this.shared=r;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 r=()=>{this.loaded=!0;let i=[1e3,1001,1002];for(let a of i){let s=this[a];s&&(s.image=this.img,s.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(a=>{o.onloadend=s=>{i=s.target?.result,a(null)}}),this.img.src=i}else this.img.src=e;this.img.onloadeddata=()=>{r()}}else this.img=new Image,this.img.src=A0(e),this.img.onload=r}getTexture(e){let r=this[e];if(r)return r;{let o;return this.isVideo?o=new iu.VideoTexture(this.img,void 0,e,e):o=new iu.Texture(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 Ir=class extends qa{};var et=require("three");function Wt(n,t){return t.color(n)}function T0(n,t){switch(n.type){case"fresnel":return pP(n,t);case"gradient":return fP(n,t);case"depth":return hP(n,t);case"normal":return mP(n,t);case"noise":return yP(n,t);case"rainbow":return gP(n,t);case"toon":return xP(n,t);case"outline":return vP(n,t);case"transmission":return bP(n,t);case"color":return dP(n,t);case"pattern":return SP(n,t)}}function uP(n){return{type:n.type}}function Jr(n,t){let{alpha:e,mode:r,isMask:o}=n,i=typeof e=="string"?(Number(t.getVariable(e))??100)/100:e;return{...uP(n),alpha:i,mode:r,isMask:o}}function dP(n,t){return{...Jr(n,t),color:Wt(n.color,t)}}function pP(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:a}=n;return{...Jr(n,t),color:Wt(a,t),bias:e,scale:r,intensity:o,factor:i}}function fP(n,t){let{gradientType:e,smooth:r,colors:o,steps:i,angle:a,offset:s,morph:l}=n;return{...Jr(n,t),gradientType:e,smooth:r,colors:o.map(d=>new et.Vector4(d[0],d[1],d[2],d[3])),num:o.length,steps:i,offset:new et.Vector2(...s),morph:new et.Vector2(...l),angle:a}}function hP(n,t){let{gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:s,direction:l,colors:d,steps:c,smooth:u}=n;return{...Jr(n,t),gradientType:e,near:r,far:o,isVector:i,isWorldSpace:a,origin:new et.Vector3(...s),direction:l?new et.Vector3(...l):new et.Vector3(1,0,0),colors:d.map(p=>p!==void 0?new et.Vector4(p[0],p[1],p[2],p[3]):new et.Vector4(0,0,0,0)),steps:c.slice(0,d.length),smooth:u}}function mP(n,t){let{cnormal:e}=n;return{...Jr(n,t),cnormal:new et.Vector3(e[0],e[1],e[2])}}function yP(n,t){return{...Jr(n,t),scale:n.scale,move:n.move,fA:new et.Vector2(...n.fA),fB:new et.Vector2(...n.fB),size:new et.Vector3(...n.size),distortion:new et.Vector2(...n.distortion),colorA:Wt(n.colorA,t),colorB:Wt(n.colorB,t),colorC:Wt(n.colorC,t),colorD:Wt(n.colorD,t),noiseType:n.noiseType,voronoiStyle:n.voronoiStyle,highCut:n.highCut,lowCut:n.lowCut,smoothness:n.smoothness,seed:n.seed,quality:n.quality}}function gP(n,t){return{...Jr(n,t),filmThickness:n.filmThickness,movement:n.movement,wavelengths:new et.Vector3(...n.wavelengths),noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,offset:new et.Vector3(...n.offset)}}function xP(n,t){return{...Jr(n,t),positioning:n.positioning,colors:n.colors.map(e=>new et.Vector4(e[0],e[1],e[2],e[3])),num:n.colors.length,steps:n.steps,source:new et.Vector3(...n.source),isWorldSpace:n.isWorldSpace,noiseStrength:n.noiseStrength,noiseScale:n.noiseScale,shadowColor:Wt(n.shadowColor,t),offset:new et.Vector3(...n.offset)}}function vP(n,t){return{...Jr(n,t),outlineColor:Wt(n.outlineColor,t),contourColor:Wt(n.contourColor,t),outlineWidth:n.outlineWidth,contourWidth:n.contourWidth,outlineThreshold:n.outlineThreshold,contourThreshold:n.contourThreshold,outlineSmoothing:n.outlineSmoothing,contourFrequency:n.contourFrequency,contourDirection:new et.Vector3(...n.contourDirection),positionalLines:n.positionalLines,compensation:n.compensation}}function bP(n,t){return{...Jr(n,t),thickness:n.thickness,ior:n.ior,roughness:n.roughness}}function SP(n,t){return{...Jr(n,t),style:n.style,projection:n.projection,axis:n.axis,blending:n.blending,offset:new et.Vector2(...n.offset),colorA:Wt(n.colorA,t),colorB:Wt(n.colorB,t),frequency:new et.Vector2(...n.frequency),size:n.size,variation:n.variation,smoothness:n.smoothness,zigzag:n.zigzag,rotation:n.rotation,vertical:new et.Vector2(...n.vertical),horizontal:new et.Vector2(...n.horizontal),sides:n.sides}}var Cn=class extends Ot{};var C0=require("three");var _p={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},Ap={depth:["colors"]};function wP(n,t,e){if(t==="isMask")return!0;let r=_p[n.type],o=Ap[n.type];if(o!==void 0){let i=n.color;if(o.includes(t)){let a=i[t]?.value?.length;if(a!==void 0&&a!==e.length)return!0}}return r!==void 0?r.includes(t):!1}function Tp(n,t,e){let r=e.uniforms[`f${e.id}_texture`];if(!r)return!1;let o=!1,i=n;if("image"in i){let a=i.image,s=t.image(a),l=r;l.image instanceof Ir||l.image.deref(),l.image=s}if("video"in i){let a=i.video,s=t.video(a),l=r;l.image instanceof Ir||l.image.deref(),l.image=s}if("wrapping"in i){let a=r;a.wrap=i.wrapping}if("repeat"in i||"offset"in i){let a="mat",s=e.uniforms[`f${e.id}_${a}`];"repeat"in i&&(s.repeat=i.repeat),"offset"in i&&(s.offset=i.offset),s.updateMatrix()}return o}function P0(n,t,e,r){let o=!1;for(let[i,a]of Object.entries(n)){if(i==="bumpMap"||i==="roughnessMap"){o=!0;continue}if(!i||a===void 0)continue;if(Cp(i,e,r,t)){i==="visible"&&e.type==="light"&&(o=!0);continue}e.visible=r.visible;let s=e.uniforms[`f${e.id}_${i}`];if(!!s&&!(s instanceof An))switch(o=o||wP(e,i,a),s.constructor){case ke:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Cn?s.value=new Ot(l.r,l.g,l.b,l.a):s.setRGBA(l);break}case pr:if(typeof a=="string"){let l=t.getColor(a);l&&(s.value=l);break}else{let l=a;s.value instanceof Cn?s.value=new Ot(l.r,l.g,l.b,l.a):s.value.setRGBA(l.r,l.g,l.b,l.a);break}case lt:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]);break}case Ht:{let l=a;s.value.setX(l[0]),s.value.setY(l[1]),s.value.setZ(l[2]);break}case rr:{Tp(a,t,e);break}case Zr:{s.value=a.map(l=>new C0.Vector4(...l));break}default:{s.value=a;break}}}return o}var Pn=(n,t,e)=>Math.max(0,Math.min(1,Number(t.getVariable(typeof n=="number"?n*100:n,e)??100)/100))??1,bo=class{constructor(t,e,r,o,i){this.id=t;this.uuid=e;this.data=r;this.uniforms={};for(let a in o)this.uniforms[`f${this.id}_${a}`]=o[a];for(let a in r)Cp(a,this,r,i)}get type(){return this.data.type}static create(t,e,r,o){if(r.type==="light")return Ar.createLigherLayer(t,e,r,o);if(r.type==="texture"||r.type==="video"){let i=r.type==="texture"?o.image(r.texture.image):o.video(r.texture.video),a=new ti(i,r.texture.wrapping),s=new Jc(i),l=new eu(r.texture.repeat,r.texture.offset),d=new J(r.crop?1:0),c=new Pe(r.projection??0),u=new Pe(["x","y","z"].indexOf(r.axis)??0),p=new Pe(r.side??0),f=new lt(r.size?new qe.Vector2(r.size[0],r.size[1]):new qe.Vector2(100,100)),h=new J(r.blending??0),m=new J(Pn(r.alpha,o)),y=new Pe(r.mode??0),g=new ht(r.isMask??!1),x=new Tn(a,s,d,c,u,p,f,h,l,m,y,g),S=new Ge(x.calpha,"f");return new ot(t,e,r,{texture:a,textureSize:s,crop:d,projection:c,axis:u,side:p,size:f,blending:h,mat:l,alpha:m,mode:y,isMask:g},x,y,S,g,o)}else if(r.type==="matcap"){let i=o.image(r.texture.image),a=new ti(i,r.texture.wrapping),s=new J(Pn(r.alpha,o)),l=new Pe(r.mode??0),d=new ht(r.isMask??!1),c=new Ra(a,s,l,d),u=new Ge(c.calpha,"f");return new ot(t,e,r,{texture:a,alpha:s,mode:l,isMask:d},c,l,u,d,o)}else if(r.type==="displace")if(r.displacementType==="noise"){let i=new Ht(new qe.Vector3(...r.offset)),a=new J(r.scale??10),s=new J(r.intensity??8),l=new J(r.movement??1),d=new Pe(r.noiseType??0),c=new Pe(r.voronoiStyle??0),u=new J(r.smoothness??.5),p=new J(r.seed??0),f=new J(r.highCut??1),h=new J(r.lowCut??0),m=new Pe(r.quality??1),y=new Ua(s,l,i,c,u,p,f,h,m,a,d);return new ol(t,e,r,{offset:i,scale:a,intensity:s,movement:l,noiseType:d,voronoiStyle:c,smoothness:u,seed:p,highCut:f,lowCut:h,quality:m},y,o)}else throw new Error;else return TP(t,e,r,o)}updateByOp(t,e,r){let o=t;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props||"visible"in o.props?(r.scene.markNeedsUpdateRendererDirty(),!0):P0(o.props,r.shared,this,e)}else if(o.path[0]==="texture")return"texture"in e||"video"in e?Tp(o.props,r.shared,this):!0;return!1}dispose(){if(_P(this)){let t=this.uniforms[`f${this.id}_texture`];if(!t)return!1;let e=t;e.image instanceof Ir||e.image.deref()}}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getNode(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e]}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(t){let r=/f\d+_(.*)/.exec(t);if(r&&r.length>1)return r[1];console.log(`Layer.getName: error ${t}`)}getNames(){let t=[];for(let e in this.uniforms){let r=this.getName(e);r&&t.push(r)}return t}},ot=class extends bo{constructor(e,r,o,i,a,s,l,d,c){super(e,r,o,i,c);this.params=i;this.color=a;this.mode=s;this.alpha=l;this.isMask=d}},ol=class extends bo{constructor(e,r,o,i,a,s){super(e,r,o,i,s);this.position=a}},Ar=class extends bo{constructor(e,r,o,i,a,s){super(e,r,o,a,s);this.node=i}static createLigherLayer(e,r,o,i){let a,s=new J(Pn(o.alpha,i)),l=new Pe(o.mode),d=new J(o.bumpMapIntensity),c=new J(Pn(o.alphaOverride,i)),u;if(!o.visible)a=new ni,u={};else if(o.category==="lambert"){a=new Qs;let p=new ke(i.color(o.emissive)??0),f=new ht(o.occlusion??!0);u={emissive:p,occlusion:f},a.emissive=p,a.occlusion=f}else if(o.category==="toon"){a=new rl;let p=new J(o.shininess??30),f=new ke(i.color(o.specular)??1118481);u={shininess:p,specular:f},a.shininess=p,a.specular=f}else if(o.category==="physical"){a=new el;let p=new J(o.roughness??.3),f=new J(o.metalness??0),h=new J(o.reflectivity??.5),m=new ht(o.occlusion??!0);u={roughness:p,metalness:f,reflectivity:h,occlusion:m},a.roughness=p,a.metalness=f,a.reflectivity=h,a.occlusion=m}else{a=new Js;let p=new J(o.shininess??30),f=new ke(o.specular!==void 0?i.color(o.specular)??1118481:1118481),h=new ht(o.occlusion??!0);u={shininess:p,specular:f,occlusion:h},a.shininess=p,a.specular=f,a.occlusion=h}return a.alpha=new J(1),a.shadingAlpha=s,a.shadingBlend=l,a.bumpMapIntensity=d,a.alphaOverride=c,u.alpha=a.shadingAlpha,u.mode=a.shadingBlend,u.bumpMapIntensity=a.bumpMapIntensity,u.alphaOverride=a.alphaOverride,new Ar(e,r,o,a,u,i)}get category(){return this.node.category}};function _P(n){let t=n instanceof bo?n.type:n;return t==="texture"||t==="video"||t==="displace_map"||t==="matcap"}function Nr(n){return{alpha:new J(n.alpha??1),mode:new Pe(n.mode??0),isMask:new ht(n.isMask??!1)}}function AP(n,t,e,r,o){switch(n.type){case"color":{let i=new ke(r.color??Tt),a=Nr(r),s=new ri(i,a.alpha),l=new Ge(s.calpha,"f");return new ot(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}case"fresnel":{let i=new ke(r.color??16777215),a=new J(r.bias??.1),s=new J(r.scale??1),l=new J(r.intensity??2),d=new J(r.factor??1),c=Nr(r),u=new Ys(i,a,s,l,d,c.alpha,c.mode,c.isMask),p=new Ge(u.calpha,"f");return new ot(t,e,n,{color:i,bias:a,scale:s,intensity:l,factor:d,...c},u,c.mode,p,c.isMask,o)}case"rainbow":{let i=new J(r.filmThickness??30),a=new J(r.movement??0),s=new Ht(r.wavelengths??new qe.Vector3(0,0,0)),l=new J(r.noiseStrength??0),d=new J(r.noiseScale??1),c=new Ht(r.offset??new qe.Vector3(0,0,0)),u=Nr(r),p=new ka(i,a,s,l,d,c,u.alpha,u.isMask),f=new Ge(p.calpha,"f");return new ot(t,e,n,{filmThickness:i,movement:a,wavelengths:s,noiseStrength:l,noiseScale:d,offset:c,...u},p,u.mode,f,u.isMask,o)}case"transmission":{let i=new J(r.thickness??10),a=new J(r.ior??1.5),s=new J(r.roughness??.5),l=Ae.transmissionSize,d=Ae.transmissionRenderTarget,c=Ae.transmissionRenderTargetDepth,u=window.innerWidth,p=window.innerHeight,f=u>=p?new lt(p/u,1):new lt(1,u/p),h=Nr(r),m=new ja(i,a,s,l,d,c,f,h.alpha),y=new Ge(m.calpha,"f");return new ot(t,e,n,{thickness:i,ior:a,roughness:s,aspectRatio:f,...h},m,h.mode,y,h.isMask,o)}case"toon":{let i=new Pe(r.positioning??0),a;r.colors?a=new Zr(r.colors.length,r.colors):(a=new Zr(10,new qe.Vector4(0,0,0,1)),a.value[1]=new qe.Vector4(1,1,1,1));let s;r.steps?s=new Qr(r.steps.length,r.steps):(s=new Qr(10,1),s.value[0]=0);let l=new Ht(r.source??new qe.Vector3(0,0,0)),d=new ht(r.isWorldSpace??!0),c=new J(r.noiseStrength??0),u=new J(r.noiseScale??1),p=new pr(r.shadowColor),f=new Ht(r.offset??new qe.Vector3(0,0,0)),h=Nr(r),m=new Fa(i,a,s,l,d,c,u,p,f,h.alpha),y=new Ge(m.calpha,"f");return new ot(t,e,n,{positioning:i,colors:a,steps:s,source:l,isWorldSpace:d,noiseStrength:c,noiseScale:u,shadowColor:p,offset:f,...h},m,h.mode,y,h.isMask,o)}case"outline":{let i=new ke(r.outlineColor??16777215),a=new ke(r.contourColor??16777215),s=new J(r.outlineWidth??.1),l=new J(r.contourWidth??.1),d=new J(r.outlineThreshold??.1),c=new J(r.contourThreshold??.1),u=new J(r.outlineSmoothing??.1),p=new J(r.contourFrequency??.1),f=new Ht(r.contourDirection??new qe.Vector3(0,1,0)),h=new ht(r.positionalLines??!1),m=new ht(r.compensation??!0),y=Ae.normalRenderTarget,g=Ae.normalRenderTargetDepth,x=Ae.pixelRatioNode,S=Ae.resolution,w=Nr(r),b=new Ga(i,a,s,l,d,c,u,p,f,h,m,S,y,g,x,w.alpha),_=new Ge(b.calpha,"f");return new ot(t,e,n,{outlineColor:i,contourColor:a,outlineWidth:s,contourWidth:l,outlineThreshold:d,contourThreshold:c,outlineSmoothing:u,contourFrequency:p,contourDirection:f,positionalLines:h,compensation:m,...w},b,w.mode,_,w.isMask,o)}case"depth":{let i=new Pe(r.gradientType??0),a=new ht(r.smooth??!1),s=new J(r.near??50),l=new J(r.far??200),d=new J(r.isVector??1),c=new J(r.isWorldSpace??0),u=new Ht(r.origin??new qe.Vector3),p=new Ht(r.direction??new qe.Vector3),f;r.colors?f=new Zr(r.colors.length,r.colors):(f=new Zr(2,new qe.Vector4(0,0,0,1)),f.value[1]=new qe.Vector4(1,1,1,1));let h;r.steps?h=new Qr(r.steps.length,r.steps):(h=new Qr(2,1),h.value[0]=0);let m=Nr(r),y=new La(i,a,s,l,d,c,u,p,f,h,m.alpha,m.isMask),g=new Ge(y.calpha,"f");return new ot(t,e,n,{gradientType:i,smooth:a,near:s,far:l,isVector:d,isWorldSpace:c,origin:u,direction:p,colors:f,steps:h,...m},y,m.mode,g,m.isMask,o)}case"noise":{let i=new J(r.scale??1),a=new Ht(r.size??new qe.Vector3(100,100,100)),s=new J(r.move??1),l=new lt(r.fA??new qe.Vector2(1.7,9.2)),d=new lt(r.fB??new qe.Vector2(8.3,2.8)),c=new lt(r.distortion??new qe.Vector2(1,1)),u=new pr(r.colorA),p=new pr(r.colorB),f=new pr(r.colorC),h=new pr(r.colorD),m=new Pe(r.noiseType??0),y=new Pe(r.voronoiStyle??0),g=new J(r.highCut??1),x=new J(r.lowCut??0),S=new J(r.smoothness??.5),w=new J(r.seed??.5),b=new Pe(r.quality??1),_=Nr(r),A=new Va(i,a,s,l,d,c,u,p,f,h,_.alpha,m,_.isMask,y,g,x,S,w,b),v=new Ge(A.calpha,"f");return new ot(t,e,n,{scale:i,size:a,move:s,fA:l,fB:d,distortion:c,colorA:u,colorB:p,colorC:f,colorD:h,noiseType:m,..._,voronoiStyle:y,highCut:g,lowCut:x,smoothness:S,seed:w,quality:b},A,_.mode,v,_.isMask,o)}case"normal":{let i=new Ht(r.cnormal??new qe.Vector3(1,1,1)),a=Nr(r),s=new Na(i,a.alpha),l=new Ge(s.calpha,"f");return new ot(t,e,n,{cnormal:i,...a},s,a.mode,l,a.isMask,o)}case"gradient":{let i=new Pe(r.gradientType??0),a=new ht(r.smooth??!1),s;r.colors?s=new Zr(r.colors.length,r.colors):(s=new Zr(10,new qe.Vector4(0,0,0,1)),s.value[1]=new qe.Vector4(1,1,1,1));let l;r.steps?l=new Qr(r.steps.length,r.steps):(l=new Qr(10,1),l.value[0]=0);let d=new lt(r.offset??new qe.Vector2(0,0)),c=new lt(r.morph??new qe.Vector2(0,0)),u=new J(r.angle??0),p=Nr(r),f=new Ba(i,a,s,l,d,c,u,p.alpha,p.isMask),h=new Ge(f.calpha,"f");return new ot(t,e,n,{gradientType:i,smooth:a,colors:s,steps:l,offset:d,morph:c,angle:u,...p},f,p.mode,h,p.isMask,o)}case"pattern":{let i=new Pe(r.style??0),a=new Pe(r.projection??0),s=new Pe(["x","y","z"].indexOf(r.axis)??0),l=new J(r.blending??0),d=new lt(r.offset??new qe.Vector2(0,0)),c=new pr(r.colorA),u=new pr(r.colorB),p=new lt(r.frequency??new qe.Vector2(10,10)),f=new J(r.size??.5),h=new J(r.variation??0),m=new J(r.smoothness??.5),y=new J(r.zigzag??0),g=new J(r.rotation??0),x=new lt(r.vertical??new qe.Vector2(0,1)),S=new lt(r.horizontal??new qe.Vector2(0,1)),w=new Pe(r.sides??6),b=Nr(r),_=new za(i,a,s,l,d,c,u,p,f,h,m,y,g,x,S,w,b.alpha,b.isMask),A=new Ge(_.calpha,"f");return new ot(t,e,n,{style:i,projection:a,axis:s,blending:l,offset:d,colorA:c,colorB:u,frequency:p,size:f,variation:h,smoothness:m,zigzag:y,rotation:g,vertical:x,horizontal:S,sides:w,...b},_,b.mode,A,b.isMask,o)}default:{let i=new ke(1,0,0,1),a=Nr(r),s=new ri(i,a.alpha),l=new Ge(s.calpha,"f");return new ot(t,e,n,{color:i,...a},s,a.mode,l,a.isMask,o)}}}function TP(n,t,e,r){let o=T0(e,r);return AP(e,n,t,o,r)}function Cp(n,t,e,r){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let o=t.uniforms[`f${t.id}_intensity`];return o?(o.value=e.intensity*(e.visible?1:0),o):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let o=t.uniforms[`f${t.id}_alpha`];if(!o)return;if(o.value=Pn(e.alpha,r)*(e.visible?1:0),e.type==="outline"&&n==="visible"){let i=t.uniforms[`f${t.id}_compensation`];i&&(i.value=e.compensation&&e.visible)}return o}}function au(n,t){let e=0,r=n.layers.find(o=>o.data.type==="light");if(r){let o=r.data,i=Number(t.getVariable(o.alphaOverride));if((typeof o.alphaOverride=="string"?i/100:o.alphaOverride)<1)return!0}for(let o of n.layers){if(o.data.type!=="displace"&&o.data.isMask)return!0;if(o.data.type!=="displace"&&"alpha"in o.data&&o.data.type!=="light"&&o.data.type!=="fresnel"&&o.data.type!=="texture"&&o.data.type!=="matcap"&&o.data.type!=="rainbow"&&o.data.type!=="outline"&&o.data.type!=="pattern"){let i=o.data.visible?o.data.alpha:0;if(typeof i=="string"&&(i=Math.max(0,Math.min(1,Number(t.getVariable(i)??100)/100))),i===1&&o.data.type==="depth"||o.data.type==="gradient"){for(let a of o.data.colors)if(a[3]<1){i=a[3];break}}else if(i===1&&o.data.type==="noise"){let a=t.color(o.data.colorA).a,s=t.color(o.data.colorB).a,l=t.color(o.data.colorC).a,d=t.color(o.data.colorD).a,c=Math.min(a,Math.min(s,Math.min(l,d)));c<1&&(i=c)}e+=(1-e)*i}}return e<1}var hr=class extends O0.ShaderMaterial{constructor(){super(void 0);this.flatShading=!1;this.needsJitter=!0;this.cacheKey="";this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},su=class extends hr{constructor(e,r,o,i){super();this.flatShading=e;this.side=r;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,r){this.root.onBeforeCompile(e)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(e,r,o){return this.root.getFlavor(e,r,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,r,o){this.root.updateByOp(e,r,o)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},ii=class extends hr{constructor(e,r,o=!0){super();this.data=e;this.allowVariableSaves=o;this.layerIdGen=0;this.flavors=[];this.masks={};this.type="NodeMaterial";this.updaters=[],this.reset0(e,r)}get nodeMaterial(){return this}getFlavor(e,r,o){let i=o?6:(e?3:0)+r;if(i===0)return this;this.flavors===void 0&&(this.flavors=[]),i-=1;let a=this.flavors[i];return a===void 0&&(a=new su(e,r,o,this),this.flavors[i]=a,a.flatShading=e,a.side=r,a.updateAfterBuild()),a}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){return this.lightLayer.getNode("occlusion")?.value??!1}reset(e,r){this.data!==e&&this.reset0(e,r)}reset0(e,r){this.data=e;let o=e.layers??Ft.defaultTwoLayerData("phong").layers;try{this.layers=o.map(i=>bo.create(this.layerIdGen++,i.id,i.data,r.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(r.shared),this.transparent=au(e,r.shared),this.saveVariableLocations(r)}onVariableUpdate(e,r,o){if(e[0]==="alphaOverride")this.transparent=au(this.data,o.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(r)/100,1)));else if(e[0]==="layer"){let i=e[1],a=e[2];if(i&&a){let s=this.layers.find(l=>l.uuid===i);s?.hasValue(a)&&(a==="alpha"?(this.transparent=au(this.data,o.shared),s.setValue(a,Math.max(0,Math.min(Number(r)/100,1)))):s.setValue(a,r))}}}saveVariableLocations(e){if(!this.allowVariableSaves)return;let r=this.data.layers.find(o=>o.data.type==="light");r&&e.shared.getVariable(r.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(o=>{"alpha"in o.data&&typeof o.data.alpha=="string"&&e.shared.getVariable(o.data.alpha,["material",this.uuid,"layer",o.id,"alpha"])})}getLayersOfType(e){return this.layers.filter(r=>r.type===e)}getLayerByUuid(e){return this.layers.find(r=>r.uuid===e)}onUpdate(e){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(r=>r instanceof Ar),this.lightLayer===void 0&&(this.lightLayer=new Ar(0,"",{...er.defaultData("light","phong"),visible:!1},new ni,{},e)),this.dispose();for(let r of this.flavors)r&&r.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let e=this.layers.find(a=>a instanceof Ar);if(!e)return;let r=e.data,o=r.bumpMap,i=r.roughnessMap;e.node.bumpMap=void 0,e.node.roughnessMap=void 0;for(let a=0;a<this.layers.length;++a){let s=this.layers[a];s instanceof ot&&s.color instanceof Tn&&(s.uuid===o&&(e.node.bumpMap=s.color),s.uuid===i&&(e.node.roughnessMap=s.color))}}updateByOp(e,r,o){if(r!==void 0?this.data=r:r=this.data,this.transparent=au(r,o.shared),e.path[0]==="layers"){this.data=r;let i=o.shared,a=e.path[1];if(a===void 0){if(this.layers.reverse(),e.type===4){let s=bo.create(this.layerIdGen++,e.id,e.data,o.shared);this.layers.splice(e.localIndex,0,s),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 s=this.layers.findIndex(d=>d.uuid===e.id),l=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,l),o.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(o.shared)}else{e.type===0&&e.props.occlusion!==void 0&&o.scene.markNeedsUpdateRendererDirty();let s=this.layers.find(l=>l.uuid===a);if(s){let l=r.layers.data(a),d;if(e.type===0&&("alpha"in e.props||"alphaOverride"in e.props)&&("alpha"in e.props?d={...e.props,alpha:Pn(e.props.alpha,i,["material",this.uuid,"layer",a,"alpha"])}:d={...e.props,alphaOverride:Pn(e.props.alphaOverride,i,["material",this.uuid,"alphaOverride"])}),s.updateByOp({...e,...d?{props:d}:{},path:e.path.slice(2)},l,o)){let u=bo.create(this.layerIdGen++,a,l,i);this.layers.splice(this.layers.findIndex(p=>p.uuid===a),1,u),this.onUpdate(o.shared)}}}}else this.reset(r,o)}applyMasks(){for(let e=0;e<this.layers.length;++e){let r=this.layers[e];r instanceof ot?r.color.mask=void 0:r instanceof Ar&&(r.node.mask=void 0)}for(let e=0;e<this.layers.length;++e){let r=this.layers[e];if(r instanceof ot&&r.isMask.value&&r.data.visible&&e>0){let o=e-1,i=this.layers[o];i instanceof Ar?i.node.mask=new Vt(r.color,r.alpha,Vt.MUL):i instanceof ot&&(i.isMask.value||(i.color.mask=new Vt(r.color,r.alpha,Vt.MUL)))}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof ot),r=this.layers.findIndex(o=>o instanceof Ar);if(e!==-1&&e<r){let o=this.layers[e].color;for(let i=e+1;i<r;++i){let a=this.layers[i];if(a instanceof ot){if(a.isMask.value)continue;o=new Ia(o,a.color,a.alpha,a.mode)}}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ge("outgoingLight","f"),r=this.layers.findIndex(o=>o instanceof Ar);if(this.layers.length>r+1){for(let o=r+1;o<this.layers.length;++o){let i=this.layers[o];if(i instanceof ot){if(i.isMask.value)continue;e=new Ia(e,i.color,i.alpha,i.mode)}}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(r=>r instanceof ol);if(e.length>0){let r=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(r=new Vt(r,e[o].position,Vt.ADD),r=new Vt(r,new J(.5).setReadonly(!0),Vt.MUL));this.fragment.position=r}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}onBeforeCompile(e){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,r){let o=(i,a,s)=>Math.min(Math.max(i,a),s);for(let i of this.layers)if(i.type==="displace"){let a=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=a}}computeCacheKey(){let e="[";for(let{data:r}of this.data.layers)if(r.type==="light")e+=`"${r.visible?r.category.toUpperCase():"Basic"}"`;else{let o=(_p[r.type]??[]).map(d=>r[d]),i=(Ap[r.type]??[]).map(d=>r[d]?.length??0),a=[...o,...i],s="isMask"in r&&r.isMask,l=`"${r.type}-${r.visible}-${s}"`;a.length?e+=`[${l}, "${a.join('","')}"],`:e+=l}return e=e.slice(0,-1)+"]",e}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(){let e=new Zc;e.needsJitter=this.needsJitter,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 r of this.flavors)r&&r.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 ot){let r=e.params.texture;if(r instanceof ti&&!r.image.loaded)return!1}return!0}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(hr.prototype,{properties:{get:function(){return this.fragment.properties}}});var ai=class extends ii{constructor(t,e,r){super(t,e,!1),this.uuid=r,this.allowVariableSaves=!0,this.saveVariableLocations(e)}};var E0=Qt(M0());var I0=new Map;function N0(n){if(typeof n=="string")return n;let t=I0.get(n);return t||(t={url:URL.createObjectURL(new Blob([n]))},I0.set(n,t)),t.url}var si=class{constructor({src:t,volume:e,delay:r,loop:o}){this._volume=1;this.delay=0;this._loop=1;this.loopsRemaining=0;this._status="stopped";this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let i;typeof t=="string"?i={src:t}:i={src:N0(t),format:"wav"},this.sound=new E0.Howl(i),this.sound.on("end",this.onEnd),this.src=t,e!==void 0&&(this.volume=e),r!==void 0&&(this.delay=r),o!==void 0&&(this.loop=o)}get status(){return this._status}get volume(){return this._volume}set volume(t){this._volume=t,this.sound.volume(t)}get loop(){return this._loop}set loop(t){this._loop=t,this.loopsRemaining=t}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(t,e=1e3){t?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,e),this.clearFade()},t)):this.sound.fade(this._volume,0,e)}on(t,e,r){this.sound.on(t,e,r)}off(t,e,r){this.sound.off(t,e,r)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(t=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}};var Mt=require("three"),cu=class{constructor(){this.type="ShapePath";this.color=new Mt.Color;this.subPaths=[];this.currentPath=null}moveTo(t,e){return this.currentPath=new Mt.Path,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,o){return this.currentPath?.quadraticCurveTo(t,e,r,o),this}bezierCurveTo(t,e,r,o,i,a){return this.currentPath?.bezierCurveTo(t,e,r,o,i,a),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let e={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},r={loc:e.ORIGIN,t:0};function o(m,y,g,x){let S=m.x,w=y.x,b=g.x,_=x.x,A=m.y,v=y.y,M=g.y,O=x.y,T=(_-b)*(A-M)-(O-M)*(S-b),C=(w-S)*(A-M)-(v-A)*(S-b),P=(O-M)*(w-S)-(_-b)*(v-A),I=T/P,E=C/P;if(P===0&&T!==0||I<=0||I>=1||E<0||E>1)return null;if(T===0&&P===0){for(let R=0;R<2;R++)if(i(R===0?g:x,m,y),r.loc===e.ORIGIN){let D=R===0?g:x;return{x:D.x,y:D.y,t:r.t}}else if(r.loc===e.BETWEEN){let D=+(S+r.t*(w-S)).toPrecision(10),z=+(A+r.t*(v-A)).toPrecision(10);return{x:D,y:z,t:r.t}}return null}else{for(let z=0;z<2;z++)if(i(z===0?g:x,m,y),r.loc===e.ORIGIN){let B=z===0?g:x;return{x:B.x,y:B.y,t:r.t}}let R=+(S+I*(w-S)).toPrecision(10),D=+(A+I*(v-A)).toPrecision(10);return{x:R,y:D,t:I}}}function i(m,y,g){let x=g.x-y.x,S=g.y-y.y,w=m.x-y.x,b=m.y-y.y,_=x*b-w*S;if(m.x===y.x&&m.y===y.y){r.loc=e.ORIGIN,r.t=0;return}if(m.x===g.x&&m.y===g.y){r.loc=e.DESTINATION,r.t=1;return}if(_<-Number.EPSILON){r.loc=e.LEFT;return}if(_>Number.EPSILON){r.loc=e.RIGHT;return}if(x*w<0||S*b<0){r.loc=e.BEHIND;return}if(Math.sqrt(x*x+S*S)<Math.sqrt(w*w+b*b)){r.loc=e.BEYOND;return}let A;x!==0?A=w/x:A=b/S,r.loc=e.BETWEEN,r.t=A}function a(m,y){let g=[],x=[];for(let S=1;S<m.length;S++){let w=m[S-1],b=m[S];for(let _=1;_<y.length;_++){let A=y[_-1],v=y[_],M=o(w,b,A,v);M!==null&&g.find(O=>O.t<=M.t+Number.EPSILON&&O.t>=M.t-Number.EPSILON)===void 0&&(g.push(M),x.push(new Mt.Vector2(M.x,M.y)))}}return x}function s(m,y,g){let x=new Mt.Vector2;y.getCenter(x);let S=[];return g.forEach(w=>{w.boundingBox.containsPoint(x)&&a(m,w.points).forEach(_=>{S.push({identifier:w.identifier,isCW:w.isCW,point:_})})}),S.sort((w,b)=>w.point.x-b.point.x),S}function l(m,y,g,x,S){(S==null||S==="")&&(S="nonzero");let w=new Mt.Vector2;m.boundingBox.getCenter(w);let b=[new Mt.Vector2(g,w.y),new Mt.Vector2(x,w.y)],_=s(b,m.boundingBox,y);_.sort((C,P)=>C.point.x-P.point.x);let A=[],v=[];_.forEach(C=>{C.identifier===m.identifier?A.push(C):v.push(C)});let M=A[0].point.x,O=[],T=0;for(;T<v.length&&v[T].point.x<M;)O.length>0&&O[O.length-1]===v[T].identifier?O.pop():O.push(v[T].identifier),T++;if(O.push(m.identifier),S==="evenodd"){let C=O.length%2===0,P=O[O.length-2];return{identifier:m.identifier,isHole:C,for:P}}else if(S==="nonzero"){let C=!0,P=null,I=null;for(let E=0;E<O.length;E++){let R=O[E];y[R]&&(C?(I=y[R].isCW,C=!1,P=R):I!==y[R].isCW&&(I=y[R].isCW,C=!0))}return{identifier:m.identifier,isHole:C,for:P}}else console.warn('fill-rule: "'+S+'" is currently not implemented.')}let d=0,c=999999999,u=-999999999,p=[];this.subPaths.forEach(m=>{let y=m.getPoints(),g=-999999999,x=999999999,S=-999999999,w=999999999;for(let b=0;b<y.length;b++){let _=y[b];_.y>g&&(g=_.y),_.y<x&&(x=_.y),_.x>S&&(S=_.x),_.x<w&&(w=_.x)}u<=S&&(u=S+1),c>=w&&(c=w-1),y.length&&p.push({curves:m.curves,points:y,isCW:Mt.ShapeUtils.isClockWise(y),identifier:d++,boundingBox:new Mt.Box2(new Mt.Vector2(w,x),new Mt.Vector2(S,g))})});let f=p.map(m=>l(m,p,c,u,this.userData?.style.fillRule)),h=[];return p.forEach(m=>{let y=f[m.identifier];if(y&&!y.isHole){let g=new Mt.Shape;g.curves=m.curves,f.filter(S=>S?.isHole&&S.for===m.identifier).forEach(S=>{if(S){let w=p[S.identifier],b=new Mt.Path;b.curves=w.curves,g.holes.push(b)}}),h.push(g)}}),h}};var L0,Pp=new Promise(n=>{L0=n}),D0=!1;var uu;function B0(){if(D0)return;if(uu)return uu;async function n(){let e=await import("./opentype.js");L0(e),D0=!0}return uu=n(),uu}var nl=class{async load(t,e,r=()=>{}){let{load:o}=await Pp;o(t,(i,a)=>{i||!a?r(i??"Something went wrong"):e(a)})}async parse(t){let{parse:e,Bidi:r}=await Pp;try{let o=e(t),i=new r,a=s=>o.charToGlyphIndex(s.char);return i.registerModifier("glyphIndex",null,a),i.applyFeatures(o,o.defaultRenderOptions.features),{font:o,bidi:i}}catch(o){console.error(o)}}};async function CP(n){return await(await fetch(n)).arrayBuffer()}var PP=new nl;async function Op(n){let t,e,r=!1;if(n.url?(t=await CP(n.url),e=n.url,r=n.url.startsWith("/")):n.data&&(t=n.data.buffer.slice(n.data.byteOffset,n.data.byteOffset+n.data.byteLength)),t){let o=await PP.parse(t);if(o)return{font:o.font,url:e,intercepted:r,arr:t,bidi:o.bidi}}}var Wa=require("three");function OP(n,t){return t.state.glyphIndex===n||t.state.fina===n||t.state.medi===n||t.state.init===n}var du=class{constructor(t){this._arrayBuffer=new ArrayBuffer(1);this._isLoaded=!1;this._intercepted=!1;this._isUserFont=t.isUserFont??!1,this._loadingPromise=Op(t).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(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=Op(t).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(t,e,r){if(!this._bidi)return[];let o=this._bidi;o.getTextGlyphs(e);let i=o.tokenizer.tokens,a=[],s=0,l=r.length===i.length;for(let d=0;d<r.length;d++){let c=r[d].index,u=String.fromCharCode(r[d].unicode),p=i[s];if(OP(c,p)||l)a.push({char:u,index:c,replacements:[p.state.glyphIndex],replacementChars:[p.char]}),s++;else{let f=p.char,h="",m=[p.state.glyphIndex],y=[],g=!1;for(;!g;)s++,h=e.charAt(s),f+=h,m.push(t.charToGlyphIndex(h)),y=t.stringToGlyphs(f),y.length===1&&y[0].index===c&&(g=!0),s>e.length&&(g=!0);a.push({char:u,index:c,replacements:m,replacementChars:Array.from(f)}),s++}}return a}generateShapes(t,e){if(!this._isLoaded)return;let r=this.font,o=e.fontSize/this.unitsPerEm,i=e.fontSize*e.lineHeight,a=t.map(x=>this.getTextWidth(x,e)),s=e.width,l=this.getCharWidth(`
|
|
2230
|
+
`,e),d=e.horizontalAlign===1?l:0,c=this.computeSpaceWidthForLine(t,0,e),u=this.getLineInitialOffsetX(a[0],s,e.horizontalAlign,t[0],l),p=this.getLineInitialOffsetY(i,t.length,e.height,o,e.verticalAlign),f=[],h=t.map(x=>[]),m=t.map(x=>[]),y;for(let x=0;x<t.length;x++){let S=t[x],w={features:{liga:!0}},b=[];try{b=r.stringToGlyphs(S,w)}catch(A){console.warn(A)}u=this.getLineInitialOffsetX(a[x],s,e.horizontalAlign,S,l);let _=[];try{_=this.reverseLigaturesTable(r,S,b)}catch(A){console.warn(A)}c=this.computeSpaceWidthForLine(t,x,e);for(let A=0;A<b.length;A++){let v=b[A],M=v.index===0?`
|
|
2231
|
+
`:v.unicode?String.fromCharCode(v.unicode):void 0,O=_[A],T=0,C=0;A===0&&e.horizontalAlign===2&&v.leftSideBearing!==void 0&&(C=-v.leftSideBearing*o),y&&(T=r.getKerningValue(v,y)*o),u+=C+T;let P=0;if(M===`
|
|
2232
|
+
`)P=d;else if(M===" ")P=c;else{let I=this.createPath(v,o,u,p,e);I&&(P=I.offsetX-(T+C),f.push(I.path))}if(O.replacements.length===1)m[x].push([u,p]),h[x].push(P);else{let I=O.replacements.map(z=>(r.glyphs.get(z).advanceWidth??0)*o),E=I.reduce((z,B)=>z+=B,0),R=I.map(z=>z/E),D=u;for(let z=0;z<R.length;z++){let B=P*R[z];m[x].push([D,p]),h[x].push(B),D+=B}}u+=P,y=v}p-=i}let g=[];for(let x=0,S=f.length;x<S;x++)g.push(...f[x].toShapes());return{shapes:g,charWidths:h,lineWidths:a,charCoords:m}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,o,i){return(r===3||r===2)&&o.indexOf(`
|
|
2233
|
+
`)>=0&&(t-=i),r===3?e*.5-t*.5:r===2?e-t:0}getLineInitialOffsetY(t,e,r,o,i){let a=e*t,s=Math.abs(this.ascender-this.descender)*o,l=t-s,d=-this.ascender*o-l/2;return i===3?-(r-a-d):i===2?-(r*.5-a*.5-d):d}createPath(t,e,r,o,i){let a=t.getPath(r,-o,i.fontSize,{kerning:!1,letterSpacing:i.letterSpacing});if(!a){console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");return}let s=new cu,l=(t.advanceWidth??1)*e;if(t)for(let d of a.commands){let c=s.currentPath?.currentPoint;if(!(c&&d.type!=="Z"&&c.x===d.x&&-c.y===d.y))switch(d.type){case"M":s.moveTo(d.x,-d.y);break;case"L":s.lineTo(d.x,-d.y);break;case"Q":s.quadraticCurveTo(d.x1,-d.y1,d.x,-d.y);break;case"C":s.bezierCurveTo(d.x1,-d.y1,d.x2,-d.y2,d.x,-d.y);break}}return s.subPaths.forEach(d=>{let c=MP(d.curves);c!==void 0&&d.currentPoint.distanceTo(c)>0&&d.lineTo(c.x,c.y)}),{offsetX:l+i.fontSize*i.letterSpacing,path:s}}getCharWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}getTextWidth(t,e){return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}computeSpaceWidthForLine(t,e,r){let o=this.getCharWidth(" ",r),i=t[e];if(i){let a=this.countSpaces(i.trimEnd());if(r.horizontalAlign===4&&e<t.length-1&&a){let s=r.width,l=this.getTextWidth(i,r);return(s-(l-a*o))/a}}return o}countSpaces(t){return(t.match(/ /g)||[]).length}};function MP(n){if(n.length){let t=n[0];if(t instanceof Wa.LineCurve)return t.v1;if(t instanceof Wa.CubicBezierCurve||t instanceof Wa.QuadraticBezierCurve)return t.v0}}var Mp=class{constructor(){this.objects=new Map;this.unreachable=new Set}getCached(t){return this.objects.get(t)}get size(){return this.objects.size}get(t,e,r){let o=this.objects.get(t);return o===void 0?(o=this.createObject(t,e,r),this.objects.set(t,o)):o.isShared=!0,o}forceDelete(t){let e=this.objects.get(t);e&&(this.disposeObject(e),this.objects.delete(t))}mutateIfUnique(t,e){let r=this.objects.get(t);if(r&&r.isShared!==!0)return this.objects.delete(t),this.objects.set(e,r),r}startGc(){this.unreachable=new Set(this.objects.keys())}markAsReachable(t,e){let r=this.objects.get(t);e===r?this.unreachable.delete(t):!1&&console.warn("Reachable but deleted",t)}endGc(){this.unreachable.forEach(t=>{this.disposeObject(this.objects.get(t)),this.objects.delete(t)}),this.unreachable.clear()}dispose(){this.objects.forEach(t=>{this.disposeObject(t)}),this.objects.clear()}},il=class extends Mp{constructor(e){super();this.flatShading=e}disposeObject(e){e.dispose()}createObject(e,r,o){let i=Zn(e,r,this.flatShading,o);return i.computeBoundingSphere(),i}};var R0={markNeedsUpdateRendererDirty:()=>{}};var Ip=require("three"),Np=class extends nu{constructor(e){super();this.shared=e}create(e){return new qa(e,this.shared)}},li=class{constructor(t,e={}){this.data=t;this.geometryCache=new il(!0);this.geometryCache2=new il(!1);this.imageHolderCache=new Np(this);this.thisContext={scene:R0,shared:this};this.deletedMaterial=new ai(Ft.defaultTwoLayerData("phong"),this.thisContext,"");this.deletedImage=new Ir(ea.emptyImage,this);this.deletedVideo=new Ir(qi.defaultVideo,this);this.materials={};this.images={};this.videos={};this.colors={};this.audios={};this.fonts={};this.variables={};this.mouseProperty=null;this.raycastProperty=null;this.requestRender=()=>{this._requestRender&&this._requestRender()};if(e.images)for(let[r,o]of Object.entries(e.images))this.addImage(r,o);if(e.videos)for(let[r,o]of Object.entries(e.videos))this.addVideo(r,o);if(e.audios)for(let[r,o]of Object.entries(e.audios))this.addAudio(r,o);this.reset(t)}setRequestRender(t){this._requestRender=t}setEntityOpContext(t){this.entityOpContext=t}reset(t,e=!1){this.resetLib(t.lib);for(let{id:r,data:o}of t.variables)this.addVariableHolder(r,o),e&&this.updateVariableHolder(r,o);for(let[r,o]of Object.entries(t.images))this.addImage(r,o);for(let[r,o]of Object.entries(t.videos))this.addVideo(r,o);for(let[r,o]of Object.entries(t.colors))this.addColor(r,o);for(let[r,o]of Object.entries(t.materials))this.addMaterial(r,o);for(let[r,o]of Object.entries(t.audios))this.addAudio(r,o);for(let[r,o]of Object.entries(t.fonts))this.addFont(r,o)}addMaterial(t,e){if(this.materials[t]){let r=this.materials[t];r.reset(e,this.thisContext),r.dispose()}else{let r=new ai(e,this.thisContext,t);this.materials[t]=r}}deleteMaterial(t){this.materials[t]&&(this.materials[t].nodeMaterialDispose(),delete this.materials[t])}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??this.deletedMaterial}material(t){return typeof t=="string"?this.getMaterialOrDeletedPlaceholder(t):t==null?(console.error("material is undefined or null"),this.deletedMaterial):new ii(t,this.thisContext)}getMaterials(){return this.materials}addImage(t,e){return this.images[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),this.images[t].updateSrc(e.data),!0):(this.images[t]=new Ir(e,this),!1)}deleteImage(t){let e=this.images[t];e&&(e.dispose(),delete this.images[t])}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]??this.deletedImage}image(t){return typeof t=="string"?this.getImage(t):this.imageHolderCache.load(t)}addVideo(t,e){return this.videos[t]?(this.videos[t].updateSrc(e.data),!0):(this.videos[t]=new Ir(e,this),!1)}deleteVideo(t){let e=this.videos[t];e&&(e.dispose(),delete this.videos[t])}getVideo(t){return this.videos[t]??this.deletedVideo}video(t){return typeof t=="string"?this.getVideo(t):this.imageHolderCache.load(t)}addColor(t,e){return this.colors[t]?(this.onColorOrImageUpdate&&this.onColorOrImageUpdate(),"a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Cn(e.r,e.g,e.b,e.a):this.colors[t]=new Cn(e.r,e.g,e.b,1),!1)}updateColor(t,e){if(this.colors[t]){this.onColorOrImageUpdate&&this.onColorOrImageUpdate();let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}color(t){let e;if(typeof t=="string"){let r=this.getColor(t);r?e=r:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new Ot(0,0,0,0))}else return"a"in t?new Ot(t.r,t.g,t.b,t.a):new Ot(t.r,t.g,t.b,1);return e}addAudio(t,e){this.audios[t]=e}getAudio(t){let e=this.audios[t];if(e instanceof si)return e;{let r=new si({src:e.data});return this.audios[t]=r,r}}deleteAudio(t){let e=this.audios[t];e&&(e instanceof si&&e.dispose(),delete this.audios[t])}addFont(t,e){this.fonts[t]=new du(e),this.fonts[t].loadingPromise.then(()=>this.requestRender())}getFont(t){return this.fonts[t]}deleteFont(t){this.fonts[t]&&delete this.fonts[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this._requestRender=void 0,Object.values(this.audios).forEach(e=>{e instanceof si&&e.dispose()}),this.audios={},this.geometryCache.dispose(),this.geometryCache2.dispose()}addVariableHolder(t,e){return this.variables[t]===void 0?(this.variables[t]={value:e.value,locations:[]},"dynamicVariableType"in e&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0),!0):(this.variables[t].value=e.value,!1)}resetDynamicVariablePlayState(){for(let t in this.variables)this.variables[t].dynamicVariablePlayState!==void 0&&(this.variables[t].dynamicVariablePlayState="Playing",this.variables[t].dynamicVariableToggleIsForward=void 0)}updateVariableHolder(t,e){this.updateVariable(t,e.value)}updateVariable(t,e){if(this.variables[t]===void 0)return!1;this.variables[t].value=e;let r=e;for(;typeof r=="string";)r=this.variables[r].value;let o=this.entityOpContext.scene;for(let i=this.variables[t].locations.length-1;i>=0;i--){let a=this.variables[t].locations[i];if(a[0]==="material"){let s=a[1],l=r,d={scene:o,shared:this},c=a.slice(2);o.traverseMaterial(p=>{let f=p.root??p;f.uuid===s&&f.onVariableUpdate(c,l,d)});let u=this.materials[s];u&&u.onVariableUpdate(c,l,d)}else{let s=o.find(a[0]);if(s===void 0){this.variables[t].locations.splice(i,1);continue}if(a[1]!=="geometry"){for(let l=1;l<a.length-1;l++)s=s[a[l]];a[1]==="rotation"&&(r=Ip.MathUtils.DEG2RAD*r),s[a[a.length-1]]=r}if(s=o.find(a[0]),Oe.is(s)){if(a[1]==="position"||a[1]==="rotation"||a[1]==="scale")s.onVariableUpdate();else if(a[1]==="geometry"){let l=s;s.component&&(l=s.component);let d=l.dataPatched;l.chooseGeoemtryCache(this).forceDelete(d.geometry),l.createGeometryDelayed(this.entityOpContext),l.onVariableUpdate(!0),l.instances.forEach(c=>{let u=c.dataPatched;c.chooseGeoemtryCache(this).forceDelete(u.geometry),c.createGeometryDelayed(this.entityOpContext),c.onVariableUpdate(!0)})}}}}return!0}deleteVariable(t){this.variables[t]&&delete this.variables[t]}getVariable(t,e){if(Array.isArray(t)){if(t[0]==="mouse")return this.mouseProperty?.[t[1]]??0;if(t[0]==="raycast")return this.raycastProperty?.[t[1]]??0;let r=this.entityOpContext.scene.find(t[0]);if(t[1]==="width"||t[1]==="height"||t[1]==="depth")return r.geometry.userData.parameters[t[1]];for(let o=1;o<t.length;o++)r=r[t[o]];return t[1]==="rotation"&&(r*=Ip.MathUtils.RAD2DEG),r}for(let r in this.variables){if(e===void 0)break;let o=this.variables[r],i=o.locations?.findIndex(a=>gt.equal(a,e));i!==void 0&&i!==-1&&o.locations.splice(i,1)}if(typeof t=="string"){let r=t,o=t;do{if(o=r,this.variables[r]===void 0)break;r=this.variables[r].value}while(typeof r=="string");return e&&this.variables[o]!==void 0&&this.variables[o].locations.push(e),r}else return t}getVariables(){return this.variables}getDynamicVariablePlayState(t){return this.variables[t]?.dynamicVariablePlayState}setDynamicVariablePlayState(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariablePlayState=e)}getDynamicVariableToggleIsForward(t){return this.variables[t]?.dynamicVariableToggleIsForward}setDynamicVariableToggleIsForward(t,e){this.variables[t]!==void 0&&(this.variables[t].dynamicVariableToggleIsForward=e)}resetLib(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.asset);for(let[e,r]of Object.entries(t.audios))this.addAudio(e,r.asset);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r.asset);for(let[e,r]of Object.entries(t.fonts))this.addFont(e,r.asset);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,r.asset);for(let[e,r]of Object.entries(t.videos))this.addVideo(e,r.asset);for(let[e,r]of Object.entries(t.variables))this.addVariableHolder(e,r.asset)}updateLibByOp(t,e){t.path[0]==="images"?t.path.length===1&&t.type===1?this.addImage(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===1&&t.type===1?this.addVideo(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===1&&t.type===1?this.addAudio(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="colors"?t.path.length===1&&t.type===1?this.addColor(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteMaterial(t.id):t.path[0]==="fonts"?t.path.length===1&&t.type===1?this.addFont(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===1&&t.type===1?this.addVariableHolder(t.id,t.data.asset):t.path.length===1&&t.type===2&&this.deleteVariable(t.id):t.path[0]==="components"&&e.updateByLibOp(t,this)}updateByOp(t,e,r){this.data=e,t.path[0]==="images"?t.path.length===2&&t.type===0?t.props.data&&this.getImage(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addImage(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteImage(t.id):t.path[0]==="videos"?t.path.length===2&&t.type===0?t.props.data&&this.getVideo(t.path[1]).updateSrc(t.props.data):t.path.length===1&&t.type===1?this.addVideo(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteVideo(t.id):t.path[0]==="audios"?t.path.length===2&&t.type===0?t.props.data&&this.addAudio(t.path[1],e.audios[t.path[1]]):t.path.length===1&&t.type===1?this.addAudio(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteAudio(t.id):t.path[0]==="colors"?t.path.length===2&&t.type===0?this.updateColor(t.path[1],t.props):t.path.length===1&&t.type===1?this.addColor(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteColor(t.id):t.path[0]==="materials"?t.path.length===1&&t.type===1?this.addMaterial(t.id,t.data):t.path.length===1&&t.type===2?this.deleteMaterial(t.id):t.path.length>1&&this.getMaterial(t.path[1]).updateByOp(xt.drop(t,2),e.materials[t.path[1]],{shared:this,scene:r}):t.path[0]==="fonts"?t.path.length===2&&t.type===0?this.updateFont(t.path[1],t,r):t.path.length===1&&t.type===1?this.addFont(t.id,t.data):t.path.length===1&&t.type===2&&this.deleteFont(t.id):t.path[0]==="variables"?t.path.length===2&&t.type===0&&"value"in t.props?this.updateVariable(t.path[1],t.props.value):t.path.length===1&&t.type===4?this.addVariableHolder(t.id,t.data):t.path.length===1&&t.type===5&&this.deleteVariable(t.id):t.path[0]==="lib"&&this.updateLibByOp(xt.drop(t,1),r)}updateFont(t,e,r){if(e.props.url){let o=this.getFont(t),i={...this.data.fonts[t],url:e.props.url};o.update(i),o.loadingPromise.then(()=>this.requestRender()),r.updateFont(t,this)}}},V0=new li(Fr.emptyData());var mr=class extends Ut{updateByPatchedOp(e,r,o){if(super.updateByPatchedOp(e,r,o),Dm(e.path,["materials"])!==null&&e.type===0&&Array.isArray(this.material))for(let[i,a]of Object.entries(e.props)){let s=o.shared.material(a);this.material[Number(i)]=s}else if(Yt(e.path,["material"])&&this.material instanceof hr)"material"in r&&typeof r.material!="string"&&this.material.updateByOp(xt.drop(e,1),r.material,o);else if(Yt(e.path,["materials","*"])&&Array.isArray(this.material)){let i=e.path[1];if("materials"in r&&i<this.material.length){let a=r.materials[i];typeof a!="string"&&this.material[i].updateByOp(xt.drop(e,2),a,o)}}}get needsAO(){return this.material!==void 0?(Array.isArray(this.material)?this.material[0]:this.material).hasAO:!1}updateState(e,r){super.updateState(e,r),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=r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe),r.scene.markNeedsUpdateRendererDirty()),e.geometry?.type==="NonParametricGeometry"&&("materials"in e&&e.materials!==void 0?(this.disposeMaterial(),this.material=e.materials.map(i=>r.shared.material(i).getFlavor(o.flatShading,o.side,o.wireframe)),r.scene.markNeedsUpdateRendererDirty()):"material"in e&&e.material!==void 0&&(this.disposeMaterial(),this.material=[r.shared.material(e.material).getFlavor(o.flatShading,o.side,o.wireframe)],r.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&&vl(this.material).forEach(e=>{e instanceof hr&&(e instanceof ai||e.nodeMaterialDispose())})}dispose(){this.disposeMaterial(),super.dispose()}};var Tr=require("three");var G0=new Tr.Vector3,z0=new Tr.Vector4,k0=new Tr.Vector4,NP=new Tr.Vector3,F0=new Tr.Matrix4,St=class extends mr{constructor(e,r,o){super(e,r);this.data=r;this.localGeometry=void 0,r.bindMode&&r.bindMatrix&&(this.isSkinnedMesh=!0,this.bindMode=r.bindMode,this.bindMatrix=new Tr.Matrix4().fromArray(r.bindMatrix),this.bindMatrixInverse=new Tr.Matrix4)}chooseGeoemtryCache(e){return e.geometryCache}markGeometryAsReachable(e){this.geometryCreateDeleyed instanceof Tr.BufferGeometry&&this.chooseGeoemtryCache(e).markAsReachable(this.dataPatched.geometry,this.geometryCreateDeleyed)}get geometry(){if(this.localGeometry!==void 0)return this.localGeometry;if(this.geometryCreateDeleyed instanceof li){let e=this.geometryCreateDeleyed,r=this.chooseGeoemtryCache(e);this.geometryCreateDeleyed=r.get(this.dataPatched.geometry,e,this)}return this.geometryCreateDeleyed}set geometry(e){this.localGeometry=e}get is2DAndNoDepth(){let e=this.dataPatched.geometry;return Ps.is2DParametricMesh(e.type)&&e.depth===0}get is2DType(){return Ps.is2DParametricMesh(this.geometry.userData.type)}get isNonParametric(){return this.geometry.userData.type==="NonParametricGeometry"}updateByPatchedOp(e,r,o){super.updateByPatchedOp(e,r,o),Yt(e.path,["geometry"])&&this.updateByPatchedOpGeometry(xt.drop(e,1),r.geometry,o)}removeInteractionGeometry(){this.localGeometry?.dispose(),this.localGeometry=void 0}updateGeometryInteractions(e,r){this.invalidateDownstreamBooleanData();let o=this.data.geometry.type;if(o==="NonParametricGeometry"||o==="SubdivGeometry"){let i=e;if(this.localGeometry===void 0){let c={...this.data.geometry,...i};this.localGeometry=Zn(c,r,this.data.flatShading,this)}let a,s,l;i.scaleBaked?[a,s,l]=i.scaleBaked:{width:a,height:s,depth:l}=i;let d=this.localGeometry.userData;d.sxPrev!==void 0&&Us(this.localGeometry.attributes,a/d.sxPrev,s/d.syPrev,l/d.szPrev),d.sxPrev=a,d.syPrev=s,d.szPrev=l}else{let i={...this.data.geometry,...e};this.localGeometry?.dispose(),this.localGeometry=Zn(i,r,this.data.flatShading,this)}}refreshAttachedCloners(e){for(let r of this.attachedSurfaceCloners)e.scene.addPendingUpdateCloner(r.object)}refreshAttachedPaths(e){for(let r of this.attachedPaths)e.scene.addPendingCommand(()=>r.updateShape())}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.refreshAttachedCloners(e),this.refreshAttachedPaths(e)}updateByPatchedOpGeometry(e,r,o){let i=!1;e.type===0&&e.path.length===0&&Object.keys(e.props).includes("scaleBaked")&&this.geometryCreateDeleyed instanceof bt&&this.chooseGeoemtryCache(o.shared).mutateIfUnique(this.geometryCreateDeleyed.data,r)===this.geometryCreateDeleyed&&(i=!0,this.geometryCreateDeleyed.mutateDirectlyScaleBaked(r,e.props.scaleBaked),this.refreshAttachedCloners(o),this.refreshAttachedPaths(o)),i||(o.scene?.markGeometryCacheDirty(),this.createGeometryDelayed(o)),this.resetBBoxNeedsUpdate(),this.invalidateDownstreamBooleanData()}updateGeometryOnStateUpdate(e,r){this.createGeometryDelayed(r)}updateState(e,r){e.geometry!==void 0&&this.updateGeometryOnStateUpdate(e.geometry,r),super.updateState(e,r)}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,r){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),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)):e.setScalar(0),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"&&this.bindMatrixInverse.copy(this.bindMatrix).invert()}bind(e,r){this.skeleton=e,r===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),r=this.matrixWorld),this.bindMatrix.copy(r),this.bindMatrixInverse.copy(r).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(e){let r=new Tr.Vector4,o=this.geometry.attributes.skinWeight;for(let i=0,a=o.count;i<a;i++){r.fromBufferAttribute(o,i);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),o.setXYZW(i,r.x,r.y,r.z,r.w)}}boneTransform(e,r){let o=this.skeleton;if(o===void 0)return;let i=this.geometry;z0.fromBufferAttribute(i.attributes.skinIndex,e),k0.fromBufferAttribute(i.attributes.skinWeight,e),G0.copy(r).applyMatrix4(this.bindMatrix),r.set(0,0,0);for(let a=0;a<4;a++){let s=k0.getComponent(a);if(s!==0){let l=z0.getComponent(a);F0.multiplyMatrices(o.bones[l].matrixWorld,o.boneInverses[l]),r.addScaledVector(NP.copy(G0).applyMatrix4(F0),s)}}return r.applyMatrix4(this.bindMatrixInverse)}};function EP(n){if(n.geometry.attributes.extrudeNormal||!n.geometry.attributes.position||!n.geometry.attributes.normal)return;let t=new Map,e=n.geometry.attributes,r=e.position.array,o=e.normal.array,i=new Float32Array(r.length);for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=new Cr.Vector3(o[a],o[a+1],o[a+2]);t.has(s)?t.get(s)?.normals.push(l):t.set(s,{normals:[l],result:new Cr.Vector3})}t.forEach((a,s)=>{for(let l of a.normals)a.result.add(l);a.result.divideScalar(a.normals.length)});for(let a=0;a<r.length;a+=3){let s=`${r[a]}_${r[a+1]}_${r[a+2]}`,l=t.get(s)?.result;l&&(i[a]=l.x,i[a+1]=l.y,i[a+2]=l.z)}n.geometry.setAttribute("extrudeNormal",new Cr.Float32BufferAttribute(i,3))}function DP(n){if(n.geometry.attributes.extrudeNormals||!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=new Cr.Vector3;for(let i=0;i<e.length;i+=3)o.set(e[i],e[i+1],e[i+2]).normalize(),r[i]=o.x,r[i+1]=o.y,r[i+2]=o.z;n.geometry.setAttribute("extrudeNormal",new Cr.Float32BufferAttribute(r,3))}function $a(n){if(Array.isArray(n.material)){for(let t of n.material)if(t.getLayersOfType("outline").length===0)return}else if(!(n.material instanceof hr)||n.material.getLayersOfType("outline").length===0)return;n instanceof St&&n.is2DAndNoDepth?DP(n):EP(n)}function Ya(n){if(!n.geometry.attributes.position)return;let e=n.geometry.attributes.position.array,r=new Float32Array(e.length),o=parseInt(n.uuid.replace(/\D/g,"")),i=[Cr.MathUtils.seededRandom(o),Cr.MathUtils.seededRandom(o+1e4),Cr.MathUtils.seededRandom(o+2e4)];for(let a=0;a<e.length;a++)r[a]=i[a%3];n.geometry.setAttribute("randomColor",new Cr.BufferAttribute(r,3))}var LP;va.then(n=>{LP=n});var So=new qo.Box3,al=new qo.Vector3;function j0(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="SubdivGeometry"&&(t=!0)}),t}var ci=class extends St{constructor(e,r,o){super(e,r,o);this.data=r;this.hiddenMatrixOld=new qo.Matrix4;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,r){let o=this.geometry.userData.parameters;e.copy(this.originalGeometryNew.boundingSphere.center),r.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}createGeometryByControls(e){if(this.skipReactionUpdate===!0)return;let r=this.localGeometry?.uuid,{originalGeometry:o,subdividedGeometry:i,subdivPointer:a}=bt.build(e,this.subdivPointer,this.smoothShading,this.hasNonUniformScale?this.shearScale:void 0);this.subdivPointer=a,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,$a(this),Ya(this),this.calcBoundingBox(),r&&(this.localGeometry.uuid=r)}updateState(e,r){if(super.updateState(e,r),e.flatShading!==void 0){let o=this.material;this.material=o.getFlavor(!1,o.side,o.wireframe),this.smoothShading=!e.flatShading,this.createGeometryDelayed(r)}}updateMesh(e=!1){bt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0),this.subdividedGeometry&&bt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e&&this.hasNonUniformScale?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=bt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=bt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.localGeometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){let o=this.localGeometry;this.localGeometry=this.originalGeometryNew,Ut.prototype.raycast.call(this,e,r),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 qo.Sphere,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=e.boundingSphere));let r=e.attributes.position,o=e.boundingSphere.center;So.setFromBufferAttribute(r),So.getCenter(o),e.boundingSphere.radius=o.distanceTo(So.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),So.getSize(al),this.hasNonUniformScale&&al.divide(this.scale);let i={width:al.x,height:al.y,depth:al.z};return this.geometry.userData.parameters=i,i}updateBoundingSphere(e){let r=this.originalGeometry;So.min.set(e[0],e[2],e[4]),So.max.set(e[1],e[3],e[5]),this.hasNonUniformScale&&(So.min.applyMatrix4(this.shearScaleInv),So.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new qo.Sphere);let o=r.boundingSphere.center;So.getCenter(o),r.boundingSphere.radius=o.distanceTo(So.max)}freeSubdivPointer(){this.subdivPointer&&(bt.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0),this.localGeometry=void 0,this.originalGeometry?.dispose(),this.subdividedGeometry?.dispose()}dispose(){super.dispose(),this.freeSubdivPointer()}updateByPatchedOpGeometry(e,r,o){super.updateByPatchedOpGeometry(e,r,o),this.localGeometry&&this.createGeometryByControls(r)}};var wo=require("three"),U0=-1,BP=1,H0={x:[1,0,0],"-x":[-1,0,0],y:[0,1,0],"-y":[0,-1,0],z:[0,0,1],"-z":[0,0,-1]},q0={polygon_center:0,edge:1,vertex:2},sl=(n,t)=>(e,r)=>!t||e===0||n===0?0:n*r/100,we=(n,t)=>{let e=Math.abs(t),r=e*-1;return(n-U0)*(e-r)/(BP-U0)+r};function W0(n){let t=[],e={};for(var r=0,o=n.length;r<o;r++){var i=JSON.stringify(n[r].pos.map(a=>Math.round(a*1e4)/1e4));e[i]||(t.push(n[r]),e[i]=!0)}return t}var RP=new wo.Vector3,pu=new wo.Vector3,VP=new wo.Vector3,GP=new wo.Vector3;function Xa(n,t){let e=VP.fromArray(n),r=GP.fromArray(t);pu.copy(r).sub(e);let o=pu.length();return pu.normalize().multiplyScalar(o*.5),RP.copy(e).add(pu).toArray()}var Er=new wo.Triangle,fu=new wo.Vector3,hu=new wo.Vector3,ui=new wo.Vector3;function $0(n){let t=[];for(let e=0;e<=n.index.count;e++)if(fu.fromArray(n.index.array,e*3),Er.setFromAttributeAndIndices(n.attributes.position,fu.x,fu.y,fu.z),Er.getNormal(hu),Er.getMidpoint(ui),!(isNaN(ui.x)||isNaN(ui.y)||isNaN(ui.z))){let{a:r,b:o,c:i}=Er,a=r.toArray(),s=o.toArray(),l=i.toArray(),d=r.distanceTo(o),c=o.distanceTo(i),u=i.distanceTo(r),p=Xa(a,s),f=Xa(s,l),h=Xa(l,a),m=[d,c,u],y=Math.max(...m),g=m.filter(w=>Math.round(w)===Math.round(y)).length>1,x=[],S=Er.getMidpoint(ui).toArray();y===d&&!g&&(x=[f,h,h],S=p),y===c&&!g&&(x=[p,h,h],S=f),y===u&&!g&&(x=[p,f,f],S=h),g&&(x=[p,f,h]),t.push({vertices:[a,s,l],faceCenters:x,midpoint:S,norm:Er.getNormal(hu).toArray()})}return t}function Y0(n){let t=[],{position:e}=n.attributes;for(let r=0;r<e.count;r++){Er.setFromAttributeAndIndices(e,r*3,r*3+1,r*3+2),Er.getNormal(hu),Er.getMidpoint(ui);let o=Er.a.toArray(),i=Er.b.toArray(),a=Er.c.toArray();t.push({vertices:[o,i,a],faceCenters:[Xa(o,i),Xa(i,a),Xa(a,o)],midpoint:ui.toArray(),norm:hu.toArray()})}return t}var zP=4,kP=.5,Ep=n=>.5*(1-Math.cos(n*Math.PI)),Dp=class{constructor(){this.perlin=new Array(4095+1)}noise(t,e=0,r=0){if(this.perlin==null){this.perlin=new Array(4095+1);for(let g=0;g<4095+1;g++)this.perlin[g]=Math.random()}t<0&&(t=-t),e<0&&(e=-e),r<0&&(r=-r);let o=Math.floor(t),i=Math.floor(e),a=Math.floor(r),s=t-o,l=e-i,d=r-a,c,u,p=0,f=.5,h,m,y;for(let g=0;g<zP;g++){let x=o+(i<<4)+(a<<8);c=Ep(s),u=Ep(l),h=this.perlin[x&4095],h+=c*(this.perlin[x+1&4095]-h),m=this.perlin[x+16&4095],m+=c*(this.perlin[x+16+1&4095]-m),h+=u*(m-h),x+=256,m=this.perlin[x&4095],m+=c*(this.perlin[x+1&4095]-m),y=this.perlin[x+16&4095],y+=c*(this.perlin[x+16+1&4095]-y),m+=u*(y-m),h+=Ep(d)*(m-h),p+=h*f,f*=kP,o<<=1,s*=2,i<<=1,l*=2,a<<=1,d*=2,s>=1&&(o++,s--),l>=1&&(i++,l--),d>=1&&(a++,d--)}return p}noiseSeed(t){let e=(()=>{let a,s;return{setSeed(l){s=a=(l??Math.random()*4294967296)>>>0},getSeed(){return a},rand(){return s=(1664525*s+1013904223)%4294967296,s/4294967296}}})();e.setSeed(t),this.perlin=new Array(4095+1);for(let r=0;r<4095+1;r++)this.perlin[r]=e.rand()}},X0=Dp;var Qa=require("three");var K0=new Qa.Vector3,Q0=new Qa.Matrix4,Z0=new Qa.Ray;function J0(n){let t=!1;return n.scene.objects.traverse((e,r)=>{r.type==="Mesh"&&r.geometry.type==="TextGeometry"&&(t=!0)}),t}var Ka=class extends St{constructor(e,r,o){super(e,r,o);this.data=r}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,r){let{matrixWorld:o}=this;if(!(isNaN(e.ray.origin.x)||this.scale.x===0||this.scale.y===0||this.scale.z===0)&&(Q0.copy(o).invert(),Z0.copy(e.ray).applyMatrix4(Q0),Z0.intersectBox(this.singleBBox,K0))){let i=K0.applyMatrix4(o),a=e.ray.origin.distanceTo(i);r.push({distance:a,point:i.clone(),object:this})}}};var or=1e-4,_o,rx,ox,nx,ex=new Fe.Vector3,tx=new Fe.Vector3;va.then(n=>{_o=n,rx=[_o.get_face_center,_o.get_edge_midpoint,_o.get_vertex_position],ox=[_o.get_face_normal,_o.get_edge_normal,_o.get_vertex_normal],nx=[_o.face_count,_o.edge_count,_o.vertex_count]});var FP=new Fe.Matrix4,jP=new Fe.Matrix4,On=new Fe.Vector3,di=new Fe.Vector3,ll=new Fe.Vector3,Lp=new Fe.Vector3,UP=new Fe.Vector3,HP=new Fe.Vector3;var Wo=new X0,Ja=class extends oa(Fe.Object3D){constructor(e,r){super();this.parameters=r;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 r of this.children)r instanceof Fo&&r.expand()}invalidateTransform(e){this.matrixWorldNeedsUpdate=!0,this.traverse(r=>{r instanceof Fo&&r.object===e&&(r.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 r;if(e!==void 0?r=e:r=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&&(r=0),this.parameters.type==="toObject"&&this.objectForSample){for(let i=0,a=this.children.length;i<a;++i)this.remove(this.children[0]);let o=this.children;if(o.length===r)return;if(o.length<r)for(let i=0,a=r-o.length;i<a;++i){let s=new Fo(this.object);s.expand(),this.add(s)}else for(let i=0,a=o.length-r;i<a;++i)this.remove(o[i])}else{if(this.children.length===r)return;if(this.children.length<r)for(let o=0,i=r-this.children.length;o<i;++o){let a=new Fo(this.object);a.expand(),this.add(a)}else for(let o=0,i=this.children.length-r;o<i;++o)this.remove(this.children[0])}}_updateRadial(e){let r=e.radial,o=r.start*Fe.MathUtils.DEG2RAD,i=r.end*Fe.MathUtils.DEG2RAD,a=o-i,s=new Fe.Euler(r.rotation[0],r.rotation[1],r.rotation[2]),l;switch(r.axis){case"z":l=new Fe.Vector3(0,0,1);break;case"y":l=new Fe.Vector3(0,1,0);break;default:case"x":l=new Fe.Vector3(1,0,0);break}let d=e.randomnessObject??uo.defaultData([1,1,1]).randomnessObject,c=d.noiseType==="perlin";Wo.noiseSeed(d.seed);let u=Cc((0,Za.default)(d.seed)),p=sl(d.strength,this.parameters.randomness);for(let[f,h]of this.children.entries()){let m=f*(d.freqScale/10)+d.movement,y=c?Wo.noise(m):u(m,m),g=f+1;h.scale.x=r.scale[0]+p(g,we(y,d.scale[0]))||or,h.scale.y=r.scale[1]+p(g,we(y,d.scale[1]))||or,h.scale.z=r.scale[2]+p(g,we(y,d.scale[2]))||or,h.position.setScalar(0);let x=a/e.count*f-o;switch(r.axis){case"x":h.rotation.set(0,x,0);break;case"y":h.rotation.set(0,0,x);break;case"z":h.rotation.set(x,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0]+p(g,we(y,d.position[0])),h.position.y+=r.position[1]+p(g,we(y,d.position[1])),h.position.z+=r.position[2]+p(g,we(y,d.position[2]));let S=p(g,we(y,d.rotation[0])),w=p(g,we(y,d.rotation[1])),b=p(g,we(y,d.rotation[2]));r.alignment===!0?(h.rotation.x+=s.x+S,h.rotation.y+=s.y+w,h.rotation.z+=s.z+b):h.rotation.set(s.x+S,s.y+w,s.z+b)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Fe.Euler(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??uo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Wo.noiseSeed(i.seed);let s=Cc((0,Za.default)(i.seed)),l=sl(i.strength,this.parameters.randomness);for(let[d,c]of this.children.entries()){let u=d*(i.freqScale/10)+i.movement,p=a?Wo.noise(u):s(u,u),f=d+1,h=l(f,we(p,i.rotation[0])),m=l(f,we(p,i.rotation[1])),y=l(f,we(p,i.rotation[2]));c.scale.x=1+(r.scale[0]-1)*d+l(f,we(p,i.scale[0]))||or,c.scale.y=1+(r.scale[1]-1)*d+l(f,we(p,i.scale[1]))||or,c.scale.z=1+(r.scale[2]-1)*d+l(f,we(p,i.scale[2]))||or,c.rotation.x=o.x*d+h,c.rotation.y=o.y*d+m,c.rotation.z=o.z*d+y,c.position.x=r.position[0]*d+l(f,we(p,i.position[0])),c.position.y=r.position[1]*d+l(f,we(p,i.position[1])),c.position.z=r.position[2]*d+l(f,we(p,i.position[2]))}}_updateGrid(e){let r=0,o=e.grid,i=e.randomnessObject??uo.defaultData([1,1,1]).randomnessObject,a=sl(i.strength,this.parameters.randomness),s=i.noiseType==="perlin";Wo.noiseSeed(i.seed);let l=Ry((0,Za.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},c=new Fe.Vector3(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 h=[(u+1)*(i.freqScale/10)+i.movement,(p+1)*(i.freqScale/10)+i.movement,(f+1)*(i.freqScale/10)+i.movement],m=s?Wo.noise(...h):l(...h),y=this.children[r++];y.scale.x=1+a(r,we(m,i.scale[0]))||or,y.scale.y=1+a(r,we(m,i.scale[1]))||or,y.scale.z=1+a(r,we(m,i.scale[2]))||or;let g=a(r,we(m,i.rotation[0])),x=a(r,we(m,i.rotation[1])),S=a(r,we(m,i.rotation[2]));y.rotation.set(g,x,S),y.position.x=o.size[0]*u-c.x+a(r,we(m,i.position[0])),y.position.y=o.size[1]*p-c.y+a(r,we(m,i.position[1])),y.position.z=o.size[2]*f-c.z+a(r,we(m,i.position[2]))}}else for(let d=0;d<o.count[0];d++)for(let c=0;c<o.count[1];c++)for(let u=0;u<o.count[2];u++){let p=[(d+1)*(i.freqScale/10)+i.movement,(c+1)*(i.freqScale/10)+i.movement,(u+1)*(i.freqScale/10)+i.movement],f=s?Wo.noise(...p):l(...p),h=this.children[r++];h.scale.x=1+a(r,we(f,i.scale[0]))||or,h.scale.y=1+a(r,we(f,i.scale[1]))||or,h.scale.z=1+a(r,we(f,i.scale[2]))||or;let m=a(r,we(f,i.rotation[0])),y=a(r,we(f,i.rotation[1])),g=a(r,we(f,i.rotation[2]));h.rotation.set(m,y,g),h.position.x=o.size[0]*d+a(r,we(f,i.position[0])),h.position.y=-o.size[1]*c+a(r,we(f,i.position[1])),h.position.z=-o.size[2]*u+a(r,we(f,i.position[2]))}}_updateToObject(e){if(e.type!=="toObject")throw new Error;let{toObject:r}=e,o=new Fe.Euler(r.rotation[0],r.rotation[1],r.rotation[2]),i=e.randomnessObject??uo.defaultData([1,1,1]).randomnessObject,a=i.noiseType==="perlin";Wo.noiseSeed(i.seed);let s=Cc((0,Za.default)(i.seed)),l=sl(i.strength,this.parameters.randomness);if(!r.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 Ka)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(),c=[],u=g=>{let x=g.length,S=g.map(_=>_[0]).reduce((_,A)=>_+A,0),w=g.map(_=>_[1]).reduce((_,A)=>_+A,0),b=g.map(_=>_[2]).reduce((_,A)=>_+A,0);return[S/x,w/x,b/x]},p=g=>Math.round(g*1e6)/1e6;d.forEach(g=>{let x=d.filter(S=>p(g.pos[0])===p(S.pos[0])&&p(g.pos[1])===p(S.pos[1])&&p(g.pos[2])===p(S.pos[2]));x.length>1?c.push({pos:g.pos,norm:u(x.map(S=>S.norm))}):c.push(g)});let f=W0(c);if(f.length>0){let g=Math.round(f.length*r.count/100);this._updateCount(g)}else{let g=this.objectForSample.geometry.getAttribute("position");if(!g||isNaN(g.count)||g.count===0){console.warn(`Oh no! The object "${this.object.name}" (${this.object.uuid}) cannot be cloned on the surface of "${this.objectForSample.name}" (${this.objectForSample.uuid}) because the latter does not have a valid geometry.`);return}}this.objectForSample.updateMatrixWorld();let h=new Pc(this.objectForSample).build(),m=H0[r.axis],y=this.children;h.setRandomGenerator((0,Za.default)(this.object.uuid+r.seed));for(let[g,x]of y.entries()){let S=g*(i.freqScale/10)+i.movement,w=a?Wo.noise(S):s(S,S),b=g+1,_=l(b,we(w,i.rotation[0])),A=l(b,we(w,i.rotation[1])),v=l(b,we(w,i.rotation[2]));r.spreadType==="random"?h.sample(ll,Lp):(f.length&&(ll.fromArray(f[g].pos),Lp.fromArray(f[g].norm)),this.objectForSample instanceof ci&&ll.applyMatrix4(FP.copy(this.objectForSample.matrixWorld).invert())),ll.applyMatrix4(this.object.hiddenMatrix.clone().invert()),x.position.copy(ll),On.fromArray(m);let M=r.align==="normal"?Lp:this.object.getWorldDirection(HP),O=di.fromArray(r.position);di.x+=di.x+l(b,we(w,i.position[0])),di.y+=di.y+l(b,we(w,i.position[1])),di.z+=di.z+l(b,we(w,i.position[2]));let T=Math.acos(M.dot(On)),C=UP.crossVectors(On,M).normalize(),P=jP.makeRotationAxis(C,T),I=M.clone().cross(this.object.up).normalize(),E=I.clone().cross(M).normalize(),R=new Fe.Matrix4().makeBasis(I,M,E),D=new Fe.Vector3(On.y,On.z,On.x).normalize(),z=D.clone().cross(On).normalize(),B=new Fe.Matrix4().makeBasis(D,On,z).invert(),V=new Fe.Matrix4().multiplyMatrices(R,B);x.rotation.setFromRotationMatrix(V),O.applyMatrix4(P),x.position.add(O),x.rotation.x=x.rotation.x+o.x+_,x.rotation.y=x.rotation.y+o.y+A,x.rotation.z=x.rotation.z+o.z+v,x.scale.setScalar(1),x.scale.x=x.scale.x+r.scale[0]+l(b,we(w,i.scale[0]))||or,x.scale.y=x.scale.y+r.scale[1]+l(b,we(w,i.scale[1]))||or,x.scale.z=x.scale.z+r.scale[2]+l(b,we(w,i.scale[2]))||or,x.scale.multiply(this.object.scale),x.hiddenMatrix=this.object.hiddenMatrix}}getSubdivData(){if(!this.objectForSample)return[];let e=this.parameters.toObject.spreadType;if(e==="random")return[];if(this.objectForSample instanceof ci){let r=this.objectForSample,o=q0[e],i=nx[o],a=rx[o],s=ox[o],l=[],d=i(r.subdivPointerNew);for(let c=0;c<=d-1;c++){let u=a(r.subdivPointerNew,c),p=s(r.subdivPointerNew,c);ex.fromArray(u).applyMatrix4(r.matrixWorld),tx.fromArray(p),l.push({pos:ex.toArray(),norm:tx.toArray()})}return l}else return(this.objectForSample.geometry.index?$0(this.objectForSample.geometry):Y0(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,r){if(this.parameters=Bo(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=r.find(this.parameters.toObject.object);o instanceof Ut?this.objectForSample=o:this.objectForSample=void 0,this.matrix=new Fe.Matrix4,this.hiddenMatrix=new Fe.Matrix4,this.matrixWorldNeedsUpdate=!0,this.matrixAutoUpdate=!1,o&&o.add(this)}this.update()}get pendingMediaLoad(){return this._pendingMediaLoad}};var Gr=require("three");var nt=require("three");var $t=require("three");var ix=require("three"),Ao=n=>{var t;return t=class extends n{},t.geometryHelper=new ix.BoxGeometry(30,30,30),t};var Kt=require("three"),mu=new Kt.Ray,Bp=new Kt.Sphere,ax=new Kt.Matrix4,To=(n,t,e,r,o=!1)=>{let i=t,a=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),Bp.copy(i.boundingSphere),Bp.applyMatrix4(a),e.ray.intersectsSphere(Bp)===!1||(ax.copy(a).invert(),mu.copy(e.ray).applyMatrix4(ax),i.boundingBox!==null&&mu.intersectsBox(i.boundingBox)===!1))return;let s,l,d,c,u=i.index,p=i.attributes.position,f=i.drawRange,h,m;if(o===!1){let g=Math.max(0,f.start),x=Math.min(u.count,f.start+f.count);for(h=g,m=x;h<m;h+=3)if(l=u.getX(h),d=u.getX(h+1),c=u.getX(h+2),s=y(n,e,mu,p,l,d,c),s){s.faceIndex=Math.floor(h/3),r.push(s);return}}else{let x=i.attributes.position,S=new Kt.Vector3,w=new Kt.Vector3,b=new Kt.Vector3,_=new Kt.Vector3,A=2,M=1/((n.scale.x+n.scale.y+n.scale.z)/3),O=M*M,T=Math.max(0,f.start),C=Math.min(x.count,f.start+f.count);for(let P=T,I=C-1;P<I;P+=A){if(S.fromBufferAttribute(x,P),w.fromBufferAttribute(x,P+1),mu.distanceSqToSegment(S,w,_,b)>O)continue;_.applyMatrix4(n.matrixWorld);let R=e.ray.origin.distanceTo(_);R<e.near||R>e.far||r.push({distance:R,point:b.clone().applyMatrix4(n.matrixWorld),object:n})}}function y(g,x,S,w,b,_,A){let v=new Kt.Vector3,M=new Kt.Vector3,O=new Kt.Vector3,T=new Kt.Vector3,C=new Kt.Vector3;if(v.fromBufferAttribute(w,b),M.fromBufferAttribute(w,_),O.fromBufferAttribute(w,A),S.intersectTriangle(v,M,O,!1,T)===null)return null;C.copy(T),C.applyMatrix4(g.matrixWorld);let I=x.ray.origin.distanceTo(C);return I<x.near||I>x.far?null:{faceIndex:1,distance:I,point:C.clone(),object:g}}};var yu=new $t.Vector3,Dr=new $t.Camera,Rp=class extends $t.LineSegments{constructor(e){let r=new $t.BufferGeometry,o=new $t.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],a=[],s={},l=new $t.Color(15711266),d=new $t.Color(15711266),c=new $t.Color(2857471);u("n1","n2",l),u("n2","n4",l),u("n4","n3",l),u("n3","n1",l),u("f1","f2",l),u("f2","f4",l),u("f4","f3",l),u("f3","f1",l),u("n1","f1",l),u("n2","f2",l),u("n3","f3",l),u("n4","f4",l),u("p","n1",d),u("p","n2",d),u("p","n3",d),u("p","n4",d),u("u1","u2",c),u("u2","u3",c),u("u3","u1",c);function u(f,h,m){p(f,m),p(h,m)}function p(f,h){i.push(0,0,0),a.push(h.r,h.g,h.b),s[f]===void 0&&(s[f]=[]),s[f].push(i.length/3-1)}r.setAttribute("position",new $t.Float32BufferAttribute(i,3)),r.setAttribute("color",new $t.Float32BufferAttribute(a,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=s,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Dr.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,a=1,s=o?.8:1e-4;eo("n1",r,e,Dr,-i,-a,s),eo("n2",r,e,Dr,i,-a,s),eo("n3",r,e,Dr,-i,a,s),eo("n4",r,e,Dr,i,a,s);let l=s;eo("f1",r,e,Dr,-i,-a,l),eo("f2",r,e,Dr,i,-a,l),eo("f3",r,e,Dr,-i,a,l),eo("f4",r,e,Dr,i,a,l);let d=l,c=.5;eo("u1",r,e,Dr,i*.7*c,a*1.1,d),eo("u2",r,e,Dr,-i*.7*c,a*1.1,d),eo("u3",r,e,Dr,0,a*(1.1+.9*c),d),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function eo(n,t,e,r,o,i,a){yu.set(o,i,a).unproject(r);let s=t[n];if(s!==void 0){let l=e.getAttribute("position");for(let d=0,c=s.length;d<c;d++)l.setXYZ(s[d],yu.x,yu.y,yu.z)}}var gu=class extends Ao(Rp){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,r){To(this.object,this.geometry,e,r,!0)}};var cl=require("three");var xu;(t=>t.is=e=>"objectHelper"in e)(xu||(xu={}));var Co=(n,t)=>class extends aa(n){constructor(){super(...arguments);this.objectHelper=new t(this);this.gizmos={}}get geometryHelper(){return t.geometryHelper}raycast(o,i){this.objectHelper.raycast(o,i)}showGizmos(){for(let o in this.gizmos){let i=this.gizmos[o];i instanceof cl.Box3Helper&&(i.visible=!0)}}updateEntityBoxSize(o,i){this.objectHelper.visible&&this.geometryHelper instanceof cl.BoxGeometry?(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 cl.Box3Helper&&(i.visible=!1)}}};var vu=790,es=new nt.Vector3,Vp=new nt.Vector3,Gp=new nt.Quaternion,zp=new nt.Vector3,ul=new nt.Vector3,kp=new nt.Vector3,$o=class extends Co(nt.Camera,gu){constructor(e="",r={...qn.defaultData,name:""}){super();this._cameraType="OrthographicCamera";this.targetOffset=un.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.wasMovedByUser=!1;this.wasMovedBySwitchCameraAction=!1;this.super_Entity(e,r),this.previousProjectionMatrix=new nt.Matrix4,this.matrixAutoUpdate=!0,this.width=window.innerWidth,this.height=window.innerHeight;let o=this.width,i=this.height;this.orthoCamera=new nt.OrthographicCamera(o*-.5,o*.5,i*.5,i*-.5,-5e4,1e4),this.perspCamera=new nt.PerspectiveCamera(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,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e,r,o){typeof e=="number"&&(e=new nt.Vector3(e,r,o)),super.lookAt(e),this.getWorldPosition(es),this.targetOffset=es.distanceTo(e)}getTarget(e=new nt.Vector3){return this.getWorldDirection(Vp),this.getWorldPosition(es),Vp.multiplyScalar(this.targetOffset),e.copy(es).add(Vp),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(es),es.distanceTo(e)}updateUp(){this.getWorldQuaternion(Gp),zp.set(0,0,1).applyQuaternion(Gp),ul.copy(nt.Object3D.DEFAULT_UP),this.isUpVectorFlipped&&ul.negate(),ul.applyQuaternion(Gp),kp.copy(nt.Object3D.DEFAULT_UP).projectOnPlane(zp),this.angleOffsetFromUp=kp.angleTo(ul),this.angleOffsetFromUp*=kp.cross(ul).dot(zp)>=0?1:-1}updateTransformState(e,r){let o=super.updateTransformState(e,r);return e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateUp(),o}getViewFrontToObject(e){let r=e.getWorldPosition(new nt.Vector3),i=e.getWorldDirection(new nt.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToTarget(e){let o=this.getWorldDirection(new nt.Vector3).multiplyScalar(this.targetOffset);return{position:e.clone().sub(o),target:e}}getViewToObject(e){let r=new nt.Vector3,o=e.getWorldPosition(r);return this.getViewToTarget(r)}setViewplaneSize(e,r,o=!1){if(this.aspect=e/r,o){let i=e>r?this.aspect:1,a=e>r?1:this.aspect;this.left=-vu*.5*i,this.right=vu*.5*i,this.top=vu*.5*(1/a),this.bottom=-vu*.5*(1/a)}else this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5;this.updateProjectionMatrix()}copyViewPlaneSize(e){this.aspect=e.aspect,this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.updateProjectionMatrix()}toOrthographic(){this.orthoCamera.left=this.left,this.orthoCamera.right=this.right,this.orthoCamera.top=this.top,this.orthoCamera.bottom=this.bottom,this.orthoCamera.view=this.view,this.orthoCamera.far=this.far,this.orthoCamera.updateProjectionMatrix(),this.projectionMatrix=this.orthoCamera.projectionMatrix,this.projectionMatrixInverse=this.orthoCamera.projectionMatrixInverse,this._cameraType="OrthographicCamera",this.objectHelper&&this.objectHelper.update()}toPerspective(){this.perspCamera.aspect=this.aspect,this.perspCamera.fov=this.fov,this.perspCamera.view=this.view,this.perspCamera.far=this.far,this.perspCamera.updateProjectionMatrix(),this.projectionMatrix=this.perspCamera.projectionMatrix,this.projectionMatrixInverse=this.perspCamera.projectionMatrixInverse,this._cameraType="PerspectiveCamera",this.objectHelper&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,a,s){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,a,s):this.orthoCamera.setViewOffset(e,r,o,i,a,s)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}copyHistory(){this.previousProjectionMatrix&&this.previousProjectionMatrix.copy(this.projectionMatrix)}updateProjectionMatrix(){this._cameraType==="PerspectiveCamera"?this.toPerspective():this._cameraType==="OrthographicCamera"&&this.toOrthographic()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.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 r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Vi(r,e)}updateCameraSubtype(e,r){let o=e==="perspective"?"PerspectiveCamera":"OrthographicCamera";r.zoom!==void 0&&this.setZoom(o,r.zoom),r.near!==void 0&&this.setNear(o,r.near),r.fov!==void 0&&o==="PerspectiveCamera"&&(this.fov=r.fov)}updateState(e,r){this.updateCameraState(e,r)}updateCameraState(e,r){this.updateState_Entity(e,r),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,r,o){super.updateByPatchedOp(e,r,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}}};var $P=require("three");var Lr=require("three");var ts=new Lr.Matrix4,WP=new Lr.Matrix4,bu=new Lr.Matrix4,sx=new Lr.Vector3,lx=new Lr.Vector3;var Br=class extends mr{constructor(e,r,o){super(e,r);this.data=r;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.geometry=new Lr.BufferGeometry;this.onAfterRender=(e,r,o,i,a,s)=>{super.onAfterRender(e,r,o,i,a,s),this.recomputeBoolean()};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,r,o){super.updateByPatchedOp(e,r,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,r=!0){if(this.booleanMeshSetAddress!==-1&&!e)return;for(let i=0;i<this.children.length;i++){let a=this.children[i];a instanceof Br&&a.dataPatched.visible===!0&&a.recomputeBoolean(e===!0,r)}this.meshSetAddresses=[];for(let i=0;i<this.children.length;i++){let a=this.children[i];if(a instanceof Ut&&a.dataPatched.visible===!0&&a.geometry.attributes.position?.count>0&&a.geometry.drawRange.count>0){if(ts.multiplyMatrices(a.hiddenMatrix,a.matrix),a.booleanMeshSetAddress===-1){if((a.geometry.index??a.geometry.getAttribute("position")).count/3<15e5&&(a.booleanMeshSetAddress=Mr.getMeshSet(a.geometry,e===!0,r)),a.booleanMeshSetAddress===-1)return;Mr.transformMeshSet(a.booleanMeshSetAddress,ts),a.booleanMatrixInvOld.copy(ts).invert(),a.booleanWasTransformed=!1}else a instanceof Br&&a.needsTransformForDownstream===!0?(Mr.transformMeshSet(a.booleanMeshSetAddress,ts),a.needsTransformForDownstream=!1):a.booleanWasTransformed===!0&&(Mr.transformMeshSet(a.booleanMeshSetAddress,WP.multiplyMatrices(ts,a.booleanMatrixInvOld)),a.booleanMatrixInvOld.copy(ts).invert(),a.booleanWasTransformed=!1);Mr.hasOpenEdges(a.booleanMeshSetAddress)===!1||i===this.children.length-1&&this.booleanOp===2?(this.meshSetAddresses.push(a.booleanMeshSetAddress),a.geometry.userData.wasFilteredFromBoolean=!1):a.geometry.userData.wasFilteredFromBoolean=!0}}if(this.meshSetAddresses.length===0){this.geometry.setAttribute("position",new Lr.Float32BufferAttribute([],0)),this.geometry.setDrawRange(0,0);return}if(e===!0)return Mr.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let o=this.geometry;o.dispose(),this.geometry=new Lr.BufferGeometry,this.geometry.userData=o.userData,this.geometry.boundingSphere=o.boundingSphere;try{this.booleanMeshSetAddress=Mr.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,$a(this),Ya(this)}dispose(){super.dispose(),this.geometry.dispose()}get recursiveBBox(){let e=super.recursiveBBox;return this.geometry.boundingSphere?.radius===-1&&(e.getCenter(this.geometry.boundingSphere.center),bu.copy(this.matrixWorld).invert(),this.geometry.boundingSphere.center.applyMatrix4(bu),sx.copy(e.max).applyMatrix4(bu),lx.copy(e.min).applyMatrix4(bu),this.geometry.boundingSphere.radius=sx.distanceTo(lx)/2),e}};var ux=require("three");var cx;(t=>{function n(e){return Oe.is(e)&&e instanceof ux.Light}t.is=n})(cx||(cx={}));var rs=(n,t)=>class extends Co(n,t){updateState_Light(r,o){this.updateState_Entity(r,o),r.color!==void 0&&(this.color=o.shared.color(r.color)),r.intensity!==void 0&&(this.intensity=r.intensity),r.depth!==void 0&&(this.shadow.camera.far=r.depth,this.shadow.needsUpdate=!0),r.shadows!==void 0&&(this.castShadow=r.shadows)}};var Mn=n=>n instanceof Ut,os=n=>n!==null&&n instanceof Br;var dl=n=>xu.is(n);var px=require("three");var dx=require("three");var Po=class extends Ao(dx.AxesHelper){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.object.isBone&&(this.visible=!1)}raycast(e,r){To(this.object,Po.geometryHelper,e,r)}update(){}};var In=class extends Co(px.Group,Po){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update()}updateState(t,e){this.updateState_Entity(t,e),"buffer"in t&&Object.keys(t).length===1&&e.scene.reloadSplats()}};var cs=require("three");var ns=require("three"),YP=n=>`
|
|
2220
2234
|
|
|
2221
2235
|
// PCSS implementation based on:
|
|
2222
2236
|
// https://www.gamedev.net/articles/programming/graphics/contact-hardening-soft-shadows-made-fast-r4906/
|
|
@@ -2590,4 +2604,177 @@ float vogelShadow(int index, sampler2D shadowMap, vec2 uv, float texelSize, floa
|
|
|
2590
2604
|
}
|
|
2591
2605
|
|
|
2592
2606
|
#endif
|
|
2593
|
-
`,IO=Ma.ShaderChunk.lights_fragment_begin,MO=Ma.ShaderChunk.shadowmask_pars_fragment,A0=null,EO=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},C0=(n="medium")=>{if(A0===n)return!1;A0=n;let r=EO(n);Ma.ShaderChunk.shadowmap_pars_fragment=NO(r);let e=IO.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),Ma.ShaderChunk.lights_fragment_begin=e;let t=MO.slice();return t=t.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),Ma.ShaderChunk.shadowmask_pars_fragment=t,!0};var Vs=require("three");var N0=require("three");var Ea=class extends ao(N0.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,Ea.geometryHelper,e,t)}};var I0=require("three");var La=class extends ao(I0.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,La.geometryHelper,e,t)}};var $c=require("three");var qc=class extends ao($c.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){so(this.object,qc.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=qc._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 a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},Gs=qc;Gs._vector=new $c.Vector3;function LO(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 Da=class extends Na(Vs.DirectionalLight,Ea){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 a=new Vs.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Vs.CameraHelper&&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&&LO(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)),r.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t&&this.update()}};var D0=require("three");var Sr=require("three");var M0=new Sr.Vector3,E0=new Sr.Vector3,L0=new Sr.Quaternion,Ba=class extends Na(Sr.SpotLight,Gs){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=Sr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Sr.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let r in this.gizmos){let e=this.gizmos[r];e instanceof Sr.CameraHelper&&e.update()}}updateMatrixWorld(r){super.updateMatrixWorld(r),E0.setFromMatrixPosition(this.matrixWorld),L0.setFromRotationMatrix(this.matrixWorld),M0.copy(this.up).applyQuaternion(L0).negate().multiplyScalar(this.distance),this.target.position.copy(E0).add(M0),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.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r.shadowResolution!==void 0&&(this.shadow.mapSize.set(r.shadowResolution,r.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var dn=class extends Li(D0.Scene){constructor(e,t){super();this.data=t;this.bgColor=new xt(1,1,1,1);this.fog=null;this.backupFog=new Ra.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new Ra.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,t),this.personalCamera=new Co(Fo,{...vn.defaultData,...t.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new Ra.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,t){e.color!==void 0&&(this.ambientLight.color=Bt(e.color,t)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t of e.material)t.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&C0(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,t){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Bt(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,t){e.aoColor!==void 0&&(this.aoColor=Bt(e.aoColor,t))}updateByOp(e,t,o,i){super.updateByOp(e,t,o,i);let a=t;Gt(e.path,["fog"])?this.updateFog(a.fog,o.shared):Gt(e.path,["ao"])?this.updateAo(a.ao,o.shared):Gt(e.path,["ambient"])?this.updateAmbientLight(a.ambient,o.shared):Gt(e.path,["shadow"])&&this.updateShadow(a.shadow)}updateState(e,t){this.updateState_Entity(e,t),e.backgroundColor!==void 0&&this.setBackgroundColor(Bt(e.backgroundColor,t.shared)),e.fog!==void 0&&this.updateFog(e.fog,t.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,t.shared),e.ao!==void 0&&this.updateAo(e.ao,t.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}raycast(e,t){super.raycast(e,t)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,t=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof Da&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof Ba&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+t]=o.data.penumbraSize,t+=1)})}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Oe.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||Rs(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),js(a,e,t,!0)),o(a))}};return o(this),t}};var or=require("three");var Yc=class extends Na(or.PointLight,La){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 a=new or.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new or.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),c=new or.Box3(a,s),u=new or.Box3Helper(c,new or.Color(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 or.Box3Helper){let t=this.shadow.camera,o=new or.Vector3(-t.far+this.position.x,-t.far+this.position.y,-t.far+this.position.z),i=new or.Vector3(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))}};var Xc=class extends pt{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(r,e){let t=this.geometry.getAttribute("position");t!==void 0?ys(t,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:t.count,r,e):super.updateEntityBoxSize(r,e)}};var Ga=class extends pt{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};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let t;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),t=a.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=fc;break;case"Ellipse":i=Fi;break;case"Polygon":i=pc;break;case"Star":i=mc;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,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let o=this.geometry.getAttribute("position");o!==void 0?ys(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,t):super.updateEntityBoxSize(e,t)}};var Va=require("three");var No=class extends lo(Va.Group,co){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=Pi.getComponentData({scene:t.scene.data,shared:t.shared.data},e.component);if(o){let i,a;for(let s of Yr.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=kr.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...Mt.defaultData,...e,...Tr(Mt.defaultData,Yr.rootOverrideProps)}}updateByOp(e,t,o,i){let a;if(this.isInstanceRoot&&!i){if(t=this.transformAssignData(t,o),e.type===0&&e.path.length===0&&this.component)for(let s of Yr.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&Yr.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:t[s]}})}}super.updateByOp(a??e,t,o,i)}updateState(e,t){this.updateState_Entity(e,t)}expandInstanceChildren(e){let t=this.data;if(this.component===void 0){let o=e.scene.find(t.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Oe.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Kc(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};R0(e,[this.uuid],t.overrides,this,o,o,0,i,a);for(let s of this.children)if(Oe.is(s)){let c=s.data;c.type==="Empty"&&c.animations&&s.traverseEntity(u=>{if(u instanceof pt&&u.isSkinnedMesh){let l=u.dataPatched;if(l.bones&&l.boneInverses){let d=l.bones.map(m=>e.scene.find(a[m])),p=l.boneInverses.map(m=>new Va.Matrix4().fromArray(m)),f=new Va.Skeleton(d,p);u.bind(f,u.bindMatrix)}}else u.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Kc(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)Oe.is(e)&&Kc(e)}}function B0(n,r,e,t){return n.component===r&&cd(n.identity,t)?n.overrideData===e?2:1:0}function R0(n,r,e,t,o,i,a,s,c){if(a>50)return!1;if(t.component!==o){if(t.component){let l=t.component.instances.indexOf(t);l>=0&&t.component.instances.splice(l,1)}o.instances.push(t),t.component=o}o instanceof No&&o.isInstanceRoot&&o.expandInstanceChildren(n);let u=0;for(let l of o.children)if(Oe.is(l)){let d=[...r,...typeof l.identity=="string"?[l.identity]:l.identity],p=wi.resolve(e,d,1);if(p!=null&&!(p instanceof We)){if(!1)debugger;Object.setPrototypeOf(p,We.prototype),console.error("wrong prototype")}let f=null,m;if(!s){let h=t.children[u];if(f=Oe.is(h)?h:null,f!==null){let y=B0(f,l,p,d);m=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(d)??null,f!==null)){let y=B0(f,l,p,d);if(m=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),t.children.splice(u,0,f),f.parent===t?(g<=u&&console.error("not possible"),void 0):(f.parent=t,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let h=p?kr.apply(l.data,p):l.data;_r.is(h.type)&&(h={...h,type:"Empty"}),f=Ar.createEntity(d,h,n),f.overrideData=p,t.add(f),t.children.splice(t.children.length-1,1),t.children.splice(u,0,f),f.updateState(f.data,n),m&&f.changeSelectedState(m,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let h=f.identity[f.identity.length-1];c[h]=f.uuid}u+=1,R0(n,r,e,f,l,i,a+1,s,c)}if(!s){let l=u;for(;;){let d=t.children[u];if(Oe.is(d))n.pendingDeletes.add(d);else break;u+=1}t.children.splice(l,u-l)}return!0}var G0=require("three");var Zc=class extends lo(G0.Bone,co){constructor(r,e){super(),this.super_Entity(r,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(r,e){this.updateState_Entity(r,e)}};function DO(n,r,e){let t;return r.geometry.type==="TextGeometry"?new Ta(n,r,e):(r.geometry.type==="SubdivGeometry"?t=new Gn(n,r,e):r.geometry.type==="PathGeometry"?t=new Ga(n,r,e):r.geometry.type==="VectorGeometry"?t=new Xc(n,r,e):r.geometry.type==="BooleanGeometry"?t=new br(n,r,e):t=new pt(n,r,e),t)}function Qc(n,r,e){return r.type==="Mesh"?DO(n,r,e):r.type==="Empty"?new jn(n,r):r.type==="Bone"?new Zc(n,r):r.type==="Page"?new dn(n,r):r.type==="PointLight"?new Yc(n,r,e):r.type==="SpotLight"?new Ba(n,r,e):r.type==="DirectionalLight"?new Da(n,r,e):r.type==="Component"||r.type==="Instance"?new No(n,r,e):_r.is(r.type)?new Co(n,r):(console.error(r),new jn(n,r))}Ar.createEntity=Qc;function BO(n,r,e){let t=Qc(n.identity,r,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,c=n.instances,u=n.overrideData,l=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=a,n.component=s,n.instances=c,n.uuid=l,n.overrideData=u,n.updateState(n.data,e),d&&n.changeSelectedState(d,e),n.resetBBoxNeedsUpdate()}Ar.changeEntityProptotype=BO;Ar.Cloner=Oa;function V0(n,r,e,t){n.updateByOp(r,e,t,!1)}var za=require("three");function z0(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,Sa(n),ba(n)),t.length===0&&o.length===0&&n.layers.set(0),n instanceof rr&&n.needsAO&&n.layers.enable(5),e}function j0(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),n.needsAO&&n.layers.enable(5),e}function F0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)z0(e,e.material[t])&&(r=!0);else z0(e,e.material)&&(r=!0)}),r}function k0(n){let r=!1;return n.traverseEntity(e=>{if(e instanceof rr)if(Array.isArray(e.material))for(let t=0;t<e.material.length;t++)j0(e,e.material[t])&&(r=!0);else j0(e,e.material)&&(r=!0)}),r}var VO=new za.Raycaster,zO=new za.Matrix4,jO=new za.Ray;function js(n,r,e,t=!1){let o=n.cloner;if(o)for(let i of o.children){let a=zO.copy(i.matrixWorld).invert(),s=jO.copy(r.ray).applyMatrix4(a),c=n.matrixWorld;s.applyMatrix4(c);let u=VO;u.set(s.origin,s.direction),u.near=r.near,u.far=r.far;let l=u.intersectObject(n,!1);l.length>0&&e.push({...l[0],object:t?i:n})}}var Jc=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],a=t;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let c=r.find(i[s]);c?c.applyPathSnapping(r):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(r,e){let t=r;for(;this._constraints.has(t);)if(t=this._constraints.get(t),t===e)return!0;return!1}};var FO=new wr.MeshBasicMaterial;FO.wireframe=!0;var U0=new wr.Vector3,ed=class extends wr.Scene{constructor(e,t){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Jc;this.errorPage=new dn("fdasfa",{...xo.defaultData,name:""});this.invisibleObjects=new jn("jflkdsafjasdifjaslk",{...Hl.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,t),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=k0(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=F0(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}markPenumbraSizeDirty(){for(let e of this.children)e instanceof dn&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let t=this.find(e);if(t===void 0)return;let o=[],i=t;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}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)=>mp(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(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===Fo)return this.activePage.personalCamera}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}updateByLibOp(e,t){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,t)}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(),cn(i)&&Ia(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}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),this.markPenumbraSizeDirty(),o.parent.remove(o),Ia(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),cn(o)&&(o.freeBooleanPointer(),i instanceof br&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof Ga&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}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 a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),cn(o)&&(o.invalidateUpstreamBooleanData(),Ia(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof br&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let t of this.children)t instanceof dn&&(t.visible=t.uuid===e,t.visible&&(this.activePage=t,this.activePage.onActive(this)))}updateEntityByOp(e,t,o,i){if(t.type===0){if(("overrides"in t.props||"component"in t.props)&&this.markNeedsRecomputeInstances(),"visible"in t.props&&this.markPenumbraSizeDirty(),t.path.includes("overrides")&&"states"in t.props){let{rest:s}=t.props;t={...t,props:s},this.markNeedsRecomputeInstances()}t.path[0]==="pathSnapping"&&t.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,t.props.pathId)}let a=this.find(e);if(a)try{V0(a,t,o,{scene:this,shared:i}),a instanceof pt&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,t){let o=Object.entries(t.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:t}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,t),this.createChildrenObjects(e.objects,this,t),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(t,!0),this.traverseEntity(i=>{Ia(i)&&i.recomputeBoolean(),i instanceof Co&&i.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){Oe.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(t=>{Oe.is(t)&&t.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,t,o,i,a,s,c){if(e){let u=i.find(e);u&&u!==i&&a.forInstancesRec(l=>{l.data=Bo(l.data,d=>{let p=d.events.data(c.id),f=l.goUp(s);if(f){let m=[...Hs(f.identity),e].join("-"),h=this.entityIdentityToEntity[m];if(h){let y=h.uuid,g=lt.zoom(p,t);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,t,o,i,a,s){e.forEach(c=>{c.data.type==="Transition"?this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,a,s):c.data.type==="Animation"&&this.relativeizeInner(c.data.object,[...t,c.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof No&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((t,o)=>{t.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(t.forInstancesRec(s=>{s.data=Bo(s.data,c=>{s.isInstanceRoot||(c.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of Yl.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,t,o,i)}else 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)),this.rewriteActions(i.data.inActions,["inActions"],e,t,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,t,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,t,o,i)})}),!0})}expandInstances(e,t,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof No&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),t||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Kc(a)}recomputeInstances(e,t){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof No&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,t))}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)Oe.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,t){this.init(e,t)}raycast(e){return this.raycast1(e,!1)}raycast1(e,t){let o=[],i=a=>{for(let s of a.children){let c=s.cloner;if(Oe.is(s)&&!s.raycastLock&&(s.visible||c?.object.data.visible))if(t===!0&&s.isInstanceRoot){let u=[];if(e.intersectObject(s,!0,u),u.length){let l=u[0];l.object=s,l.point.applyMatrix4(l.object.matrixWorld);let d=s.matrixWorld.clone().invert();l.point.applyMatrix4(d),o.push(l)}}else(cn(s)||Rs(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),js(s,e,o)),i(s)}};return i(this),o}raycastWithClones(e){let t=[],o=i=>{for(let a of i.children){let s=a.cloner;Oe.is(a)&&(a.visible||s?.object.data.visible)&&((cn(a)||Rs(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,t),js(a,e,t,!0)),o(a))}};return o(this),t}forEachEntity(e){for(let t of this.children)Oe.is(t)&&e(t)}traverseConcreteEntity(e){for(let t of this.children)Oe.is(t)&&t.isConcreteEntity&&t.traverseEntity(e)}traverseEntity(e){for(let t of this.children)Oe.is(t)&&t.traverseEntity(e)}updateFont(e,t){this.traverseEntity(o=>{if(o instanceof pt&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,t).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();Ia(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let t of this.children)Ni.is(t)&&t.traverseObject(e)}traverseVisibleEntity(e){for(let t of this.children)Oe.is(t)&&t.visible&&t.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,t,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.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,a,s){let c={scene:this,shared:s},u=Qc(e,t,c);return u&&(this.entityByUuid[e]=u,i.add(u),i.children.splice(a,0,i.children.pop()),o.length>0&&(u.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,u,s)),u.updateState(t,c),u instanceof pt&&u.updateGeometryGroupsIfNeeded(),u.updateVisible(),u.cloner&&this.toExpandCloner.add(u),t.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,t.pathSnapping.pathId)),t.type==="Empty"&&t.animations&&u.traverseEntity(l=>{if(l instanceof pt&&l.isSkinnedMesh){let d=l.dataPatched;if(d.bones&&d.boneInverses){let p=d.bones.map(h=>this.find(h)),f=d.boneInverses.map(h=>new wr.Matrix4().fromArray(h)),m=new wr.Skeleton(p,f);l.bind(m,l.bindMatrix)}}else l.matrixAutoUpdate=!0}),u}getCenter(e){let t=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:c}=e[i],u=this.find(s),l=c?u.recursiveBBox:u.singleBBox;t.push(...l.vertices)}let o=new wr.Box3;return o.setFromPoints(t),o.getCenter(U0),U0}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 Et)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof tr&&e(t.material[o]);else t.material instanceof tr&&e(t.material)})}updateViewPlaneSize(e,t,o=!1){this.traverseConcreteEntity(i=>{i instanceof Co&&i.setViewplaneSize(e,t,o)})}};var H0=require("three/examples/jsm/loaders/DRACOLoader.js");var un;function kO(){return un||(un=new H0.DRACOLoader,un.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),un.decoderPending}async function UO(n){if(un){let r={attributeIDs:un.defaultAttributeIDs,attributeTypes:un.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await un.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 W0(n,r){let[e,t]=hd(El.deserialize(new Uint8Array(n)));Kl(e);let o=[];e.scene.objects.traverse((i,a)=>{a.type==="Mesh"&&a.geometry.type==="NonParametricGeometry"&&a.geometry.data.draco!==void 0&&o.push(a)}),o.length&&await kO();for(let i of o){let a=await UO(Je(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:c,array:u,itemSize:l})=>{s[c]={array:u,itemSize:l,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var HO=require("three"),WO=require("three/examples/jsm/utils/BufferGeometryUtils.js");function q0(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}var Fs=require("three");function $0(n){let r=new Set;return n.traverse(e=>{if(e instanceof rr)if(rt(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(qO(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Fs.Color,specularColor:new Fs.Color});let o=0;e.onBeforeCompile=(i,a)=>{t&&t(i,a),i.uniforms=Object.assign({},Fs.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let c=s.color;c&&(c.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,c.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,c.aspectRatio.value=Gg(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else $O(e)||(e.onBeforeCompile=(o,i)=>{t&&t(o,i),e.transparent=!1})}),n}function qO(n){return n.getLayersOfType("transmission").length>0}function $O(n){let r=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(r+=(1-r)*o.value)}}return r<1}function Y0(n){return n.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),n}function X0(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 a=t;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}r.push(t.name)}),n}var K0=require("three/examples/jsm/utils/BufferGeometryUtils.js");function Z0(n){let r=[];return n.traverse(e=>{e instanceof Oa&&r.push(e)}),r.forEach(e=>{let t=e.object,a=[...e.children.map(s=>{s.updateMatrix();let c;if(s.geometry!==void 0)try{c=s.geometry.clone().applyMatrix4(s.matrix)}catch(u){console.error(u)}return c!==void 0&&s.matrix.determinant()<0&&q0(c),c}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&t instanceof Et&&a.unshift(t.geometry),a.length){let s=(0,K0.mergeBufferGeometries)(a);t instanceof Et&&(t.geometry=s)}e.removeFromParent(),t.setFromClonerState(null,{scene:n,shared:Zg})}),n}function Q0(n){return n.traverse(r=>{r.matrixAutoUpdate=!0}),n}function J0(n){Object.values(n.shared.materials).forEach(r=>{cp(r)}),n.scene.objects.traverse((r,e)=>{"material"in e?cp(e.material):"materials"in e&&e.materials.forEach(t=>{cp(t)})})}function cp(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 nx=ja(tx(),1);function rx(n){return n.traverseMaterial(r=>{r.needsJitter=!1}),n}var ox="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",td=class extends rd.Loader{load(r,e,t,o=console.error){let i=new rd.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(ox+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(ox),i.load(r,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},t,o)}async parse(r){let e=await W0(r,J0);e.version&&(0,nx.default)(e.version,"0.9.496")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([r0(e)&&dg(),f0(e)&&Xg()].filter(Boolean));let t=new Rn(e.shared);Object.values(t.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new ed(e.scene,t),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=Z0(o),o=$0(o),o=Y0(o),o=X0(o),o=Q0(o),o=rx(o),o}};
|
|
2607
|
+
`,XP=ns.ShaderChunk.lights_fragment_begin,KP=ns.ShaderChunk.shadowmask_pars_fragment,fx=null,QP=n=>{switch(n){case"low":return 8;case"medium":return 16;case"high":return 32;default:return 16}},hx=(n="medium")=>{if(fx===n)return!1;fx=n;let t=QP(n);ns.ShaderChunk.shadowmap_pars_fragment=YP(t);let e=XP.slice();e=e.replace("getShadow( spotShadowMap[ i ]",`getShadow( UNROLLED_LOOP_INDEX + ${3}, spotShadowMap[ i ]`),e=e.replace("getShadow( directionalShadowMap[ i ]","getShadow( UNROLLED_LOOP_INDEX, directionalShadowMap[ i ]"),ns.ShaderChunk.lights_fragment_begin=e;let r=KP.slice();return r=r.replaceAll("getShadow(","getShadow( UNROLLED_LOOP_INDEX, "),ns.ShaderChunk.shadowmask_pars_fragment=r,!0};var fl=require("three");var mx=require("three");var is=class extends Ao(mx.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){To(this.object,is.geometryHelper,e,r)}};var yx=require("three");var as=class extends Ao(yx.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){To(this.object,as.geometryHelper,e,r)}};var wu=require("three");var Su=class extends Ao(wu.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){To(this.object,Su.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Su._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let a=0,s=this.cone.material.length;a<s;a++)this.cone.material[a].color.set(i);else this.cone.material.color.set(i)}}},pl=Su;pl._vector=new wu.Vector3;function ZP(n,t){n.shadow.camera.right=t/2,n.shadow.camera.left=-t/2,n.shadow.camera.top=t/2,n.shadow.camera.bottom=-t/2,n.shadow.needsUpdate=!0}var ss=class extends rs(fl.DirectionalLight,is){constructor(t,e,r){super(),this.super_Entity(t,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 a=new fl.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof fl.CameraHelper&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e);let r=t.depth!==void 0&&t.depth!==this.shadow.camera.far||t.size!==void 0&&t.size/2!==this.shadow.camera.right;t.size!==void 0&&ZP(this,t.size),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),r&&this.update()}};var bx=require("three");var Rr=require("three");var gx=new Rr.Vector3,xx=new Rr.Vector3,vx=new Rr.Quaternion,ls=class extends rs(Rr.SpotLight,pl){constructor(t,e,r){super(),this.super_Entity(t,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=Rr.MathUtils.RAD2DEG*2*this.angle,i.aspect=1,i.near=100,i.far=2500;let a=new Rr.CameraHelper(this.shadow.camera);a.visible=!1,this.gizmos.shadowmap=a,this.update()}update(){this.shadow.camera.updateProjectionMatrix();for(let t in this.gizmos){let e=this.gizmos[t];e instanceof Rr.CameraHelper&&e.update()}}updateMatrixWorld(t){super.updateMatrixWorld(t),xx.setFromMatrixPosition(this.matrixWorld),vx.setFromRotationMatrix(this.matrixWorld),gx.copy(this.up).applyQuaternion(vx).negate().multiplyScalar(this.distance),this.target.position.copy(xx).add(gx),this.target.updateMatrixWorld(),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.angle!==void 0&&(this.angle=t.angle),t.penumbra!==void 0&&(this.penumbra=t.penumbra),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.penumbraSize!==void 0&&e.scene.markPenumbraSizeDirty(),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Nn=class extends aa(bx.Scene){constructor(e,r){super();this.data=r;this.bgColor=new Ot(1,1,1,1);this.fog=null;this.backupFog=new cs.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.isActive=!1;this.aoColor=new cs.Color;this.penumbraSizeArrayCache=null;this.super_Entity(e,r),this.personalCamera=new $o(ln,{...qn.defaultData,...r.camera,name:"Personal Camera"}),this.personalCamera.objectHelper.visible=!1,this.add(this.personalCamera),this.activeCamera=this.personalCamera,this.ambientLight=new cs.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.ambientLight.layers.enable(3),this.ambientLight.removeFromParent(),this.add(this.ambientLight)}get scene(){return this.parent}get postprocessing(){return this.data.postprocessing}updateVisible(){}setBackgroundColor(e){this.bgColor=e,this.fogUseBGColor===!0&&(this.backupFog.color=e)}updateAmbientLight(e,r){e.color!==void 0&&(this.ambientLight.color=Wt(e.color,r)),e.intensity!==void 0&&(this.ambientLight.intensity=e.intensity),e.enabled!==void 0&&(e.enabled?this.add(this.ambientLight):this.remove(this.ambientLight))}onDeactive(){this.isActive=!1}onActive(e){this.isActive=!0,e.fog=this.fog,this.updateShadow(this.data.shadow)}forceMaterialsUpdate(){this.traverseEntity(e=>{if(e instanceof mr)if(Array.isArray(e.material))for(let r of e.material)r.needsUpdate=!0;else e.material.needsUpdate=!0,e.material.dispose()})}updateShadow(e){e.softShadowQuality!==void 0&&this.isActive&&hx(e.softShadowQuality)&&this.forceMaterialsUpdate()}updateFog(e,r){if(e.enabled?this.fog=this.backupFog:this.fog=null,this.isActive){let o=this.scene;o.fog=this.fog}this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Wt(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}updateAo(e,r){e.aoColor!==void 0&&(this.aoColor=Wt(e.aoColor,r))}updateByOp(e,r,o,i){super.updateByOp(e,r,o,i);let a=r;Yt(e.path,["fog"])?this.updateFog(a.fog,o.shared):Yt(e.path,["ao"])?this.updateAo(a.ao,o.shared):Yt(e.path,["ambient"])?this.updateAmbientLight(a.ambient,o.shared):Yt(e.path,["shadow"])&&this.updateShadow(a.shadow)}updateState(e,r){this.updateState_Entity(e,r),e.backgroundColor!==void 0&&this.setBackgroundColor(Wt(e.backgroundColor,r.shared)),e.fog!==void 0&&this.updateFog(e.fog,r.shared),e.ambient!==void 0&&this.updateAmbientLight(e.ambient,r.shared),e.ao!==void 0&&this.updateAo(e.ao,r.shared),e.shadow!==void 0&&this.updateShadow(e.shadow)}raycast(e,r){super.raycast(e,r)}switchActiveCamera(e){e&&e.isDescendantOf(this)&&(this.activeCamera!==this.personalCamera&&(this.activeCamera.objectHelper.visible=!0),this.activeCamera=e,e.objectHelper.visible=!1)}get playCamera(){return this.scene?.find(this.data.publish.playCamera)??this.personalCamera}switchToPlayCamera(){this.switchActiveCamera(this.playCamera)}get penumbraSizeArray(){return this.penumbraSizeArrayCache===null&&this.updatePenumbraSizeArray(),this.penumbraSizeArrayCache}updatePenumbraSizeArray(){this.penumbraSizeArrayCache=new Array(5).fill(.5);let e=0,r=0;this.traverseEntity(o=>{if(!o.visible)return!0;o instanceof ss&&o.visible&&e<3&&(this.penumbraSizeArrayCache[e]=o.data.penumbraSize,e+=1),o instanceof ls&&o.visible&&e<5-3&&(this.penumbraSizeArrayCache[3+r]=o.data.penumbraSize,r+=1)})}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Oe.is(a)&&(a.visible||s?.object.data.visible)&&((Mn(a)||dl(a)&&this.scene.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),ml(a,e,r,!0)),o(a))}};return o(this),r}};var yr=require("three");var _u=class extends rs(yr.PointLight,as){constructor(t,e,r){super(),this.super_Entity(t,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 a=new yr.Vector3(-i.far+this.position.x,-i.far+this.position.y,-i.far+this.position.z),s=new yr.Vector3(i.far+this.position.x,i.far+this.position.y,i.far+this.position.z),l=new yr.Box3(a,s),d=new yr.Box3Helper(l,new yr.Color(16755200));d.visible=!1,this.gizmos.shadowmap=d,this.update()}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this.gizmos))for(let t in this.gizmos){let e=this.gizmos[t];if(e instanceof yr.Box3Helper){let r=this.shadow.camera,o=new yr.Vector3(-r.far+this.position.x,-r.far+this.position.y,-r.far+this.position.z),i=new yr.Vector3(r.far+this.position.x,r.far+this.position.y,r.far+this.position.z);e.box.set(o,i),e.updateMatrixWorld(!0)}}}updateMatrixWorld(t){super.updateMatrixWorld(t),this.objectHelper&&this.objectHelper.update()}updateState(t,e){this.updateState_Light(t,e),t.distance!==void 0&&(this.distance=t.distance),t.decay!==void 0&&(this.decay=t.decay),t.shadowRadius!==void 0&&(this.shadow.radius=t.shadowRadius),t.shadowResolution!==void 0&&(this.shadow.mapSize.set(t.shadowResolution,t.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null))}};var Au=class extends St{get forceComputeSize(){return!0}get shape(){return this.geometry.userData.shape}updateEntityBoxSize(t,e){let r=this.geometry.getAttribute("position");r!==void 0?qs(r,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:r.count,t,e):super.updateEntityBoxSize(t,e)}};var us=class extends St{constructor(e,r,o){super(e,r,o);this._shapeId=null;this._context=o}updateState(e,r){super.updateState(e,r),this.updateShape()}updateShape(){let e={...this.data.geometry.extrusion.shape};for(let i in e)typeof e[i]=="string"&&(e[i]=this._context.shared.getVariable(e[i],[this.uuid,"geometry","extrusion","shape",i]));let r;if(e.type==="Custom"){let i=e.shapeId;if(i!==this._shapeId&&this.detachShape(),i){this._shapeId=i;let a=this._context.scene.find(i);a?.data&&(a.attachedPaths.add(this),r=a.geometry.userData?.shape),r||this._context.scene.addPendingCommand(()=>this.updateShape())}}else{let i;switch(e.type){case"Rectangle":i=jc;break;case"Ellipse":i=ha;break;case"Polygon":i=Fc;break;case"Star":i=Uc;break;default:throw new Error(`Unknown shape type: ${e.type}`)}r=i.create({parameters:e}).userData.shape}let o=this.geometry;r&&o.inputs&&(o.inputs.shapeData=r,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,r){return super.updateTransformState(e,r)}updateGeometryInteractions(e,r){super.updateGeometryInteractions(e,r),this.updateShape()}updateEntityBoxSize(e,r){let o=this.geometry.getAttribute("position");o!==void 0?qs(o,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:o.count,e,r):super.updateEntityBoxSize(e,r)}};var ds=require("three");var Yo=class extends Co(ds.Group,Po){constructor(e,r,o){super();r.type==="Instance"&&typeof e=="string"&&(r=this.transformAssignData(r,o)),this.super_Entity(e,r),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,r){let o=Zi.getComponentData({scene:r.scene.data,shared:r.shared.data},e.component);if(o){let i,a;for(let s of po.rootOverrideProps)e[s]===void 0?(i===void 0&&(i={...e}),i[s]=o.data[s]):(a===void 0&&(a={}),a[s]=e[s],i===void 0&&(i={...e}),i[s]=io.apply(o.data[s],e[s]));return this.overrideData=a,i}else return{...jt.defaultData,...e,...zr(jt.defaultData,po.rootOverrideProps)}}updateByOp(e,r,o,i){let a;if(this.isInstanceRoot&&!i){if(r=this.transformAssignData(r,o),e.type===0&&e.path.length===0&&this.component)for(let s of po.rootOverrideProps)s in e.props&&e.props[s]===void 0&&(a===void 0&&(a={...e,props:{...e.props}}),a.props[s]=this.component.data[s]);else if(e.type===0&&e.path.length>0&&po.rootOverrideProps.includes(e.path[0])){let s=e.path[0];a===void 0&&(a={...e,path:[],props:{[s]:r[s]}})}}super.updateByOp(a??e,r,o,i)}updateState(e,r){this.updateState_Entity(e,r)}expandInstanceChildren(e){let r=this.data;if(this.component===void 0){let o=e.scene.find(r.component)??null,i=!1;if(o!==this.oldComponent){if(this.oldComponent){let a=0;for(let s of this.children)if(Oe.is(s))e.scene.disposeAndUnregisterEntityRecursivelyIfNotReregistered(s),Tu(s),a+=1;else break;this.children.splice(0,a)}i=!0}if(o){let a={};wx(e,[this.uuid],r.overrides,this,o,o,0,i,a);for(let s of this.children)if(Oe.is(s)){let l=s.data;l.type==="Empty"&&l.animations&&s.traverseEntity(d=>{if(d instanceof St&&d.isSkinnedMesh){let c=d.dataPatched;if(c.bones&&c.boneInverses){let u=c.bones.map(h=>e.scene.find(a[h])),p=c.boneInverses.map(h=>new ds.Matrix4().fromArray(h)),f=new ds.Skeleton(u,p);d.bind(f,d.bindMatrix)}}else d.matrixAutoUpdate=!0})}}this.oldComponent=this.component}}};function Tu(n){if(n.component){let t=n.component.instances.indexOf(n);t>=0&&n.component.instances.splice(t,1);for(let e of n.children)Oe.is(e)&&Tu(e)}}function Sx(n,t,e,r){return n.component===t&&ju(n.identity,r)?n.overrideData===e?2:1:0}function wx(n,t,e,r,o,i,a,s,l){if(a>50)return!1;if(r.component!==o){if(r.component){let c=r.component.instances.indexOf(r);c>=0&&r.component.instances.splice(c,1)}o.instances.push(r),r.component=o}o instanceof Yo&&o.isInstanceRoot&&o.expandInstanceChildren(n);let d=0;for(let c of o.children)if(Oe.is(c)){let u=[...t,...typeof c.identity=="string"?[c.identity]:c.identity],p=Xi.resolve(e,u,1);if(p!=null&&!(p instanceof Ke)){if(!1)debugger;Object.setPrototypeOf(p,Ke.prototype),console.error("wrong prototype")}let f=null,h;if(!s){let m=r.children[d];if(f=Oe.is(m)?m:null,f!==null){let y=Sx(f,c,p,u);h=y>=1?f.stateSelection:void 0,y!==2&&(f=null)}if(f===null&&(f=n.scene.findInstance(u)??null,f!==null)){let y=Sx(f,c,p,u);if(h=y>=1?f.stateSelection:void 0,y!==2)f=null;else{let g=f.parent.children.indexOf(f);f.parent.children.splice(g,1),r.children.splice(d,0,f),f.parent===r?(g<=d&&console.error("not possible"),void 0):(f.parent=r,f.matrixWorldNeedsUpdate=!0,f.resetBBoxNeedsUpdate(),f.updateVisible(),n.pendingDeletes.delete(f),void 0)}}}if(f===null){let m=p?io.apply(c.data,p):c.data;kr.is(m.type)&&(m={...m,type:"Empty"}),f=Ur.createEntity(u,m,n),f.overrideData=p,r.add(f),r.children.splice(r.children.length-1,1),r.children.splice(d,0,f),f.updateState(f.data,n),h&&f.changeSelectedState(h,n),n.scene.registerInstanceAndSetUuid(f)}if(f.isBone){let m=f.identity[f.identity.length-1];l[m]=f.uuid}d+=1,wx(n,t,e,f,c,i,a+1,s,l)}if(!s){let c=d;for(;;){let u=r.children[d];if(Oe.is(u))n.pendingDeletes.add(u);else break;d+=1}r.children.splice(c,d-c)}return!0}var _x=require("three");var Cu=class extends Co(_x.Bone,Po){constructor(t,e){super(),this.super_Entity(t,e),this.objectHelper.update(),this.matrixAutoUpdate=!0}updateState(t,e){this.updateState_Entity(t,e)}};function JP(n,t,e){let r;return t.geometry.type==="TextGeometry"?new Ka(n,t,e):(t.geometry.type==="SubdivGeometry"?r=new ci(n,t,e):t.geometry.type==="PathGeometry"?r=new us(n,t,e):t.geometry.type==="VectorGeometry"?r=new Au(n,t,e):t.geometry.type==="BooleanGeometry"?r=new Br(n,t,e):r=new St(n,t,e),r)}function Pu(n,t,e){return t.type==="Mesh"?JP(n,t,e):t.type==="Empty"?new In(n,t):t.type==="Splat"?new In(n,t):t.type==="Bone"?new Cu(n,t):t.type==="Page"?new Nn(n,t):t.type==="PointLight"?new _u(n,t,e):t.type==="SpotLight"?new ls(n,t,e):t.type==="DirectionalLight"?new ss(n,t,e):t.type==="Component"||t.type==="Instance"?new Yo(n,t,e):kr.is(t.type)?new $o(n,t):(console.error(t),new In(n,t))}Ur.createEntity=Pu;function e2(n,t,e){let r=Pu(n.identity,t,e),o=n.children,i=n.attachedPaths,a=n.parent,s=n.component,l=n.instances,d=n.overrideData,c=n.uuid,u=n.stateSelection;n.dispose();for(let p of Object.keys(n))delete n[p];Object.setPrototypeOf(n,Object.getPrototypeOf(r));for(let p of Object.keys(r))n[p]=r[p];n.children=[...n.children,...o],n.attachedPaths=i,n.parent=a,n.component=s,n.instances=l,n.uuid=c,n.overrideData=d,n.updateState(n.data,e),u&&n.changeSelectedState(u,e),n.resetBBoxNeedsUpdate()}Ur.changeEntityProptotype=e2;Ur.Cloner=Ja;function Ax(n,t,e,r){n.updateByOp(t,e,r,!1)}var ps=require("three");function Tx(n,t){let e=!1,r=t.getLayersOfType("transmission"),o=t.getLayersOfType("outline");return o.length>0&&(n.layers.set(8),r.length>0&&n.layers.enable(3),e=!0,Ya(n),$a(n)),r.length===0&&o.length===0&&n.layers.set(0),n instanceof mr&&n.needsAO&&n.layers.enable(5),e}function Cx(n,t){if(!t.layers)return!1;let e=!1,r=t.getLayersOfType("transmission").filter(i=>i.data.visible),o=t.getLayersOfType("outline").filter(i=>i.data.visible);return r.length>0&&(n.layers.set(3),o.length>0&&n.layers.enable(8),e=!0),r.length===0&&o.length===0&&n.layers.set(0),n.needsAO&&n.layers.enable(5),e}function Px(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof mr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Tx(e,e.material[r])&&(t=!0);else Tx(e,e.material)&&(t=!0)}),t}function Ox(n){let t=!1;return n.traverseEntity(e=>{if(e instanceof mr)if(Array.isArray(e.material))for(let r=0;r<e.material.length;r++)Cx(e,e.material[r])&&(t=!0);else Cx(e,e.material)&&(t=!0)}),t}var o2=new ps.Raycaster,n2=new ps.Matrix4,i2=new ps.Ray;function ml(n,t,e,r=!1){let o=n.cloner;if(o)for(let i of o.children){let a=n2.copy(i.matrixWorld).invert(),s=i2.copy(t.ray).applyMatrix4(a),l=n.matrixWorld;s.applyMatrix4(l);let d=o2;d.set(s.origin,s.direction),d.near=t.near,d.far=t.far;let c=d.intersectObject(n,!1);c.length>0&&e.push({...c[0],object:r?i:n})}}var Ou=class{constructor(){this._constraints=new Map}setConstraint(t,e){e===null?this._constraints.delete(t):this._constraints.set(t,e)}removeDependencies(t){this._constraints.delete(t)}applyConstraints(t){let e=new Set;this._constraints.forEach((r,o)=>{let i=[o,r],a=r;for(;this._constraints.has(a);)a=this._constraints.get(a),e.has(a)||i.push(a);for(let s=i.length-2;s>=0;s--)if(!e.has(i[s])){let l=t.find(i[s]);l?l.applyPathSnapping(t):console.warn(`missing entity ${i[s]}`),e.add(i[s])}})}findDependency(t,e){let r=t;for(;this._constraints.has(r);)if(r=this._constraints.get(r),r===e)return!0;return!1}};var to=Qt(fs()),Oo=Qt(hs());var mt=Qt(fs()),ue=Qt(hs()),En=class{constructor(t,e,r){this._dataNormalized=t,this._minD=e,this._maxD=r}static createFromUnnormalized(t){let e=ue.sup(t),r=ue.inf(t),o=(0,mt.default)(new Float32Array(t.size),t.shape),i=e-r;return i<1e-4?ue.assigns(o,0):(ue.subs(o,t,r),ue.divs(o,o,i)),new En(o,r,e)}get data(){return this._dataNormalized}get minD(){return this._minD}get maxD(){return this._maxD}denormalize(){let t=(0,mt.default)(new Float32Array(this._dataNormalized.size),this._dataNormalized.shape);return ue.muls(t,this._dataNormalized,this._maxD-this._minD),ue.adds(t,t,this._minD),t}},Qe=class{constructor(t,e){this._quantized=t,this._method=e}get quantized(){return this._quantized}static maxIntBits(t){return 2**t-1}static fromNormalized(t,e){let r=t.data,o;if(e==="norm8x"){let i=Qe.maxIntBits(8),a=(0,mt.default)(new Float32Array(r.size),r.shape);ue.muls(a,r,i),ue.roundeq(a),o=(0,mt.default)(new Uint8Array(a.data),r.shape)}else if(e==="norm565"){let i=(0,mt.default)(new Float32Array(r.size),r.shape);ue.assign(i,r),ue.mulseq(i.pick(null,0),Qe.maxIntBits(5)),ue.mulseq(i.pick(null,1),Qe.maxIntBits(6)),ue.mulseq(i.pick(null,2),Qe.maxIntBits(5)),ue.roundeq(i);let a=(0,mt.default)(new Uint16Array(i.data),r.shape),s=(0,mt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]),l=(0,mt.default)(new Uint16Array(r.shape[0]),[r.shape[0]]);ue.lshifts(s,a.pick(null,0),11),ue.lshifts(l,a.pick(null,1),5),ue.boreq(s,l),ue.boreq(s,a.pick(null,2)),o=s}else{let i=(0,mt.default)(new Float32Array(r.size),r.shape);ue.assign(i,r),ue.mulseq(i.pick(null,0),Qe.maxIntBits(11)),ue.mulseq(i.pick(null,1),Qe.maxIntBits(10)),ue.mulseq(i.pick(null,2),Qe.maxIntBits(11)),ue.roundeq(i);let a=(0,mt.default)(new Uint32Array(i.data),r.shape),s=(0,mt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]),l=(0,mt.default)(new Uint32Array(r.shape[0]),[r.shape[0]]);ue.lshifts(s,a.pick(null,0),21),ue.lshifts(l,a.pick(null,1),11),ue.boreq(s,l),ue.boreq(s,a.pick(null,2)),o=s}return new Qe(o,e)}dequantize(t,e){let r=this._method,o,i=this._quantized;if(r==="norm8x"){let a=Qe.maxIntBits(8);o=(0,mt.default)(new Float32Array(i.size),i.shape),ue.muls(o,i,1/a)}else if(r==="norm565"){let a=(0,mt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),s=(0,mt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]),l=(0,mt.default)(new Uint8Array(i.shape[0]),[i.shape[0]]);ue.rrshifts(a,i,11),ue.rrshifts(s,i,5),ue.bandseq(s,Qe.maxIntBits(6)),ue.bands(l,i,Qe.maxIntBits(5)),o=(0,mt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ue.muls(o.pick(null,0),a,1/Qe.maxIntBits(5)),ue.muls(o.pick(null,1),s,1/Qe.maxIntBits(6)),ue.muls(o.pick(null,2),l,1/Qe.maxIntBits(5))}else{let a=(0,mt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),s=(0,mt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]),l=(0,mt.default)(new Uint16Array(i.shape[0]),[i.shape[0]]);ue.rrshifts(a,i,21),ue.rrshifts(s,i,11),ue.bandseq(s,Qe.maxIntBits(10)),ue.bands(l,i,Qe.maxIntBits(11)),o=(0,mt.default)(new Float32Array(i.shape[0]*3),[i.shape[0],3]),ue.muls(o.pick(null,0),a,1/Qe.maxIntBits(11)),ue.muls(o.pick(null,1),s,1/Qe.maxIntBits(10)),ue.muls(o.pick(null,2),l,1/Qe.maxIntBits(11))}return new En(o,t,e)}};var Ze=class{constructor(t,e,r,o,i,a=!1){this._quantized=t,this._minMaxMatrix=e,this._chunkSize=r,this._quantizationMethod=o,this._variableChunkSize=i,this._isDynamicChunks=a}get length(){return this._quantized.shape[0]}get nchunks(){return this._minMaxMatrix.shape[0]}get quantized(){return this._quantized}get method(){return this._quantizationMethod}get minmaxMatrix(){return this._minMaxMatrix}_createPrunedMinMax(t){let e=t.length,r=this.minmaxMatrix.shape[0]-e,o=(0,to.default)(new Float32Array(r*2),[r,2]),i=0,a=r,s=0,l=this.minmaxMatrix.shape[0];for(let d=0;d<t.length;d++)l=t[d],a=l-s+i,a>i&&Oo.assign(o.hi(a,2).lo(i,0),this.minmaxMatrix.hi(l,2).lo(s,0)),i=a,s=l+1;return i<r&&Oo.assign(o.lo(i,0),this.minmaxMatrix.lo(s,0)),o}_createPrunedQuantized(t){let e=t.length,r=this.quantized.shape[0]-e,o=this._quantizationMethod,i,a;if(o==="norm8x"){a=this._quantized.shape[1];let u=a?r*a:r;i=(0,to.default)(new Uint8Array(u),a?[r,a]:[r,1])}else o==="norm565"?i=(0,to.default)(new Uint16Array(r),[r]):i=(0,to.default)(new Uint32Array(r),[r]);let s=0,l=r,d=0,c=i.shape[0];for(let u=0;u<t.length;u++)c=t[u],l=c-d+s,l>s&&(a?Oo.assign(i.hi(l,a).lo(s,0),this._quantized.hi(c,a).lo(d,0)):Oo.assign(i.hi(l).lo(s),this._quantized.hi(c).lo(d))),s=l,d=c+1;return s<r&&(a?Oo.assign(i.lo(s,0),this._quantized.lo(d,0)):Oo.assign(i.lo(s),this._quantized.lo(d))),i}pruneFeature(t,e,r){let o=this._createPrunedQuantized(t),i=this._createPrunedMinMax(e);return new Ze(o,i,this._chunkSize,this._quantizationMethod,r,!0)}static getRequiredNChunks(t,e){return Math.floor(t/e)}static fromArray(t,e,r){let o=t.shape[0],i=Math.floor(o/r),a=(0,to.default)(new Float32Array(i*2),[i,2],[2,1]),s;e==="norm8x"?s=(0,to.default)(new Uint8Array(t.size),t.shape):e==="norm565"?s=(0,to.default)(new Uint16Array(t.shape[0]),[t.shape[0]]):s=(0,to.default)(new Uint32Array(t.shape[0]),[t.shape[0]]);for(let l=0;l<i;l++){let d=l*r,c=l+1<i?(l+1)*r:o,u;t.shape.length>1?u=En.createFromUnnormalized(t.hi(c,t.shape[1]).lo(d,0)):u=En.createFromUnnormalized(t.hi(c).lo(d)),a.set(l,0,u.minD),a.set(l,1,u.maxD),s.shape.length>1?Oo.assign(s.hi(c,s.shape[1]).lo(d,0),Qe.fromNormalized(u,e).quantized):Oo.assign(s.hi(c).lo(d),Qe.fromNormalized(u,e).quantized)}return new Ze(s,a,r,e)}denormDequant(){let t=this._minMaxMatrix.shape[0],e=this._quantized,r=e.shape[0],o=this._quantizationMethod,i=this._chunkSize,a;if(this._isDynamicChunks){if(!this._variableChunkSize)throw new Error("variable chunk must exists if chunkSize isDynamic");a=this._variableChunkSize}let s;o==="norm8x"?s=(0,to.default)(new Float32Array(e.size),e.shape):s=(0,to.default)(new Float32Array(r*3),[r,3]);let l=0,d=i;for(let c=0;c<t;c++){let[u,p]=[this._minMaxMatrix.get(c,0),this._minMaxMatrix.get(c,1)];this._isDynamicChunks&&(d=a[c]);let f=c+1<t?l+d:r,h;e.shape.length>1?h=new Qe(e.hi(f,e.shape[1]).lo(l,0),o):h=new Qe(e.hi(f).lo(l),o),Oo.assign(s.hi(f,s.shape[1]).lo(l,0),h.dequantize(u,p).denormalize()),l=f}return s}static async fetchArrayBuffer(t){return await(await fetch(t,{mode:"cors"})).arrayBuffer()}};var Xo=Qt(fs()),Ie=Qt(hs());var Kx="http://127.0.0.1:8000";var pi=Qt(fs()),Xe=Qt(hs());var Qx=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9];function Zx(n){return n<1e5?n<100?n<10?0:1:n<1e4?n<1e3?2:3:4:n<1e7?n<1e6?5:6:n<1e9?n<1e8?7:8:9}function Jx(n,t){if(n===t)return 0;if(~~n===n&&~~t===t){if(n===0||t===0)return n<t?-1:1;if(n<0||t<0){if(t>=0)return-1;if(n>=0)return 1;n=-n,t=-t}let o=Zx(n),i=Zx(t),a=0;return o<i?(n*=Qx[i-o-1],t/=10,a=-1):o>i&&(t*=Qx[o-i-1],n/=10,a=1),n===t?a:n<t?-1:1}let e=String(n),r=String(t);return e===r?0:e<r?-1:1}function I2(n){let t=0;for(;n>=32;)t|=n&1,n>>=1;return n+t}function ev(n,t,e,r){let o=t+1;if(o===e)return 1;if(r(n[o++],n[t])<0){for(;o<e&&r(n[o],n[o-1])<0;)o++;N2(n,t,o)}else for(;o<e&&r(n[o],n[o-1])>=0;)o++;return o-t}function N2(n,t,e){for(e--;t<e;){let r=n[t];n[t++]=n[e],n[e--]=r}}function tv(n,t,e,r,o){for(r===t&&r++;r<e;r++){let i=n[r],a=t,s=r;for(;a<s;){let d=a+s>>>1;o(i,n[d])<0?s=d:a=d+1}let l=r-a;switch(l){case 3:n[a+3]=n[a+2];case 2:n[a+2]=n[a+1];case 1:n[a+1]=n[a];break;default:for(;l>0;)n[a+l]=n[a+l-1],l--}n[a]=i}}function Hp(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])>0){for(s=r-o;l<s&&i(n,t[e+o+l])>0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}else{for(s=o+1;l<s&&i(n,t[e+o-l])<=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let d=a;a=o-l,l=o-d}for(a++;a<l;){let d=a+(l-a>>>1);i(n,t[e+d])>0?a=d+1:l=d}return l}function qp(n,t,e,r,o,i){let a=0,s=0,l=1;if(i(n,t[e+o])<0){for(s=o+1;l<s&&i(n,t[e+o-l])<0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s);let d=a;a=o-l,l=o-d}else{for(s=r-o;l<s&&i(n,t[e+o+l])>=0;)a=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),a+=o,l+=o}for(a++;a<l;){let d=a+(l-a>>>1);i(n,t[e+d])<0?l=d:a=d+1}return l}var Wp=class{constructor(t,e){Nt(this,"array",null);Nt(this,"compare",null);Nt(this,"minGallop",7);Nt(this,"length",0);Nt(this,"tmpStorageLength",256);Nt(this,"stackLength",0);Nt(this,"runStart",null);Nt(this,"runLength",null);Nt(this,"stackSize",0);this.array=t,this.compare=e,this.length=t.length,this.length<2*256&&(this.tmpStorageLength=this.length>>>1),this.tmp=new Array(this.tmpStorageLength),this.stackLength=this.length<120?5:this.length<1542?10:this.length<119151?19:40,this.runStart=new Array(this.stackLength),this.runLength=new Array(this.stackLength)}pushRun(t,e){this.runStart[this.stackSize]=t,this.runLength[this.stackSize]=e,this.stackSize+=1}mergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;if(t>=1&&this.runLength[t-1]<=this.runLength[t]+this.runLength[t+1]||t>=2&&this.runLength[t-2]<=this.runLength[t]+this.runLength[t-1])this.runLength[t-1]<this.runLength[t+1]&&t--;else if(this.runLength[t]>this.runLength[t+1])break;this.mergeAt(t)}}forceMergeRuns(){for(;this.stackSize>1;){let t=this.stackSize-2;t>0&&this.runLength[t-1]<this.runLength[t+1]&&t--,this.mergeAt(t)}}mergeAt(t){let e=this.compare,r=this.array,o=this.runStart[t],i=this.runLength[t],a=this.runStart[t+1],s=this.runLength[t+1];this.runLength[t]=i+s,t===this.stackSize-3&&(this.runStart[t+1]=this.runStart[t+2],this.runLength[t+1]=this.runLength[t+2]),this.stackSize--;let l=qp(r[a],r,o,i,0,e);o+=l,i-=l,i!==0&&(s=Hp(r[o+i-1],r,a,s,s-1,e),s!==0&&(i<=s?this.mergeLow(o,i,a,s):this.mergeHigh(o,i,a,s)))}mergeLow(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<e;l++)s[l]=a[t+l];let d=0,c=r,u=t;if(a[u++]=a[c++],--o===0){for(l=0;l<e;l++)a[u+l]=s[d+l];return}if(e===1){for(l=0;l<o;l++)a[u+l]=a[c+l];a[u+o]=s[d];return}let p=this.minGallop;for(;;){let f=0,h=0,m=!1;do if(i(a[c],s[d])<0){if(a[u++]=a[c++],h++,f=0,--o===0){m=!0;break}}else if(a[u++]=s[d++],f++,h=0,--e===1){m=!0;break}while((f|h)<p);if(m)break;do{if(f=qp(a[c],s,d,e,0,i),f!==0){for(l=0;l<f;l++)a[u+l]=s[d+l];if(u+=f,d+=f,e-=f,e<=1){m=!0;break}}if(a[u++]=a[c++],--o===0){m=!0;break}if(h=Hp(s[d],a,c,o,0,i),h!==0){for(l=0;l<h;l++)a[u+l]=a[c+l];if(u+=h,c+=h,o-=h,o===0){m=!0;break}}if(a[u++]=s[d++],--e===1){m=!0;break}p--}while(f>=7||h>=7);if(m)break;p<0&&(p=0),p+=2}if(this.minGallop=p,p<1&&(this.minGallop=1),e===1){for(l=0;l<o;l++)a[u+l]=a[c+l];a[u+o]=s[d]}else{if(e===0)throw new Error("mergeLow preconditions were not respected");for(l=0;l<e;l++)a[u+l]=s[d+l]}}mergeHigh(t,e,r,o){let i=this.compare,a=this.array,s=this.tmp,l=0;for(l=0;l<o;l++)s[l]=a[r+l];let d=t+e-1,c=o-1,u=r+o-1,p=0,f=0;if(a[u--]=a[d--],--e===0){for(p=u-(o-1),l=0;l<o;l++)a[p+l]=s[l];return}if(o===1){for(u-=e,d-=e,f=u+1,p=d+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[u]=s[c];return}let h=this.minGallop;for(;;){let m=0,y=0,g=!1;do if(i(s[c],a[d])<0){if(a[u--]=a[d--],m++,y=0,--e===0){g=!0;break}}else if(a[u--]=s[c--],y++,m=0,--o===1){g=!0;break}while((m|y)<h);if(g)break;do{if(m=e-qp(s[c],a,t,e,e-1,i),m!==0){for(u-=m,d-=m,e-=m,f=u+1,p=d+1,l=m-1;l>=0;l--)a[f+l]=a[p+l];if(e===0){g=!0;break}}if(a[u--]=s[c--],--o===1){g=!0;break}if(y=o-Hp(a[d],s,0,o,o-1,i),y!==0){for(u-=y,c-=y,o-=y,f=u+1,p=c+1,l=0;l<y;l++)a[f+l]=s[p+l];if(o<=1){g=!0;break}}if(a[u--]=a[d--],--e===0){g=!0;break}h--}while(m>=7||y>=7);if(g)break;h<0&&(h=0),h+=2}if(this.minGallop=h,h<1&&(this.minGallop=1),o===1){for(u-=e,d-=e,f=u+1,p=d+1,l=e-1;l>=0;l--)a[f+l]=a[p+l];a[u]=s[c]}else{if(o===0)throw new Error("mergeHigh preconditions were not respected");for(p=u-(o-1),l=0;l<o;l++)a[p+l]=s[l]}}};function rv(n,t,e,r){if(!Array.isArray(n))throw new TypeError("Can only sort arrays");t?typeof t!="function"&&(r=e,e=t,t=Jx):t=Jx,e||(e=0),r||(r=n.length);let o=r-e;if(o<2)return;let i=0;if(o<32){i=ev(n,e,r,t),tv(n,e,r,e+i,t);return}let a=new Wp(n,t),s=I2(o);do{if(i=ev(n,e,r,t),i<s){let l=o;l>s&&(l=s),tv(n,e,e+l,e+i,t),i=l}a.pushRun(e,i),a.mergeRuns(),o-=i,e+=i}while(o!==0);a.forceMergeRuns()}function $p(n){let t=(0,pi.default)(new Int32Array(n.shape[0]),[n.shape[0]]),e=(0,pi.default)(new Int32Array(n.shape[0]),[n.shape[0]]);return Xe.bands(t,n,1023),Xe.lshifts(e,t,16),Xe.bxoreq(t,e),Xe.bandseq(t,4278190335),Xe.lshifts(e,t,8),Xe.bxoreq(t,e),Xe.bandseq(t,50393103),Xe.lshifts(e,t,4),Xe.bxoreq(t,e),Xe.bandseq(t,51130563),Xe.lshifts(e,t,2),Xe.bxoreq(t,e),Xe.bandseq(t,153391689),t}function E2(n){let t=$p(n.pick(null,0)),e=$p(n.pick(null,1));Xe.lshiftseq(e,1);let r=$p(n.pick(null,2));return Xe.lshiftseq(r,2),Xe.boreq(t,e),Xe.boreq(t,r),t}function Dn(n,t){if(n.shape[0]!==t.shape[0])throw new Error("wrong length");let e=(0,pi.default)(new Float32Array(n.size),n.shape,n.stride,n.offset);for(let r=0;r<t.shape[0];r++){let o=t.get(r);if(n.shape.length>1)for(let i=0;i<n.shape[1];i++)e.set(r,i,n.get(o,i));else e.set(r,n.get(o))}return e}function Yp(n){let t=Xe.sup(n),e=Xe.inf(n),r=1e3/Math.min(1e3,t-e),o=(0,pi.default)(new Float32Array(n.data),n.shape);Xe.mulseq(o,r);let i=(0,pi.default)(new Int32Array(o.data),n.shape),a=E2(i),l=Array.from(a.data).map((u,p)=>[u,p]);rv(l,(u,p)=>u[0]-p[0]);let d=l.map(([u,p])=>p);return(0,pi.default)(Uint32Array.from(d))}var Vr=class{constructor(t,e,r,o,i,a,s,l,d,c){this.propertyDescs=t,this.format=e,this.nsplats=r,this.xyz=o,this.colors=i,this.harmonics=a,this.opacity=s,this.scaling=l,this.rotation=d,this.maxSHDegree=c}getPlyBinary(){let t=Vr._generateHeaderString(this.propertyDescs,this.format,this.nsplats),e=new TextEncoder().encode(t),r=Object.keys(this.propertyDescs).length,o=(0,Xo.default)(new Float32Array(this.nsplats*r),[this.nsplats,r]);if(Ie.assign(o.pick(null,this.propertyDescs.x.index),this.xyz.pick(null,0)),Ie.assign(o.pick(null,this.propertyDescs.y.index),this.xyz.pick(null,1)),Ie.assign(o.pick(null,this.propertyDescs.z.index),this.xyz.pick(null,2)),Ie.assign(o.pick(null,this.propertyDescs.f_dc_0.index),this.colors.pick(null,0)),Ie.assign(o.pick(null,this.propertyDescs.f_dc_1.index),this.colors.pick(null,1)),Ie.assign(o.pick(null,this.propertyDescs.f_dc_2.index),this.colors.pick(null,2)),Ie.assign(o.pick(null,this.propertyDescs.opacity.index),this.opacity.pick(null,0)),Ie.assign(o.pick(null,this.propertyDescs.scale_0.index),this.scaling.pick(null,0)),Ie.assign(o.pick(null,this.propertyDescs.scale_1.index),this.scaling.pick(null,1)),Ie.assign(o.pick(null,this.propertyDescs.scale_2.index),this.scaling.pick(null,2)),Ie.assign(o.pick(null,this.propertyDescs.rot_0.index),this.rotation.pick(null,0)),Ie.assign(o.pick(null,this.propertyDescs.rot_1.index),this.rotation.pick(null,1)),Ie.assign(o.pick(null,this.propertyDescs.rot_2.index),this.rotation.pick(null,2)),Ie.assign(o.pick(null,this.propertyDescs.rot_3.index),this.rotation.pick(null,3)),this.harmonics&&this.harmonics.length>0)for(let s=0;s<this.harmonics.length;s++){let l=s*3;Ie.assign(o.pick(null,this.propertyDescs[`f_rest_${l}`].index),this.harmonics[s].pick(null,0)),Ie.assign(o.pick(null,this.propertyDescs[`f_rest_${l+1}`].index),this.harmonics[s].pick(null,1)),Ie.assign(o.pick(null,this.propertyDescs[`f_rest_${l+2}`].index),this.harmonics[s].pick(null,2))}let i=new Uint8Array(o.data.buffer),a=new Uint8Array(i.length+e.length);return a.set(e),a.set(i,e.length),a.buffer}save(t,e){let r=this.getPlyBinary(),o=new Blob([r],{type:"application/octet-stream"}),i=new File([o],t),a=new FormData;a.append("file",i),a.append("filename",t),a.append("basedir",e),fetch(`${Kx}/push_file`,{method:"POST",body:a})}static async loadFile(t){return await(await fetch(t)).arrayBuffer()}mortonPositionSplatsSort(){let t=Yp(this.xyz),e=Dn(this.xyz,t),r=Dn(this.colors,t),o=Dn(this.opacity,t),i=Dn(this.scaling,t),a=Dn(this.rotation,t),s=[];for(let l=0;l<this.harmonics.length;l++)s.push(Dn(this.harmonics[l],t));return new Vr(this.propertyDescs,this.format,this.nsplats,e,r,s,o,i,a,this.maxSHDegree)}static _generateHeaderString(t,e,r){let o=`ply
|
|
2608
|
+
format ${e.format} ${e.version}
|
|
2609
|
+
element vertex ${r}`,i=Object.keys(t).length,a=Array(i);for(let s in t){let l=t[s];a[l.index]={name:s,dtype:l.dtype}}for(let s=0;s<a.length;s++)o=`${o}
|
|
2610
|
+
property ${a[s].dtype} ${a[s].name}`;return`${o}
|
|
2611
|
+
end_header
|
|
2612
|
+
`}static fromArrayBuffer(t,e=3){let{splatCount:r,vertexData:o,propertiesDesc:i,format:a}=Vr.decodeHeader(t),s=o.buffer.slice(o.byteOffset),l=Object.keys(i).length,d=(0,Xo.default)(new Float32Array(s),[r,l]),c=0,u={},p={double:8,int:4,uint:4,float:4,short:2,ushort:2,uchar:1};for(let b in i)if(i.hasOwnProperty(b)){let _=i[b].dtype;u[b]=c,c+=p[_]}let f=(0,Xo.default)(new Float32Array(r*3),[r,3]);Ie.assign(f.pick(null,0),d.pick(null,u.x/4)),Ie.assign(f.pick(null,1),d.pick(null,u.y/4)),Ie.assign(f.pick(null,2),d.pick(null,u.z/4));let h=(0,Xo.default)(new Float32Array(r*3),[r,3]);Ie.assign(h.pick(null,0),d.pick(null,u.scale_0/4)),Ie.assign(h.pick(null,1),d.pick(null,u.scale_1/4)),Ie.assign(h.pick(null,2),d.pick(null,u.scale_2/4));let m=(0,Xo.default)(new Float32Array(r*3),[r,3]);Ie.assign(m.pick(null,0),d.pick(null,u.f_dc_0/4)),Ie.assign(m.pick(null,1),d.pick(null,u.f_dc_1/4)),Ie.assign(m.pick(null,2),d.pick(null,u.f_dc_2/4));let y=(0,Xo.default)(new Float32Array(r*4),[r,4]);Ie.assign(y.pick(null,0),d.pick(null,u.rot_1/4)),Ie.assign(y.pick(null,1),d.pick(null,u.rot_2/4)),Ie.assign(y.pick(null,2),d.pick(null,u.rot_3/4)),Ie.assign(y.pick(null,3),d.pick(null,u.rot_0/4));for(let b=0;b<r;b++){let _=y.pick(b,null),A=Math.sqrt(_.get(0)**2+_.get(1)**2+_.get(2)**2+_.get(3)**2);Ie.divseq(_,A)}let g=(0,Xo.default)(new Float32Array(r*1),[r,1]);Ie.assign(g.pick(null,0),d.pick(null,u.opacity/4));let S=(Math.min(Math.max(e,0),3)+1)**2-1,w=[];for(let b=0;b<S;b++){let _=(0,Xo.default)(new Float32Array(r*3),[r,3]),A=b*3;Ie.assign(_.pick(null,0),d.pick(null,u[`f_rest_${A}`]/4)),Ie.assign(_.pick(null,1),d.pick(null,u[`f_rest_${A+1}`]/4)),Ie.assign(_.pick(null,2),d.pick(null,u[`f_rest_${A+2}`]/4)),w.push(_)}return new Vr(i,a,r,f,m,w,g,h,y,e)}static async fromPLYFile(t,e=3){let r=await Vr.loadFile(t);return Vr.fromArrayBuffer(r,e)}static decodeHeader(t){let e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let h=new Uint8Array(t,r,i);o+=e.decode(h),r+=i;let m=r-i*2,y=new Uint8Array(t,Math.max(0,m),m>0?i*2:i);if(e.decode(y).includes("end_header"))break}let a=o.split(`
|
|
2613
|
+
`),s=0,l={},d={},c=0,u;for(let h=0;h<a.length;h++){let m=a[h].trim();if(m.startsWith("element vertex")){let y=m.match(/\d+/);y&&(s=parseInt(y[0]))}else if(m.startsWith("property")){let y=m.match(/(\w+)\s+(\w+)\s+(\w+)/);if(y){let g=y[2],x=y[3];l[x]=c,d[x]={dtype:g,index:c},c++}}else if(m.startsWith("format")){let y=m.match(/(\w+)\s+(\w+)\s+(\d+\.?\d*)/);y&&(u={format:y[2],version:y[3]})}else if(m==="end_header")break}let p=o.indexOf("end_header")+10+1,f=new DataView(t,p);return{splatCount:s,vertexData:f,headerOffset:r,propertiesDesc:d,format:u}}};var fi=class{constructor(t,e,r,o,i,a,s,l){this.config=t,this.xyz=e,this.scaling=r,this.color=o,this.opacity=i,this.harmonics=s,this.quaternion=a,this.variableChunkSize=l}get isDynamicChunks(){return this.variableChunkSize&&this.variableChunkSize.length>0}get nchunks(){return this.xyz.nchunks}get nsplats(){return this.xyz.length}get chunkSize(){return this.config.chunkSize}static compressFromGaussianData(t,e){let r=Ze.fromArray(t.xyz,e.xyz,e.chunkSize),o=Ze.fromArray(t.scaling,e.scaling,e.chunkSize),i=Ze.fromArray(t.colors,e.color,e.chunkSize),a=Ze.fromArray(t.opacity,e.opacity,e.chunkSize),s=Ze.fromArray(t.rotation,e.quaternion,e.chunkSize),l=t.harmonics,d=[];if(e.harmonics)for(let c=0;c<l.length;c++){let u=Ze.fromArray(l[c],e.harmonics,e.chunkSize);d.push(u)}return new fi(e,r,o,i,a,s,d)}_countIndexesInChunks(t){let e=[],r=this.nchunks,o=this.chunkSize,i=this.nsplats,a=Ze.getRequiredNChunks(i,o);if(r===a)for(let s=0;s<t.length;s++){let l=t[s],d=Math.floor(l/this.chunkSize);d in e?e[d].push(l):e[d]=[l]}else{let s=this.variableChunkSize,l={},d=0;for(let c=0;c<r;c++)l[c]=d,d+=s[c];for(let c=0;c<t.length;c++){let u=t[c],p=Math.min(Math.floor(u/o),r-1);for(;u>l[p]+s[p];)p--;p in e?e[p].push(u):e[p]=[u]}}return e}pruneSplats(t){let e=this._countIndexesInChunks(t),r,o=[];return e.length>0&&(r=this.variableChunkSize?[...this.variableChunkSize]:Array(this.nchunks).fill(this.chunkSize),e.forEach((i,a)=>{r[a]-=i.length,r[a]<=0&&o.push(a)}),r=r.filter(i=>i>0)),new fi(this.config,this.xyz.pruneFeature(t,o,r),this.scaling.pruneFeature(t,o,r),this.color.pruneFeature(t,o,r),this.opacity.pruneFeature(t,o,r),this.quaternion.pruneFeature(t,o,r),this.harmonics?this.harmonics.map(i=>i.pruneFeature(t,o,this.variableChunkSize)):void 0,r)}static async loadConfig(t){return await(await fetch(t,{method:"GET",mode:"cors",headers:{Accept:"application/json"}})).json()}toGaussians(){let t={format:"binary_little_endian",version:"1.0"},e={},r=0;if(e.x={dtype:"float",index:r},r++,e.y={dtype:"float",index:r},r++,e.z={dtype:"float",index:r},r++,e.f_dc_0={dtype:"float",index:r},r++,e.f_dc_1={dtype:"float",index:r},r++,e.f_dc_2={dtype:"float",index:r},r++,this.harmonics&&this.harmonics.length>0)for(let a=0;a<this.harmonics.length;a++)e[`f_rest_${a}`]={dtype:"float",index:r},r++,e[`f_rest_${a+1}`]={dtype:"float",index:r},r++,e[`f_rest_${a+2}`]={dtype:"float",index:r},r++;e.opacity={dtype:"float",index:r},r++,e.scale_0={dtype:"float",index:r},r++,e.scale_1={dtype:"float",index:r},r++,e.scale_2={dtype:"float",index:r},r++,e.rot_0={dtype:"float",index:r},r++,e.rot_1={dtype:"float",index:r},r++,e.rot_2={dtype:"float",index:r},r++,e.rot_3={dtype:"float",index:r},r++;let o=this.harmonics?.map(a=>a.denormDequant());return new Vr(e,t,this.xyz.length,this.xyz.denormDequant(),this.color.denormDequant(),o||[],this.opacity.denormDequant(),this.scaling.denormDequant(),this.quaternion.denormDequant(),3)}};var hi=Qt(fs()),_t=Qt(hs());var Ln=require("three"),ov={xyz:3,color:3,opacity:1,scaling:3,quaternion:4,harmonics:3},Bn=class{constructor(t){this._buffer=t}get buffer(){return this._buffer}get decoded(){return this._decoded||(this._decoded=this.decodeBuffer()),this._decoded}get colorsA(){let t=.28209479177387814,e=this.decoded.color.denormDequant(),r=this.decoded.opacity.denormDequant(),o=(0,hi.default)(new Float32Array(e.shape[0]*4),[e.shape[0],4]);return _t.mulseq(e,t),_t.addseq(e,.5),_t.mulseq(e,255),_t.maxseq(e,0),_t.minseq(e,255),_t.negeq(r),_t.expeq(r),_t.addseq(r,1),_t.recipeq(r),_t.mulseq(r,255),_t.assign(o.hi(e.shape[0],3).lo(0,0),e),_t.assign(o.hi(e.shape[0],4).lo(0,3),r),(0,hi.default)(new Uint8Array(o.data),[e.shape[0],4]).data}get nsplats(){return this.decoded.nsplats}getSplatCount(){return this.decoded.nsplats}get precomputedCovarianceBufferData(){return this._precomputedCovarianceBufferData}decodeBuffer(){let{splatCount:t,chunkCount:e,chunkSize:r,typeChunks:o,vertexData:i,propertiesDesc:a}=this.decodeHeader(),s={xyz:a.xyz.compressionMethod,color:a.color.compressionMethod,opacity:a.opacity.compressionMethod,scaling:a.scaling.compressionMethod,quaternion:a.quaternion.compressionMethod,chunkSize:r};a.harmonics_0&&(s.harmonics=a.harmonics_0.compressionMethod);let l=i.byteOffset,d=Array(Object.keys(a).length);for(let g in a)d[a[g].index]={name:g,method:a[g].compressionMethod};let c=e*2*4,u=l,p=o==="dynamic"?e*2:0,f,h=!1;if(p>0){let g=new Uint16Array(i.buffer.slice(u,u+p));u+=p,f=Array.from(g),h=!0}let m={};for(let g of d){let x=0,S=!0;if(g.method==="norm8x")x=t*1*ov[g.name];else if(g.method==="norm11")x=t*4;else if(g.method==="norm565")x=t*2;else throw S=!1,new Error(`Not Implemented format: ${g.method}`);let w;if(S){let A=i.buffer.slice(u,u+c);w=(0,hi.default)(new Float32Array(A),[e,2]),u+=c}else throw new Error("loading chunk byt hasnot minmax!");let b=i.buffer.slice(u,u+x);u+=x;let _;if(g.method==="norm8x")_=(0,hi.default)(new Uint8Array(b),[t,ov[g.name]]);else if(g.method==="norm11")_=(0,hi.default)(new Uint32Array(b));else if(g.method==="norm565")_=(0,hi.default)(new Uint16Array(b));else throw new Error(`Not Implemented format: ${g.method}`);m[g.name]=new Ze(_,w,r,g.method,f,h)}let y=[];for(let g=0;g<15;g++){let x=m[`harmonics_${g}`];x&&(y.push(x),delete m[`harmonics_${g}`])}return y.length>0&&(m.harmonics=y),new fi(s,m.xyz,m.scaling,m.color,m.opacity,m.quaternion,m.harmonics,f)}buildPreComputedBuffers(){let r=this.decoded,o=r.nsplats,i=new ArrayBuffer(24*o),a=new Float32Array(i),s=r.scaling.denormDequant(),l=r.quaternion.denormDequant(),d=new Ln.Quaternion,c=new Ln.Matrix3,u=new Ln.Matrix3,p=new Ln.Matrix3,f=new Ln.Matrix4;for(let h=0;h<o;h++){f.makeScale(Math.exp(s.get(h,0)),Math.exp(s.get(h,1)),Math.exp(s.get(h,2))),u.setFromMatrix4(f),d.set(l.get(h,0),l.get(h,1),l.get(h,2),l.get(h,3)),f.makeRotationFromQuaternion(d),c.setFromMatrix4(f),p.copy(c).multiply(u);let m=p.elements;a[6*h]=m[0]*m[0]+m[3]*m[3]+m[6]*m[6],a[6*h+1]=m[0]*m[1]+m[3]*m[4]+m[6]*m[7],a[6*h+2]=m[0]*m[2]+m[3]*m[5]+m[6]*m[8],a[6*h+3]=m[1]*m[1]+m[4]*m[4]+m[7]*m[7],a[6*h+4]=m[1]*m[2]+m[4]*m[5]+m[7]*m[8],a[6*h+5]=m[2]*m[2]+m[5]*m[5]+m[8]*m[8]}this._precomputedCovarianceBufferData=i}decodeHeader(){let t=this._buffer,e=new TextDecoder,r=0,o="",i=100;for(;;){if(r+i>=t.byteLength)throw new Error("End of file reached while searching for end of header");let m=new Uint8Array(t,r,i);o+=e.decode(m),r+=i;let y=r-i*2,g=new Uint8Array(t,Math.max(0,y),y>=0?i*2:i);if(e.decode(g).includes("end_header"))break}let a=o.split(`
|
|
2614
|
+
`),s=0,l=0,d=0,c=0,u="",p={};for(let m=0;m<a.length;m++){let y=a[m].trim();if(y.startsWith("element vertex")){let g=y.match(/\d+/);g&&(s=parseInt(g[0]))}else if(y.startsWith("property")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);if(g){let x=g[2],S=g[3];p[x]={compressionMethod:S,index:c},c++}}else if(y.startsWith("element chunks")){let g=y.match(/\d+/);g&&(l=parseInt(g[0]))}else if(y.startsWith("element chunkSize")){let g=y.match(/\d+/);g&&(d=parseInt(g[0]))}else if(y.startsWith("element typeChunks")){let g=y.match(/(\w+)\s+(\w+)\s+(\w+)/);g&&(u=g[3])}else if(y==="end_header")break}let f=o.indexOf("end_header")+10+1,h=new DataView(t,f);return{splatCount:s,chunkCount:l,chunkSize:d,typeChunks:u,vertexData:h,propertiesDesc:p}}pruneSplats(t){let r=this.decodeBuffer().pruneSplats(t);return Bn.fromCompressedGaussianSplats(r)}static fromCompressedGaussianSplats(t){let e=t.xyz.length,r=t.xyz.nchunks,o=`gspline
|
|
2615
|
+
element vertex ${e}
|
|
2616
|
+
element chunks ${r}
|
|
2617
|
+
element chunkSize ${t.chunkSize}
|
|
2618
|
+
element typeChunks ${t.isDynamicChunks?"dynamic":"static"}
|
|
2619
|
+
property xyz ${t.xyz.method}
|
|
2620
|
+
property color ${t.color.method}
|
|
2621
|
+
property opacity ${t.opacity.method}
|
|
2622
|
+
property scaling ${t.scaling.method}
|
|
2623
|
+
property quaternion ${t.quaternion.method}`;if(t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++)o=`${o}
|
|
2624
|
+
property harmonics_${M} ${t.harmonics[M].method}`;o=`${o}
|
|
2625
|
+
end_header
|
|
2626
|
+
`;let a=new TextEncoder().encode(o),s=r*2*4,l=t.xyz.quantized.data.buffer.byteLength,d=t.xyz instanceof Ze?s:0,c=t.color.quantized.data.buffer.byteLength,u=t.color instanceof Ze?s:0,p=t.opacity.quantized.data.buffer.byteLength,f=t.opacity instanceof Ze?s:0,h=t.scaling.quantized.data.buffer.byteLength,m=t.scaling instanceof Ze?s:0,y=t.quaternion.quantized.data.buffer.byteLength,g=t.quaternion instanceof Ze?s:0,x=t.variableChunkSize?Uint16Array.from(t.variableChunkSize):void 0,S=x?x.byteLength:0,w=a.byteLength+S+l+d+c+u+p+f+h+m+y+g,b=0,_=0;if(t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++)b+=t.harmonics[M].quantized.data.buffer.byteLength,_+=t.harmonics[M]instanceof Ze?s:0;b=0,_=0,w+=b+_;let A=new Uint8Array(w),v=0;if(A.set(a,v),v+=a.byteLength,S>0&&(A.set(new Uint8Array(x.buffer),v),v+=S),t.xyz instanceof Ze&&(A.set(new Uint8Array(t.xyz.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.xyz.quantized.data.buffer),v),v+=l,t.color instanceof Ze&&(A.set(new Uint8Array(t.color.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.color.quantized.data.buffer),v),v+=c,t.opacity instanceof Ze&&(A.set(new Uint8Array(t.opacity.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.opacity.quantized.data.buffer),v),v+=p,t.scaling instanceof Ze&&(A.set(new Uint8Array(t.scaling.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.scaling.quantized.data.buffer),v),v+=h,t.quaternion instanceof Ze&&(A.set(new Uint8Array(t.quaternion.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(t.quaternion.quantized.data.buffer),v),v+=y,b>0&&t.harmonics&&t.harmonics.length>0)for(let M=0;M<t.harmonics.length;M++){let O=t.harmonics[M];O instanceof Ze&&(A.set(new Uint8Array(O.minmaxMatrix.data.buffer),v),v+=s),A.set(new Uint8Array(O.quantized.data.buffer),v),v+=O.quantized.data.byteLength}return new Bn(A.buffer)}};var nv="AGFzbQEAAAAADwhkeWxpbmsuMAEEAAAAAAEXA2AAAGAMf39/f399fX1/f39/AGAAAX8CEgEDZW52Bm1lbW9yeQIDAICABAMEAwABAgc5AxFfX3dhc21fY2FsbF9jdG9ycwAAC3NvcnRJbmRleGVzAAETZW1zY3JpcHRlbl90bHNfaW5pdAACCrsEAwMAAQuvBAIDfwF9AkAgCUUEQCACIAtBAnRqIQEgCLNDAACAr5QhBUH4////ByENDAELIAMqAighBSADKgIYIQYgAyoCCCEHQfj///8HIQ1BiICAgHghDgNAIAIgDEECdGoCfyAHIAEgDEEMbGoiAyoCAJQgBiADKgIElJIgBSADKgIIlJJDAADIQpQiD4tDAAAAT10EQCAPqAwBC0GAgICAeAsiAzYCACADIA0gAyANSBshDSADIA4gAyAOShshDiAMQQFqIgwgCUcNAAsgAiALQQJ0aiEBIAizIA6yIA2yk5UhBSAJRQ0AQQAhAwNAIAECfyAFIAIgA0ECdGooAgAgDWuylCIGi0MAAABPXQRAIAaoDAELQYCAgIB4C0ECdGoiDCAMKAIAQQFqNgIAIANBAWoiAyAJRw0ACwsgCEECTwRAIAIgC0ECdGohDiABKAIAIQxBASEDA0AgDiADQQJ0aiIBIAEoAgAgDGoiDDYCACADQQFqIgMgCEcNAAsLIAkgCkEBayIDTARAA0AgBCADQQJ0IgFqIAAgAWooAgA2AgAgA0EBayIDIAlODQALCyAJQQBKBEAgAiALQQJ0aiEDIAlBAWsiCCEMA0AgBCAIIAMCfyAFIAIgDCIBQQJ0IglqKAIAIA1rspQiBotDAAAAT10EQCAGqAwBC0GAgICAeAtBAnRqIgooAgBBAWsiC2tBAnRqIAAgCWooAgA2AgAgCiALNgIAIAFBAWshDCABDQALCwsEAEEACw==";var Mo=class{};Nt(Mo,"DepthMapRange",1<<16),Nt(Mo,"MemoryPageSize",65536),Nt(Mo,"BytesPerFloat",4),Nt(Mo,"BytesPerInt",4);function D2(n){let t,e,r,o,i,a,s,l,d,c,u,p,f,h,m,y;function g(T,C){let P=performance.now();u||(u=new Uint32Array(p.DepthMapRange));let I=new Float32Array(d,a,16);for(let B=0;B<16;B++)I[B]=T[B];new Uint32Array(d,l+e*4,p.DepthMapRange).set(u),t.exports.sortIndexes(o,i,l,a,s,C[0],C[1],C[2],p.DepthMapRange,r,r,e);let R=performance.now(),D=new Uint32Array(r),z=D.buffer;D.set(new Uint32Array(d,s,r)),n.postMessage({sortDone:!0,splatSortCount:r,splatRenderCount:r,sortTime:R-P,indexesBuffer:z},[z])}function x(T,C,P){let I=new Float32Array(d,i,e*3);r=0;let E=new Uint32Array(d,o,e);for(let R=0;R<P.length-1;R++){let D=C[R],z=T[R].elements,B;D?.length>0&&(B=D.map(V=>V.type==="Box"?_(V):M(V)));for(let V=P[R];V<P[R+1];V++){let j=f[V*3],H=f[V*3+1],X=f[V*3+2];if(!B||w(j,H,X,B)){let $=1/(z[3]*j+z[7]*H+z[11]*X+z[15]);I[r*3]=(z[0]*j+z[4]*H+z[8]*X+z[12])*$,I[r*3+1]=(z[1]*j+z[5]*H+z[9]*X+z[13])*$,I[r*3+2]=(z[2]*j+z[6]*H+z[10]*X+z[14])*$,E[r]=V,r++}}}}function S(T,C){let P=[],I;C?.length>0&&(I=C.map(R=>R.type==="Box"?_(R):M(R)));let E=T.length;for(let R=0;R<E;R+=3){let D=T[R],z=T[R+1],B=T[R+2];w(D,z,B,I)===!1&&P.push(R/3)}return P}function w(T,C,P,I,E){return I[E==="Intersect"?"every":"some"](R=>{let D=b(T,C,P,R.invRotationMatrix,R.cropCenter);return Array.isArray(R)?v(D.x,D.y,D.z,R):O(D.x,D.y,D.z,R)})}function b(T,C,P,I,E){let R=T-E[0],D=C-E[1],z=P-E[2],B=1/(I[3]*R+I[7]*D+I[11]*z+I[15]);return{x:(I[0]*R+I[4]*D+I[8]*z+I[12])*B+E[0],y:(I[1]*R+I[5]*D+I[9]*z+I[13])*B+E[1],z:(I[2]*R+I[6]*D+I[10]*z+I[14])*B+E[2]}}function _(T){let C=T.cropSize[0]/2,P=T.cropSize[1]/2,I=T.cropSize[2]/2,E=[T.cropCenter[0]-C,T.cropCenter[1]-P,T.cropCenter[2]-I,T.cropCenter[0]+C,T.cropCenter[1]+P,T.cropCenter[2]+I],R=A(T.cropRotation);return Object.assign(E,{invRotationMatrix:R,cropCenter:T.cropCenter})}function A(T){let C=[],P=T[0]*Math.PI/180,I=T[1]*Math.PI/180,E=T[2]*Math.PI/180,R=Math.cos(P),D=Math.sin(P),z=Math.cos(I),B=Math.sin(I),V=Math.cos(E),j=Math.sin(E),H=R*V,X=R*j,$=D*V,W=D*j;return C[0]=z*V,C[1]=-z*j,C[2]=B,C[4]=X+$*B,C[5]=H-W*B,C[6]=-D*z,C[8]=W-H*B,C[9]=$+X*B,C[10]=R*z,C[12]=0,C[13]=0,C[14]=0,C[3]=0,C[7]=0,C[11]=0,C[15]=1,C}function v(T,C,P,I){return T>=I[0]&&T<=I[3]&&C>=I[1]&&C<=I[4]&&P>=I[2]&&P<=I[5]}function M(T){let C=2/T.cropSize[0],P=2/T.cropSize[1],I=2/T.cropSize[2],E=A(T.cropRotation);return{invRadiusX:C,invRadiusY:P,invRadiusZ:I,cropCenter:T.cropCenter,invRotationMatrix:E}}function O(T,C,P,I){let E=(T-I.cropCenter[0])*I.invRadiusX,R=(C-I.cropCenter[1])*I.invRadiusY,D=(P-I.cropCenter[2])*I.invRadiusZ;return E*E+R*R+D*D<=1}n.onmessage=T=>{if(T.data.getCroppedIndexes){let C=new Uint32Array(S(new Float32Array(T.data.positions),T.data.crops)).buffer;n.postMessage({outOfBoundsIndexes:C},[C])}else if(T.data.positions)c=T.data.positions,f=new Float32Array(c),m=T.data.meshMatrixWorlds,y=T.data.cropsArray,h=T.data.meshIndexIntervals,x(m,y,h),n.postMessage({sortSetupComplete:!0});else if(T.data.sort||T.data.newMatrixWorlds||T.data.newCropsArray)(T.data.newMatrixWorlds||T.data.newCropsArray)&&(y=T.data.newCropsArray||y,m=T.data.newMatrixWorlds||m,x(m,y,h)),g(T.data.sort.view,T.data.sort.cameraPosition);else if(T.data.init){p=T.data.init.Constants,e=T.data.init.splatCount;let C=p.BytesPerInt,P=p.BytesPerFloat*3,I=new Uint8Array(T.data.init.sorterWasmBytes),E=C+P,R=e*E,D=e*p.BytesPerInt*2+p.DepthMapRange*p.BytesPerInt*2,z=p.MemoryPageSize*32,B=R+D+z,V=Math.floor(B/p.MemoryPageSize)+1,j={module:{},env:{memory:new WebAssembly.Memory({initial:V*2,maximum:V*3,shared:!0})}};WebAssembly.compile(I).then(H=>WebAssembly.instantiate(H,j)).then(H=>{t=H,o=0,i=e*C,a=i+e*P,l=a+16*p.BytesPerFloat,s=l+e*p.BytesPerInt+p.DepthMapRange*p.BytesPerInt*2,d=j.env.memory.buffer,n.postMessage({sortSetupPhase1Complete:!0})})}}}function iv(n){let t=new Worker(URL.createObjectURL(new Blob(["(",D2.toString(),")(self)"],{type:"application/javascript"}))),e=atob(nv),r=new Uint8Array(e.length);for(let o=0;o<e.length;o++)r[o]=e.charCodeAt(o);return t.postMessage({init:{sorterWasmBytes:r.buffer,splatCount:n,Constants:{BytesPerFloat:Mo.BytesPerFloat,BytesPerInt:Mo.BytesPerInt,DepthMapRange:Mo.DepthMapRange,MemoryPageSize:Mo.MemoryPageSize}}}),t}var xr=require("three");var ve=require("three");var Nu=function(){let n=new Float32Array(1),t=new Int32Array(n.buffer);return function(e){return n[0]=e,t[0]}}(),av=function(n,t,e,r){return n+(t<<8)+(e<<16)+(r<<24)};var Eu=new ve.Vector2,Rn=class extends ve.Mesh{constructor(e,r,o,i,a=!1,s=1,l,d){super(o,i);this.splatCount=r,this.meshIndexIntervals=l,this.meshMatrixWorlds=d,this.splatBuffers=e,this.geometry=o,this.material=i,this.splatDataTextures=null,this.halfPrecisionCovariancesOnGPU=a,this.devicePixelRatio=s,this.resetLocalSplatDataAndTexturesFromSplatBuffer()}static buildMesh(e,r,o=!1,i=1,a,s){let l=Rn.buildGeomtery(r),d=Rn.buildMaterial(a);return new Rn(e,r,l,d,o,i,a,s)}static buildMaterial(e){let r=`
|
|
2627
|
+
precision highp float;
|
|
2628
|
+
#include <common>
|
|
2629
|
+
|
|
2630
|
+
attribute uint splatIndex;
|
|
2631
|
+
|
|
2632
|
+
uniform highp sampler2D covariancesTexture;
|
|
2633
|
+
uniform highp usampler2D centersColorsTexture;
|
|
2634
|
+
uniform vec2 focal;
|
|
2635
|
+
uniform vec2 viewport;
|
|
2636
|
+
uniform vec2 basisViewport;
|
|
2637
|
+
uniform vec2 covariancesTextureSize;
|
|
2638
|
+
uniform vec2 centersColorsTextureSize;
|
|
2639
|
+
uniform highp sampler2D meshMatrixWorldsTexture;
|
|
2640
|
+
uniform uint meshIndexIntervals[257];
|
|
2641
|
+
uniform float orthoZoom;
|
|
2642
|
+
|
|
2643
|
+
varying vec4 vColor;
|
|
2644
|
+
varying vec2 vUv;
|
|
2645
|
+
|
|
2646
|
+
varying vec2 vPosition;
|
|
2647
|
+
|
|
2648
|
+
const vec4 encodeNorm4 = vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0);
|
|
2649
|
+
const uvec4 mask4 = uvec4(uint(0x000000FF), uint(0x0000FF00), uint(0x00FF0000), uint(0xFF000000));
|
|
2650
|
+
const uvec4 shift4 = uvec4(0, 8, 16, 24);
|
|
2651
|
+
vec4 uintToRGBAVec (uint u) {
|
|
2652
|
+
uvec4 urgba = mask4 & u;
|
|
2653
|
+
urgba = urgba >> shift4;
|
|
2654
|
+
vec4 rgba = vec4(urgba) * encodeNorm4;
|
|
2655
|
+
return rgba;
|
|
2656
|
+
}
|
|
2657
|
+
|
|
2658
|
+
vec2 getDataUV(in int stride, in int offset, in vec2 dimensions) {
|
|
2659
|
+
vec2 samplerUV = vec2(0.0, 0.0);
|
|
2660
|
+
float d = float(splatIndex * uint(stride) + uint(offset)) / dimensions.x;
|
|
2661
|
+
samplerUV.y = float(floor(d)) / dimensions.y;
|
|
2662
|
+
samplerUV.x = fract(d);
|
|
2663
|
+
return samplerUV;
|
|
2664
|
+
}
|
|
2665
|
+
|
|
2666
|
+
void main () {
|
|
2667
|
+
uvec4 sampledCenterColor = texture(centersColorsTexture, getDataUV(1, 0, centersColorsTextureSize));
|
|
2668
|
+
vec3 splatCenter = uintBitsToFloat(uvec3(sampledCenterColor.gba));
|
|
2669
|
+
vColor = uintToRGBAVec(sampledCenterColor.r);
|
|
2670
|
+
|
|
2671
|
+
vPosition = position.xy * 2.0;
|
|
2672
|
+
|
|
2673
|
+
uint meshIndex;
|
|
2674
|
+
for (int i = 1; i < 257; i++) {
|
|
2675
|
+
if (splatIndex < meshIndexIntervals[i]) {
|
|
2676
|
+
meshIndex = uint(i - 1);
|
|
2677
|
+
break;
|
|
2678
|
+
}
|
|
2679
|
+
}
|
|
2680
|
+
|
|
2681
|
+
float strideMulmeshIndex = float(4u*meshIndex);
|
|
2682
|
+
float meshMatrixWorldsTextureLength = float(256*4);
|
|
2683
|
+
|
|
2684
|
+
mat4 modelMat = mat4(
|
|
2685
|
+
texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+0.0)/meshMatrixWorldsTextureLength, 0)),
|
|
2686
|
+
texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+1.0)/meshMatrixWorldsTextureLength, 0)),
|
|
2687
|
+
texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+2.0)/meshMatrixWorldsTextureLength, 0)),
|
|
2688
|
+
texture(meshMatrixWorldsTexture, vec2((strideMulmeshIndex+3.0)/meshMatrixWorldsTextureLength, 0))
|
|
2689
|
+
);
|
|
2690
|
+
mat4 modelViewMat = viewMatrix * modelMat;
|
|
2691
|
+
vec4 viewCenter = modelViewMat * vec4(splatCenter, 1.0);
|
|
2692
|
+
vec4 clipCenter = projectionMatrix * viewCenter;
|
|
2693
|
+
|
|
2694
|
+
vec2 sampledCovarianceA = texture(covariancesTexture, getDataUV(3, 0, covariancesTextureSize)).rg;
|
|
2695
|
+
vec2 sampledCovarianceB = texture(covariancesTexture, getDataUV(3, 1, covariancesTextureSize)).rg;
|
|
2696
|
+
vec2 sampledCovarianceC = texture(covariancesTexture, getDataUV(3, 2, covariancesTextureSize)).rg;
|
|
2697
|
+
|
|
2698
|
+
vec3 cov3D_M11_M12_M13 = vec3(sampledCovarianceA.rg, sampledCovarianceB.r);
|
|
2699
|
+
vec3 cov3D_M22_M23_M33 = vec3(sampledCovarianceB.g, sampledCovarianceC.rg);
|
|
2700
|
+
|
|
2701
|
+
// Compute the 2D covariance matrix from the upper-right portion of the 3D covariance matrix
|
|
2702
|
+
mat3 Vrk = mat3(
|
|
2703
|
+
cov3D_M11_M12_M13.x, cov3D_M11_M12_M13.y, cov3D_M11_M12_M13.z,
|
|
2704
|
+
cov3D_M11_M12_M13.y, cov3D_M22_M23_M33.x, cov3D_M22_M23_M33.y,
|
|
2705
|
+
cov3D_M11_M12_M13.z, cov3D_M22_M23_M33.y, cov3D_M22_M23_M33.z
|
|
2706
|
+
);
|
|
2707
|
+
float s = 1.0 / (viewCenter.z * viewCenter.z);
|
|
2708
|
+
|
|
2709
|
+
mat3 W = transpose(mat3(modelViewMat));
|
|
2710
|
+
mat3 T = orthoZoom > 0.0 ? W : W * mat3(
|
|
2711
|
+
focal.x / viewCenter.z, 0., -(focal.x * viewCenter.x) * s,
|
|
2712
|
+
0., focal.y / viewCenter.z, -(focal.y * viewCenter.y) * s,
|
|
2713
|
+
0., 0., 0.
|
|
2714
|
+
);
|
|
2715
|
+
mat3 cov2Dm = transpose(T) * Vrk * T;
|
|
2716
|
+
cov2Dm[0][0] += 0.3;
|
|
2717
|
+
cov2Dm[1][1] += 0.3;
|
|
2718
|
+
|
|
2719
|
+
// We are interested in the upper-left 2x2 portion of the projected 3D covariance matrix because
|
|
2720
|
+
// we only care about the X and Y values. We want the X-diagonal, cov2Dm[0][0],
|
|
2721
|
+
// the Y-diagonal, cov2Dm[1][1], and the correlation between the two cov2Dm[0][1]. We don't
|
|
2722
|
+
// need cov2Dm[1][0] because it is a symetric matrix.
|
|
2723
|
+
vec3 cov2Dv = vec3(cov2Dm[0][0], cov2Dm[0][1], cov2Dm[1][1]);
|
|
2724
|
+
|
|
2725
|
+
vec3 ndcCenter = clipCenter.xyz / clipCenter.w;
|
|
2726
|
+
|
|
2727
|
+
// We now need to solve for the eigen-values and eigen vectors of the 2D covariance matrix
|
|
2728
|
+
// so that we can determine the 2D basis for the splat. This is done using the method described
|
|
2729
|
+
// here: https://people.math.harvard.edu/~knill/teaching/math21b2004/exhibits/2dmatrices/index.html
|
|
2730
|
+
//
|
|
2731
|
+
// This is a different approach than in the original work at INRIA. In that work they compute the
|
|
2732
|
+
// max extents of the 2D covariance matrix in screen space to form an axis aligned bounding rectangle
|
|
2733
|
+
// which forms the geometry that is actually rasterized. They then use the inverse 2D covariance
|
|
2734
|
+
// matrix (called 'conic') to determine fragment opacity.
|
|
2735
|
+
float a = cov2Dv.x;
|
|
2736
|
+
float d = cov2Dv.z;
|
|
2737
|
+
float b = cov2Dv.y;
|
|
2738
|
+
float D = a * d - b * b;
|
|
2739
|
+
float trace = a + d;
|
|
2740
|
+
float traceOver2 = 0.5 * trace;
|
|
2741
|
+
float term2 = sqrt(trace * trace / 4.0 - D);
|
|
2742
|
+
float eigenValue1 = traceOver2 + term2;
|
|
2743
|
+
float eigenValue2 = max(traceOver2 - term2, 0.01);
|
|
2744
|
+
|
|
2745
|
+
const float maxSplatSize = 1024.0;
|
|
2746
|
+
vec2 eigenVector1 = normalize(vec2(b, eigenValue1 - a));
|
|
2747
|
+
// since the eigen vectors are orthogonal, we derive the second one from the first
|
|
2748
|
+
vec2 eigenVector2 = vec2(eigenVector1.y, -eigenVector1.x);
|
|
2749
|
+
vec2 basisVector1 = eigenVector1 * min(sqrt(2.0 * eigenValue1), maxSplatSize);
|
|
2750
|
+
vec2 basisVector2 = eigenVector2 * min(sqrt(2.0 * eigenValue2), maxSplatSize);
|
|
2751
|
+
|
|
2752
|
+
vec2 ndcOffset = vec2(vPosition.x * basisVector1 + vPosition.y * basisVector2) * basisViewport;
|
|
2753
|
+
|
|
2754
|
+
if (orthoZoom > 0.0) {
|
|
2755
|
+
ndcOffset *= orthoZoom;
|
|
2756
|
+
}
|
|
2757
|
+
|
|
2758
|
+
gl_Position = vec4(ndcCenter.xy + ndcOffset, ndcCenter.z, 1.0);
|
|
2759
|
+
}`,o=`
|
|
2760
|
+
precision highp float;
|
|
2761
|
+
#include <common>
|
|
2762
|
+
|
|
2763
|
+
uniform vec3 debugColor;
|
|
2764
|
+
|
|
2765
|
+
varying vec4 vColor;
|
|
2766
|
+
varying vec2 vUv;
|
|
2767
|
+
|
|
2768
|
+
varying vec2 vPosition;
|
|
2769
|
+
layout(location = 1) out vec4 gVelocity;
|
|
2770
|
+
|
|
2771
|
+
void main () {
|
|
2772
|
+
// compute the negative squared distance from the center of the splat to the
|
|
2773
|
+
// current fragment in the splat's local space.
|
|
2774
|
+
float A = -dot(vPosition, vPosition);
|
|
2775
|
+
if (A < -4.0) discard;
|
|
2776
|
+
vec3 color = vColor.rgb;
|
|
2777
|
+
A = exp(A) * vColor.a;
|
|
2778
|
+
gl_FragColor = vec4(color.rgb, A);
|
|
2779
|
+
gVelocity = vec4(0.0); // so it is ignored by TAA
|
|
2780
|
+
}`,i={covariancesTexture:{type:"t",value:null},centersColorsTexture:{type:"t",value:null},meshIndexIntervals:{value:e},meshMatrixWorldsTexture:{type:"t",value:null},focal:{type:"v2",value:new ve.Vector2},viewport:{type:"v2",value:new ve.Vector2},basisViewport:{type:"v2",value:new ve.Vector2},debugColor:{type:"v3",value:new ve.Color},covariancesTextureSize:{type:"v2",value:new ve.Vector2(1024,1024)},centersColorsTextureSize:{type:"v2",value:new ve.Vector2(1024,1024)},orthoZoom:{type:"f",value:-1}};return new ve.ShaderMaterial({uniforms:i,vertexShader:r,fragmentShader:o,transparent:!0,alphaTest:1,blending:ve.NormalBlending,depthTest:!0,depthWrite:!1,side:ve.DoubleSide})}static buildGeomtery(e){let r=new ve.BufferGeometry;r.setIndex([0,1,2,0,2,3]);let o=new Float32Array(4*3),i=new ve.BufferAttribute(o,3);r.setAttribute("position",i),i.setXYZ(0,-1,-1,0),i.setXYZ(1,-1,1,0),i.setXYZ(2,1,1,0),i.setXYZ(3,1,-1,0),i.needsUpdate=!0;let a=new ve.InstancedBufferGeometry().copy(r),s=new Uint32Array(e),l=new ve.InstancedBufferAttribute(s,1,!1);return l.setUsage(ve.DynamicDrawUsage),a.setAttribute("splatIndex",l),a.instanceCount=e,a}resetLocalSplatDataAndTexturesFromSplatBuffer(){this.updateLocalSplatDataFromSplatBuffer(),this.allocateAndStoreLocalSplatDataInTextures()}updateLocalSplatDataFromSplatBuffer(){this.splatBuffers.forEach(i=>i.buildPreComputedBuffers()),this.covariances=new Float32Array(this.splatCount*6),this.colors=new Uint8Array(this.splatCount*4),this.centers=new Float32Array(this.splatCount*3);let e=0,r=0,o=0;for(let i of this.splatBuffers){let a=i.nsplats;this.colors.subarray(e,e+a*4).set(i.colorsA),e+=a*4,this.centers.subarray(r,r+a*3).set(i.decoded.xyz.denormDequant().data),r+=a*3,this.covariances.subarray(o,o+a*6).set(new Float32Array(i.precomputedCovarianceBufferData)),o+=a*6}}allocateAndStoreLocalSplatDataInTextures(){let o=this.splatCount,i=new ve.Vector2(4096,1024);for(;i.x*i.y*2<o*6;)i.y*=2;let a=new ve.Vector2(4096,1024);for(;a.x*a.y*4<o*4;)a.y*=2;let s,l;if(this.halfPrecisionCovariancesOnGPU){l=new Uint16Array(i.x*i.y*2);for(let h=0;h<this.covariances.length;h++)l[h]=ve.DataUtils.toHalfFloat(this.covariances[h]);s=new ve.DataTexture(l,i.x,i.y,ve.RGFormat,ve.HalfFloatType)}else l=new Float32Array(i.x*i.y*2),l.set(this.covariances),s=new ve.DataTexture(l,i.x,i.y,ve.RGFormat,ve.FloatType);s.needsUpdate=!0,this.material.uniforms.covariancesTexture.value=s,this.material.uniforms.covariancesTextureSize.value.copy(i);let d=new Uint32Array(a.x*a.y*4);for(let h=0;h<o;h++){let m=h*4,y=h*3,g=h*4;d[g]=av(this.colors[m],this.colors[m+1],this.colors[m+2],this.colors[m+3]),d[g+1]=Nu(this.centers[y]),d[g+2]=Nu(this.centers[y+1]),d[g+3]=Nu(this.centers[y+2])}let c=new ve.DataTexture(d,a.x,a.y,ve.RGBAIntegerFormat,ve.UnsignedIntType);c.internalFormat="RGBA32UI",c.needsUpdate=!0,this.material.uniforms.centersColorsTexture.value=c,this.material.uniforms.centersColorsTextureSize.value.copy(a);let u=256*4,p=new Float32Array(256*16);for(let h=0;h<this.meshMatrixWorlds.length;h++)p.set(this.meshMatrixWorlds[h].elements,h*16);let f=new ve.DataTexture(p,u,1,ve.RGBAFormat,ve.FloatType);f.needsUpdate=!0,this.material.uniforms.meshMatrixWorldsTexture.value=f,this.material.uniformsNeedUpdate=!0,this.splatDataTextures={covariances:{data:l,texture:s,size:i},centerColors:{data:d,texture:c,size:a},meshMatrixWorlds:{data:p,texture:f}}}updateIndexes(e,r){let o=this.geometry;o.attributes.splatIndex.set(e),o.attributes.splatIndex.needsUpdate=!0,o.instanceCount=r}updateUniforms(e,r,o,i){this.splatCount>0&&(Eu.set(e.x*this.devicePixelRatio,e.y*this.devicePixelRatio),this.material.uniforms.viewport.value.copy(Eu),this.material.uniforms.basisViewport.value.set(2/Eu.x,2/Eu.y),this.material.uniforms.focal.value.set(r,o),this.material.uniforms.orthoZoom.value=i,this.material.uniformsNeedUpdate=!0)}getSplatDataTextures(){return this.splatDataTextures}getSplatCount(){return this.splatCount}getCenters(){return this.centers}getColors(){return this.colors}getCovariances(){return this.covariances}};var yl=class{constructor(t={}){Nt(this,"updateSplatMeshUniforms",function(){let t=new xr.Vector2;return function(){if(this.splatMesh===null)return;this.splatMesh.getSplatCount()>0&&(this.renderer.getSize(t),this.cameraFocalLengthX=this.camera.projectionMatrix.elements[0]*this.devicePixelRatio*t.x*.45,this.cameraFocalLengthY=this.camera.projectionMatrix.elements[5]*this.devicePixelRatio*t.y*.45,this.splatMesh.updateUniforms(t,this.cameraFocalLengthX,this.cameraFocalLengthY,this.camera.isPerspectiveCamera?-1:this.camera.zoom*this.devicePixelRatio))}}());Nt(this,"updateView",function(){let t=new xr.Matrix4,e=[],r=new xr.Vector3(0,0,-1),o=new xr.Vector3(0,0,-1),i=new xr.Vector3,a=new xr.Vector3;return function(s=!1,l=!1){let d=this.updateMatrixWorldsInWorkerIfNeeded(),c=this.cropsChanged();if(!s){o.set(0,0,-1).applyQuaternion(this.camera.quaternion);let p=!1,f=!1;if(o.dot(r)<=.95&&(p=!0),a.copy(this.camera.position).sub(i).length()>=1&&(f=!0),!p&&!f&&!d&&!c)return}i.copy(this.camera.position),r.copy(o),t.copy(this.camera.matrixWorld).invert(),t.premultiply(this.camera.perspCamera.projectionMatrix),e[0]=this.camera.position.x,e[1]=this.camera.position.y,e[2]=this.camera.position.z;let u={sort:{view:t.elements,cameraPosition:e,splatRenderCount:this.splatRenderCount,splatSortCount:this.splatRenderCount},...d?{newMatrixWorlds:this.meshMatrixWorlds}:{},...c?{newCropsArray:this.cropsArray}:{}};this.sortRunning?this.queuedMessage=u:(this.queuedMessage=null,this.sortRunning=!0,this.sortWorker.postMessage(u))}}());this.scene=t.scene,this.currentPage=null,this.renderer=t.renderer,this.devicePixelRatio=window.devicePixelRatio,this.sortWorker=null,this.splatRenderCount=0,this.splatSortCount=0,this.splatMesh=null,this.sortRunning=!1,this.splatRenderingInitialized=!1,this.meshMatrixWorlds=null,this.meshMatrixWorldsOld=null,this.cropsArray=null,this.splatEntries=null,this.queuedMessage=null}get camera(){return this.scene.activeCamera}reloadSplats(){this.splatRenderingInitialized=!1;let t=this.loadSplat();this.renderer.pipeline.opaquePass.splatViewer=t?this:null}loadSplat(t={}){this.activePage=this.scene.activePage,t.position&&(t.position=new xr.Vector3().fromArray(t.position)),t.orientation&&(t.orientation=new xr.Quaternion().fromArray(t.orientation)),t.halfPrecisionCovariances=!!t.halfPrecisionCovariances;let e=[];if(this.splatEntries=e,this.activePage.traverseEntity(a=>{if(a.data.type==="Splat"){let s=a.visible;a.traverseAncestors(l=>{s&&(s=l.visible)}),s&&e.push(a)}}),e.length===0)return this.splatMesh=null,!1;this.meshMatrixWorlds=e.map(a=>a.matrixWorld),this.meshMatrixWorldsOld=e.map(a=>a.matrixWorld.clone()),this.cropsArray=e.map(a=>a.data.crops.map(s=>s.data));let r=e.map(a=>new Bn(new Uint8Array(a.data.buffer).buffer)),o=0,i=[0];for(let a of r)o+=a.getSplatCount(),i.push(o);return this.setupSplatMesh(r,o,t.position,t.orientation,t.halfPrecisionCovariances,this.devicePixelRatio,i,this.meshMatrixWorlds),this.setupSortWorker(o),!0}updateMatrixWorldsInWorkerIfNeeded(){let t=this.splatDataTextures.meshMatrixWorlds.data;for(let e=0;e<this.meshMatrixWorlds.length;e++)t.set(this.meshMatrixWorlds[e].elements,e*16);return this.splatDataTextures.meshMatrixWorlds.texture.needsUpdate=!0,this.meshMatrixWorlds.every((e,r)=>e.equals(this.meshMatrixWorldsOld[r]))?!1:(this.meshMatrixWorldsOld=this.meshMatrixWorlds.map(e=>e.clone()),!0)}cropsChanged(){let t=!1;return this.splatEntries.forEach((e,r)=>{e.data.crops.forEach((o,i)=>{this.cropsArray[r][i]===void 0?(t=!0,this.cropsArray[r][i]=o.data):Object.entries(o.data).forEach(([a,s])=>{Array.isArray(s)&&s.some((l,d)=>l!==this.cropsArray[r][i][a][d])?(t=!0,this.cropsArray[r][i][a]=s):s!==this.cropsArray[r][i]?.[a]&&(t=!0,this.cropsArray[r][i][a]=s)})}),e.data.crops.length!==this.cropsArray[r]?.length&&(this.cropsArray[r].length=e.data.crops.length,t=!0)}),t}setupSplatMesh(t,e,r=new xr.Vector3,o=new xr.Quaternion,i=!1,a=1,s,l){this.splatMesh=Rn.buildMesh(t,e,i,a,s,l),this.splatMesh.position.copy(r),this.splatMesh.quaternion.copy(o),this.splatMesh.frustumCulled=!1,this.splatMesh.renderOrder=10,this.updateSplatMeshUniforms(),this.splatRenderCount=e}setupSortWorker(t){this.sortWorker=iv(t),this.sortWorker.onmessage=e=>{e.data.sortDone?(this.sortRunning=!1,this.splatMesh?.updateIndexes(new Uint32Array(e.data.indexesBuffer),e.data.splatRenderCount),this.lastSortTime=e.data.sortTime,this.queuedMessage&&(this.sortWorker.postMessage(this.queuedMessage),this.queuedMessage=null)):e.data.sortCanceled?this.sortRunning=!1:e.data.sortSetupPhase1Complete?this.sortWorker.postMessage({positions:this.splatMesh.getCenters().buffer,meshMatrixWorlds:this.splatMesh.meshMatrixWorlds,meshIndexIntervals:this.splatMesh.meshIndexIntervals,cropsArray:this.cropsArray}):e.data.sortSetupComplete&&(this.splatDataTextures=this.splatMesh.getSplatDataTextures(),this.updateView(!0,!0),this.splatRenderingInitialized=!0)}}update(){this.splatRenderingInitialized!==!1&&(this.updateSplatMeshUniforms(),this.updateView())}getSplatMesh(){return this.splatMesh}};var L2=new Gr.MeshBasicMaterial;L2.wireframe=!0;var sv=new Gr.Vector3,Du=class extends Gr.Scene{constructor(e,r){super();this.data=e;this.enableHelpers=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this.geometryCacheChanged=!1;this.splatViewer=null;this.entityByUuid={};this.entityIdentityToEntity={};this.toExpandCloner=new Set;this.toUpdateCloner=new Set;this.pendingCommands=[];this.pathConstraints=new Ou;this.errorPage=new Nn("fdasfa",{...Vo.defaultData,name:""});this.invisibleObjects=new In("jflkdsafjasdifjaslk",{...vc.defaultData,visible:!1,name:"buildin invisible"});this.needsRecomputeInstances=!1;this.init(e,r),this.matrixAutoUpdate=!1}markGeometryCacheDirty(){this.geometryCacheChanged=!0}markNeedsUpdateRendererDirty(){this.needsTransmissionDirty=!0,this.needsNormalDirty=!0}needsTransmission(){return this.needsTransmissionDirty&&(this._needsTransmission=Ox(this),this.needsTransmissionDirty=!1),this._needsTransmission}needsNormal(){return this.needsNormalDirty&&(this._needsNormal=Px(this),this.needsNormalDirty=!1),this._needsNormal}registerInstanceAndSetUuid(e){let r=e.identity.join("-"),o=this.entityIdentityToEntity[r];o&&(e.uuid=o.uuid),this.entityIdentityToEntity[r]=e,this.entityByUuid[e.uuid]=e}markPenumbraSizeDirty(){for(let e of this.children)e instanceof Nn&&(e.penumbraSizeArrayCache=null)}findInstance(e){return this.entityIdentityToEntity[e.join("-")]}get bgColor(){return this.activePage.bgColor}get postprocessing(){return this.activePage.data.postprocessing}getWithSortKey(e){let r=this.find(e);if(r===void 0)return;let o=[],i=r;for(;i!==this;){let a=i;i=i.parent;let s=i.children.indexOf(a);o.splice(0,0,s)}return{entity:r,sortKey:o}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(i)}return r.sort((o,i)=>ef(o.sortKey,i.sortKey)),r.map(o=>o.entity)}nonExistOrDescendantOf(e,r){let o=this.find(e);if(o===void 0)return!0;for(;o;){if(o.uuid===r)return!0;o=o.parent}return!1}find(e){if(this.activePage&&this.activePage.personalCamera.parent){if(e==="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera")return this.activePage.personalCamera;if(e===ln)return this.activePage.personalCamera}if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}debugEnsureEntity(e){let r=this.find(e);if(r){if(Array.isArray(r.identity)&&this.findInstance(r.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(r=>{this.toExpandCloner.add(r)})}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}updateByLibOp(e,r){e.path.length===1&&e.path[0]==="components"&&e.type===1&&this.createChildrenObjects([{...e.data.asset,id:e.id}],this.invisibleObjects,r)}updateTreeByOp(e,r){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,r);i.updateVisible(),i.resetBBoxNeedsUpdate(),Mn(i)&&os(i.parent)&&(i.invalidateUpstreamBooleanData(),i.parent.invalidateDownstreamBooleanData().recomputeBoolean()),this.markNeedsRecomputeInstancesForAncessors(o),this.markNeedsRecomputeInstancesForChildren(i),this.markToExpandCloner(i),this.markPenumbraSizeDirty(),i.updatePathSnapping()}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),this.markPenumbraSizeDirty(),o.parent.remove(o),os(o.parent)&&(o.parent.invalidateUpstreamBooleanData(),o.parent.invalidateDownstreamBooleanData().recomputeBoolean()),Mn(o)&&(o.freeBooleanPointer(),i instanceof Br&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o instanceof us&&o.detachShape(),this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(o),this.pathConstraints.removeDependencies(o.uuid),o.updatePathSnapping()}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 a=e.parent===null?this:this.find(e.parent);if(a===void 0)throw new Error("unexpected");a.add(o),this.markNeedsRecomputeInstancesForAncessors(a),this.markToExpandCloner(o),o.invalidateClonerTransform(o),o.updateVisible(),o.resetBBoxNeedsUpdate(),this.markPenumbraSizeDirty();let s=e.localIndex;a.children.splice(s,0,a.children.pop()),Mn(o)&&(o.invalidateUpstreamBooleanData(),os(o.parent)?o.parent.invalidateDownstreamBooleanData().recomputeBoolean():i instanceof Br&&i.invalidateDownstreamBooleanData().recomputeBoolean()),o.updatePathSnapping()}this.markNeedsUpdateRendererDirty(),this.markGeometryCacheDirty()}get playPage(){return this.find(this.data.publish.playPage)??this.errorPage}updatePage(e){this.activePage&&this.activePage.onDeactive(),this.activePage=this.errorPage;for(let r of this.children)r instanceof Nn&&(r.visible=r.uuid===e,r.visible&&(this.activePage=r,this.activePage.onActive(this)));this.activePage!==this.splatViewer?.activePage&&this.reloadSplats()}updateEntityByOp(e,r,o,i){if(r.type===0){if(("overrides"in r.props||"component"in r.props)&&this.markNeedsRecomputeInstances(),"visible"in r.props&&this.markPenumbraSizeDirty(),r.path.includes("overrides")&&"states"in r.props){let{rest:s}=r.props;r={...r,props:s},this.markNeedsRecomputeInstances()}r.path[0]==="pathSnapping"&&r.props.pathId!==void 0&&this.pathConstraints.setConstraint(e,r.props.pathId)}let a=this.find(e);if(a)try{Ax(a,r,o,{scene:this,shared:i}),a instanceof St&&a.updateGeometryGroupsIfNeeded()}catch(s){console.error(s)}}get activeCamera(){return this.activePage.activeCamera}switchActiveCamera(e){this.activePage.switchActiveCamera(e)}isInvisibleObjects(e){return e===this.invisibleObjects||e.hasAnccestor(this.invisibleObjects)}init(e,r){let o=Object.entries(r.data.lib.components).map((i,a)=>({data:i[1].asset.data,children:i[1].asset.children,id:i[0],fi:a}));this.invisibleObjects.updateState(this.invisibleObjects.data,{scene:this,shared:r}),this.add(this.invisibleObjects),this.createChildrenObjects(o,this.invisibleObjects,r),this.createChildrenObjects(e.objects,this,r),this.updatePage(e.publish.playPage),this.activePage.switchToPlayCamera(),this.expandInstances(r,!0),this.traverseEntity(i=>{os(i)&&i.recomputeBoolean(),i instanceof $o&&i.updateUp()}),this.doPendingExpandCloner(),this.applyPendingCommands()}markNeedsRecomputeInstances(){this.needsRecomputeInstances=!0}markNeedsRecomputeInstancesForChildren(e){e.traverseEntity(r=>{(r.data.type==="Component"||r.data.type==="Instance")&&this.markNeedsRecomputeInstances()})}markNeedsRecomputeInstancesForAncessors(e){Oe.is(e)&&(e.data.type==="Component"&&this.markNeedsRecomputeInstances(),e.traverseAncestors(r=>{Oe.is(r)&&r.data.type==="Component"&&this.markNeedsRecomputeInstances()}))}relativeizeInner(e,r,o,i,a,s,l){if(e){let d=i.find(e);d&&d!==i&&a.forInstancesRec(c=>{c.data=tn(c.data,u=>{let p=u.events.data(l.id),f=c.goUp(s);if(f){let h=[...vl(f.identity),e].join("-"),m=this.entityIdentityToEntity[h];if(m){let y=m.uuid,g=gt.zoom(p,r);g[o]=y}else{if(!1)debugger;console.warn("cannot find instance")}}}).data})}}rewriteActions(e,r,o,i,a,s){e.forEach(l=>{l.data.type==="Transition"?this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s):l.data.type==="Animation"&&this.relativeizeInner(l.data.object,[...r,l.id],"object",o,i,a,s)})}rewriteEventsBeforeGoToPlayMode(){this.traverseEntity(e=>{if(e instanceof Yo&&typeof e.identity=="string"&&e.data.type==="Component")return e.traverseEntity((r,o)=>{r.data.events.forEach(i=>{if(i.data.type==="GameControl"){let a=!1;if(r.forInstancesRec(s=>{s.data=tn(s.data,l=>{s.isInstanceRoot||(l.events.delete(i.id),a=!0)}).data}),a===!1)for(let s of _c.list)this.rewriteActions(i.data.gameActions[s],["gameActions",s],e,r,o,i)}else i.data.type==="Conditional"?(i.data.condition.type==="Distance"?(this.relativeizeInner(i.data.condition.fromObject,["condition"],"fromObject",e,r,o,i),this.relativeizeInner(i.data.condition.toObject,["condition"],"toObject",e,r,o,i)):i.data.condition.type==="State"?this.relativeizeInner(i.data.condition.object,["condition"],"object",e,r,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,r,o,i),i.data.condition.rOperand.type==="Property"&&this.relativeizeInner(i.data.condition.rOperand.value[0],["condition","rOperand","value"],0,e,r,o,i)),this.rewriteActions(i.data.inActions,["inActions"],e,r,o,i),this.rewriteActions(i.data.outActions,["outActions"],e,r,o,i)):"actions"in i.data&&this.rewriteActions(i.data.actions,["actions"],e,r,o,i)})}),!0})}expandInstances(e,r,o){let i=new Set;this.traverseEntity(a=>{if(a instanceof Yo&&a.isInstanceRoot)return a.expandInstanceChildren({scene:this,shared:e,pendingDeletes:i}),r||a.resetBBoxNeedsUpdate(),o&&a.traverseEntity(s=>{o.addClip(s)}),!0});for(let a of i)this.disposeAndUnregisterEntityRecursivelyIfNotReregistered(a),Tu(a)}recomputeInstances(e,r){this.needsRecomputeInstances&&(this.needsRecomputeInstances=!1,this.traverseEntity(o=>{o instanceof Yo&&o.isInstanceRoot&&(o.component=void 0)}),this.expandInstances(e,!1,r))}disposeAndUnregisterEntityRecursivelyIfNotReregistered(e){e.traverseEntity(r=>{let o=typeof r.identity=="string"?r.identity:r.identity.join("-");this.entityIdentityToEntity[o]===r&&(delete this.entityByUuid[r.uuid],delete this.entityIdentityToEntity[o]),r.dispose()})}clearScene(){for(let e of this.children)Oe.is(e)&&e.disposeRecursively();this.children.length=0}resetAfterClear(e,r){this.init(e,r)}raycast(e){return this.raycast1(e,!1)}raycast1(e,r){let o=[],i=a=>{for(let s of a.children){let l=s.cloner;if(Oe.is(s)&&!s.raycastLock&&(s.visible||l?.object.data.visible))if(r===!0&&s.isInstanceRoot){let d=[];if(e.intersectObject(s,!0,d),d.length){let c=d[0];c.object=s,c.point.applyMatrix4(c.object.matrixWorld);let u=s.matrixWorld.clone().invert();c.point.applyMatrix4(u),o.push(c)}}else(Mn(s)||dl(s)&&this.enableHelpers&&s.objectHelper.visible)&&(e.intersectObject(s,!1,o),ml(s,e,o)),i(s)}};return i(this),o}raycastWithClones(e){let r=[],o=i=>{for(let a of i.children){let s=a.cloner;Oe.is(a)&&(a.visible||s?.object.data.visible)&&((Mn(a)||dl(a)&&this.enableHelpers&&a.objectHelper.visible)&&(e.intersectObject(a,!1,r),ml(a,e,r,!0)),o(a))}};return o(this),r}forEachEntity(e){for(let r of this.children)Oe.is(r)&&e(r)}traverseConcreteEntity(e){for(let r of this.children)Oe.is(r)&&r.isConcreteEntity&&r.traverseEntity(e)}traverseEntity(e){for(let r of this.children)Oe.is(r)&&r.traverseEntity(e)}updateFont(e,r){this.traverseEntity(o=>{if(o instanceof St&&o.data.type==="Mesh"&&o.data.geometry.type==="TextGeometry"&&o.data.geometry.font===e){let i=o.geometry,a=o.data.geometry;i.updateFont(e,r).then(()=>{i.update(a);let s=o.invalidateDownstreamBooleanData();os(s)&&s.recomputeBoolean()})}})}traverseObject(e){for(let r of this.children)ra.is(r)&&r.traverseObject(e)}traverseVisibleEntity(e){for(let r of this.children)Oe.is(r)&&r.visible&&r.traverseVisibleEntity(e)}dispose(){this.clearScene()}createChildrenObjects(e,r,o){let i=0;for(let a of e)this.createObject(a.id,a.data,a.children,r,i,o),i+=1}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createObject(e,r,o,i,a,s){let l={scene:this,shared:s},d=Pu(e,r,l);return d&&(this.entityByUuid[e]=d,i.add(d),i.children.splice(a,0,i.children.pop()),o.length>0&&(d.isInstanceRoot?console.error("instance should not have children!"):this.createChildrenObjects(o,d,s)),d.updateState(r,l),d instanceof St&&d.updateGeometryGroupsIfNeeded(),d.updateVisible(),d.cloner&&this.toExpandCloner.add(d),r.pathSnapping?.pathId&&this.pathConstraints.setConstraint(e,r.pathSnapping.pathId)),r.type==="Empty"&&r.animations&&d.traverseEntity(c=>{if(c instanceof St&&c.isSkinnedMesh){let u=c.dataPatched;if(u.bones&&u.boneInverses){let p=u.bones.map(m=>this.find(m)),f=u.boneInverses.map(m=>new Gr.Matrix4().fromArray(m)),h=new Gr.Skeleton(p,f);c.bind(h,c.bindMatrix)}}else c.matrixAutoUpdate=!0}),d}getCenter(e){let r=[];for(let i=0,a=e.length;i<a;++i){let{id:s,recursive:l}=e[i],d=this.find(s),c=l?d.recursiveBBox:d.singleBBox;r.push(...c.vertices)}let o=new Gr.Box3;return o.setFromPoints(r),o.getCenter(sv),sv}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof Ut)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)r.material[o]instanceof hr&&e(r.material[o]);else r.material instanceof hr&&e(r.material)})}updateViewPlaneSize(e,r,o=!1){this.traverseConcreteEntity(i=>{i instanceof $o&&i.setViewplaneSize(e,r,o)})}initializeSplatViewer(e){this.splatViewer=new yl({scene:this,renderer:e}),this.reloadSplats()}reloadSplats(){this.splatViewer?.reloadSplats()}};var lv=require("three/examples/jsm/loaders/DRACOLoader.js");var Vn;function B2(){return Vn||(Vn=new lv.DRACOLoader,Vn.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),Vn.decoderPending}async function R2(n){if(Vn){let t={attributeIDs:Vn.defaultAttributeIDs,attributeTypes:Vn.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await Vn.decodeGeometry(new Int8Array(n).buffer,t)}catch(r){console.error(r)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([r,o])=>({name:r,itemSize:o.itemSize,array:o.array}))}}return null}async function cv(n,t){let[e,r]=Yu(sc.deserialize(new Uint8Array(n)));Tc(e);let o=[];e.scene.objects.traverse((i,a)=>{a.type==="Mesh"&&a.geometry.type==="NonParametricGeometry"&&a.geometry.data.draco!==void 0&&o.push(a)}),o.length&&await B2();for(let i of o){let a=await R2(at(i.geometry.data.draco));if(a){a.index&&(i.geometry.data.index={array:a.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};a.attributes.forEach(({name:l,array:d,itemSize:c})=>{s[l]={array:d,itemSize:c,type:"Float32Array",normalized:!1}}),i.geometry.data.attributes=s,i.geometry.data.draco=void 0}}return t&&t(e),r.result().data}var V2=require("three"),G2=require("three/examples/jsm/utils/BufferGeometryUtils.js");function uv(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}var gl=require("three");function dv(n){let t=new Set;return n.traverse(e=>{if(e instanceof mr)if(ut(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);if(z2(e)){Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new gl.Color,specularColor:new gl.Color});let o=0;e.onBeforeCompile=(i,a)=>{r&&r(i,a),i.uniforms=Object.assign({},gl.ShaderLib.physical.uniforms,i.uniforms),e.getLayersOfType("transmission").forEach(s=>{if(i.uniforms.transmissionSamplerMap.value){let l=s.color;l&&(l.transmissionSamplerMap.value=i.uniforms.transmissionSamplerMap.value,l.transmissionSamplerSize.value=i.uniforms.transmissionSamplerSize.value,l.aspectRatio.value=_0(window.innerWidth,window.innerHeight),e.defines.IS_THREEJS_EXPORT=!0)}else o++,o<2&&(e.needsUpdate=!0)})}}else k2(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function z2(n){return n.getLayersOfType("transmission").length>0}function k2(n){let t=0;for(let e of n.layers){if(e.data.type!=="displace"&&e.data.isMask)return!0;if(e.type!=="light"&&e.type!=="fresnel"){let o=e.uniforms["f"+e.id+"_alpha"];o&&(t+=(1-t)*o.value)}}return t<1}function pv(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function fv(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let a=r;a.material instanceof Array?a.material.forEach(s=>{s.name=s.name.replace(o,i)}):a.material.isAsset||(a.material.name=a.material.name.replace(o,i))}}t.push(r.name)}),n}var hv=require("three/examples/jsm/utils/BufferGeometryUtils.js");function mv(n){let t=[];return n.traverse(e=>{e instanceof Ja&&t.push(e)}),t.forEach(e=>{let r=e.object,a=[...e.children.map(s=>{s.updateMatrix();let l;if(s.geometry!==void 0)try{l=s.geometry.clone().applyMatrix4(s.matrix)}catch(d){console.error(d)}return l!==void 0&&s.matrix.determinant()<0&&uv(l),l}).filter(s=>s!==void 0)];if(!e.parameters.hideBase&&r instanceof Ut&&a.unshift(r.geometry),a.length){let s=(0,hv.mergeBufferGeometries)(a);r instanceof Ut&&(r.geometry=s)}e.removeFromParent(),r.setFromClonerState(null,{scene:n,shared:V0})}),n}function yv(n){return n.traverse(t=>{t.matrixAutoUpdate=!0}),n}function gv(n){Object.values(n.shared.materials).forEach(t=>{Xp(t)}),n.scene.objects.traverse((t,e)=>{"material"in e?Xp(e.material):"materials"in e&&e.materials.forEach(r=>{Xp(r)})})}function Xp(n){if(typeof n=="string")return;let t=[];n.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{n.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var wv=Qt(vv(),1);function bv(n){return n.traverseMaterial(t=>{t.needsJitter=!1}),n}var Sv="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Lu=class extends Bu.Loader{load(t,e,r,o=console.error){let i=new Bu.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Sv+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Sv),i.load(t,async a=>{try{if(typeof a=="string")throw new Error("The .spline file is not binary!");let s=await this.parse(a);e(s)}catch(s){o(s)}},r,o)}async parse(t){let e=await cv(t,gv);e.version&&(0,wv.default)(e.version,"0.9.498")>0&&console.warn("Your .splinecode file is more recent than the library. Please upgrade @splinetool/loader to the latest version."),await Promise.all([j0(e)&&Kg(),J0(e)&&B0()].filter(Boolean));let r=new li(e.shared);Object.values(r.getMaterials()).forEach(a=>Object.assign(a,{isAsset:!0}));let o=new Du(e.scene,r),i=o.activeCamera;return i&&Object.assign(i,{makeDefault:!0}),o=mv(o),o=dv(o),o=pv(o),o=fv(o),o=yv(o),o=bv(o),o}};
|