@splinetool/loader 0.9.44 → 0.9.47
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.js +24 -24
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var Om=Object.create;var Rn=Object.defineProperty,Pm=Object.defineProperties,Im=Object.getOwnPropertyDescriptor,Am=Object.getOwnPropertyDescriptors,Dm=Object.getOwnPropertyNames,fc=Object.getOwnPropertySymbols,Bm=Object.getPrototypeOf,gc=Object.prototype.hasOwnProperty,Em=Object.prototype.propertyIsEnumerable;var yc=(n,t,e)=>t in n?Rn(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,P=(n,t)=>{for(var e in t||(t={}))gc.call(t,e)&&yc(n,e,t[e]);if(fc)for(var e of fc(t))Em.call(t,e)&&yc(n,e,t[e]);return n},H=(n,t)=>Pm(n,Am(t));var _m=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),xc=(n,t)=>{for(var e in t)Rn(n,e,{get:t[e],enumerable:!0})},Gm=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Dm(t))!gc.call(n,o)&&o!==e&&Rn(n,o,{get:()=>t[o],enumerable:!(r=Im(t,o))||r.enumerable});return n};var zm=(n,t,e)=>(e=n!=null?Om(Bm(n)):{},Gm(t||!n||!n.__esModule?Rn(e,"default",{value:n,enumerable:!0}):e,n));var nm=_m((Aa,im)=>{(function(n,t){typeof Aa=="object"&&typeof im<"u"?t(Aa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Aa,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,l,c,h,p,u,d,f,g,w,y,b=t[0].length,A=t.length;if(A<b)throw new TypeError("Invalid matrix: m < n");for(var N=[],v=[],k=[],L=e==="f"?A:b,m=g=u=0;m<A;m++)v[m]=new Array(L).fill(0);for(m=0;m<b;m++)k[m]=new Array(b).fill(0);var I,x=new Array(b).fill(0);for(m=0;m<A;m++)for(s=0;s<b;s++)v[m][s]=t[m][s];for(m=0;m<b;m++){for(N[m]=u,f=0,l=m+1,s=m;s<A;s++)f+=Math.pow(v[s][m],2);if(f<i)u=0;else for(d=(p=v[m][m])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,v[m][m]=p-u,s=l;s<b;s++){for(f=0,a=m;a<A;a++)f+=v[a][m]*v[a][s];for(p=f/d,a=m;a<A;a++)v[a][s]=v[a][s]+p*v[a][m]}for(x[m]=u,f=0,s=l;s<b;s++)f+=Math.pow(v[m][s],2);if(f<i)u=0;else{for(d=(p=v[m][m+1])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,v[m][m+1]=p-u,s=l;s<b;s++)N[s]=v[m][s]/d;for(s=l;s<A;s++){for(f=0,a=l;a<b;a++)f+=v[s][a]*v[m][a];for(a=l;a<b;a++)v[s][a]=v[s][a]+f*N[a]}}g<(w=Math.abs(x[m])+Math.abs(N[m]))&&(g=w)}if(r)for(m=b-1;0<=m;m--){if(u!==0){for(d=v[m][m+1]*u,s=l;s<b;s++)k[s][m]=v[m][s]/d;for(s=l;s<b;s++){for(f=0,a=l;a<b;a++)f+=v[m][a]*k[a][s];for(a=l;a<b;a++)k[a][s]=k[a][s]+f*k[a][m]}}for(s=l;s<b;s++)k[m][s]=0,k[s][m]=0;k[m][m]=1,u=N[m],l=m}if(e){if(e==="f")for(m=b;m<A;m++){for(s=b;s<A;s++)v[m][s]=0;v[m][m]=1}for(m=b-1;0<=m;m--){for(l=m+1,u=x[m],s=l;s<L;s++)v[m][s]=0;if(u!==0){for(d=v[m][m]*u,s=l;s<L;s++){for(f=0,a=l;a<A;a++)f+=v[a][m]*v[a][s];for(p=f/d,a=m;a<A;a++)v[a][s]=v[a][s]+p*v[a][m]}for(s=m;s<A;s++)v[s][m]=v[s][m]/u}else for(s=m;s<A;s++)v[s][m]=0;v[m][m]=v[m][m]+1}}for(o*=g,a=b-1;0<=a;a--)for(var C=0;C<50;C++){for(I=!1,l=a;0<=l;l--){if(Math.abs(N[l])<=o){I=!0;break}if(Math.abs(x[l-1])<=o)break}if(!I){for(h=0,c=l-(f=1),m=l;m<a+1&&(p=f*N[m],N[m]=h*N[m],!(Math.abs(p)<=o));m++)if(u=x[m],x[m]=Math.sqrt(p*p+u*u),h=u/(d=x[m]),f=-p/d,e)for(s=0;s<A;s++)w=v[s][c],y=v[s][m],v[s][c]=w*h+y*f,v[s][m]=-w*f+y*h}if(y=x[a],l===a){if(y<0&&(x[a]=-y,r))for(s=0;s<b;s++)k[s][a]=-k[s][a];break}for(g=x[l],p=(((w=x[a-1])-y)*(w+y)+((u=N[a-1])-(d=N[a]))*(u+d))/(2*d*w),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+d*(w/(p<0?p-u:p+u)-d))/g,m=l+(f=h=1);m<a+1;m++){if(u=N[m],w=x[m],d=f*u,u*=h,y=Math.sqrt(p*p+d*d),p=g*(h=p/(N[m-1]=y))+u*(f=d/y),u=-g*f+u*h,d=w*f,w*=h,r)for(s=0;s<b;s++)g=k[s][m-1],y=k[s][m],k[s][m-1]=g*h+y*f,k[s][m]=-g*f+y*h;if(y=Math.sqrt(p*p+d*d),p=(h=p/(x[m-1]=y))*u+(f=d/y)*w,g=-f*u+h*w,e)for(s=0;s<A;s++)w=v[s][m-1],y=v[s][m],v[s][m-1]=w*h+y*f,v[s][m]=-w*f+y*h}N[l]=0,N[a]=p,x[a]=g}for(m=0;m<b;m++)x[m]<o&&(x[m]=0);return{u:v,q:x,v:k}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as m1,Loader as f1}from"three";function bc(n){return Array.isArray(n)?n:[n]}var Rm=typeof global=="object"&&global&&global.Object===Object&&global,Fn=Rm;var Fm=typeof self=="object"&&self&&self.Object===Object&&self,Vm=Fn||Fm||Function("return this")(),Qe=Vm;var jm=Qe.Symbol,Ct=jm;var vc=Object.prototype,Um=vc.hasOwnProperty,km=vc.toString,_i=Ct?Ct.toStringTag:void 0;function Hm(n){var t=Um.call(n,_i),e=n[_i];try{n[_i]=void 0;var r=!0}catch{}var o=km.call(n);return r&&(t?n[_i]=e:delete n[_i]),o}var Sc=Hm;var qm=Object.prototype,Wm=qm.toString;function $m(n){return Wm.call(n)}var wc=$m;var Jm="[object Null]",Km="[object Undefined]",Lc=Ct?Ct.toStringTag:void 0;function Ym(n){return n==null?n===void 0?Km:Jm:Lc&&Lc in Object(n)?Sc(n):wc(n)}var zt=Ym;function Xm(n){return n!=null&&typeof n=="object"}var xt=Xm;var Zm="[object Symbol]";function Qm(n){return typeof n=="symbol"||xt(n)&&zt(n)==Zm}var Po=Qm;function ef(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 Vn=ef;var tf=Array.isArray,et=tf;var rf=1/0,Cc=Ct?Ct.prototype:void 0,Tc=Cc?Cc.toString:void 0;function Nc(n){if(typeof n=="string")return n;if(et(n))return Vn(n,Nc)+"";if(Po(n))return Tc?Tc.call(n):"";var t=n+"";return t=="0"&&1/n==-rf?"-0":t}var Mc=Nc;function of(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var bt=of;function nf(n){return n}var jn=nf;var sf="[object AsyncFunction]",af="[object Function]",lf="[object GeneratorFunction]",cf="[object Proxy]";function hf(n){if(!bt(n))return!1;var t=zt(n);return t==af||t==lf||t==sf||t==cf}var Io=hf;var pf=Qe["__core-js_shared__"],Un=pf;var Oc=function(){var n=/[^.]+$/.exec(Un&&Un.keys&&Un.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function uf(n){return!!Oc&&Oc in n}var Pc=uf;var df=Function.prototype,mf=df.toString;function ff(n){if(n!=null){try{return mf.call(n)}catch{}try{return n+""}catch{}}return""}var Nr=ff;var yf=/[\\^$.*+?()[\]{}|]/g,gf=/^\[object .+?Constructor\]$/,xf=Function.prototype,bf=Object.prototype,vf=xf.toString,Sf=bf.hasOwnProperty,wf=RegExp("^"+vf.call(Sf).replace(yf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Lf(n){if(!bt(n)||Pc(n))return!1;var t=Io(n)?wf:gf;return t.test(Nr(n))}var Ic=Lf;function Cf(n,t){return n==null?void 0:n[t]}var Ac=Cf;function Tf(n,t){var e=Ac(n,t);return Ic(e)?e:void 0}var It=Tf;var Nf=It(Qe,"WeakMap"),kn=Nf;var Dc=Object.create,Mf=function(){function n(){}return function(t){if(!bt(t))return{};if(Dc)return Dc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Bc=Mf;function Of(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 Ec=Of;function Pf(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Hn=Pf;var If=800,Af=16,Df=Date.now;function Bf(n){var t=0,e=0;return function(){var r=Df(),o=Af-(r-e);if(e=r,o>0){if(++t>=If)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var _c=Bf;function Ef(n){return function(){return n}}var Gc=Ef;var _f=function(){try{var n=It(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Ao=_f;var Gf=Ao?function(n,t){return Ao(n,"toString",{configurable:!0,enumerable:!1,value:Gc(t),writable:!0})}:jn,zc=Gf;var zf=_c(zc),qn=zf;function Rf(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Rc=Rf;var Ff=9007199254740991,Vf=/^(?:0|[1-9]\d*)$/;function jf(n,t){var e=typeof n;return t=t==null?Ff:t,!!t&&(e=="number"||e!="symbol"&&Vf.test(n))&&n>-1&&n%1==0&&n<t}var Wn=jf;function Uf(n,t,e){t=="__proto__"&&Ao?Ao(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Do=Uf;function kf(n,t){return n===t||n!==n&&t!==t}var Vr=kf;var Hf=Object.prototype,qf=Hf.hasOwnProperty;function Wf(n,t,e){var r=n[t];(!(qf.call(n,t)&&Vr(r,e))||e===void 0&&!(t in n))&&Do(n,t,e)}var $n=Wf;function $f(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var a=t[i],l=r?r(e[a],n[a],a,e,n):void 0;l===void 0&&(l=n[a]),o?Do(e,a,l):$n(e,a,l)}return e}var kt=$f;var Fc=Math.max;function Jf(n,t,e){return t=Fc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Fc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Ec(n,this,a)}}var Jn=Jf;function Kf(n,t){return qn(Jn(n,t,jn),n+"")}var Vc=Kf;var Yf=9007199254740991;function Xf(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Yf}var Kn=Xf;function Zf(n){return n!=null&&Kn(n.length)&&!Io(n)}var jr=Zf;function Qf(n,t,e){if(!bt(e))return!1;var r=typeof t;return(r=="number"?jr(e)&&Wn(t,e.length):r=="string"&&t in e)?Vr(e[t],n):!1}var jc=Qf;function ey(n){return Vc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&jc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var a=e[r];a&&n(t,a,r,i)}return t})}var Uc=ey;var ty=Object.prototype;function ry(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||ty;return n===e}var Bo=ry;function oy(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var kc=oy;var iy="[object Arguments]";function ny(n){return xt(n)&&zt(n)==iy}var Ea=ny;var Hc=Object.prototype,sy=Hc.hasOwnProperty,ay=Hc.propertyIsEnumerable,ly=Ea(function(){return arguments}())?Ea:function(n){return xt(n)&&sy.call(n,"callee")&&!ay.call(n,"callee")},co=ly;function cy(){return!1}var qc=cy;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wc=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,hy=Wc&&Wc.exports===Jc,$c=hy?Qe.Buffer:void 0,py=$c?$c.isBuffer:void 0,uy=py||qc,Eo=uy;var dy="[object Arguments]",my="[object Array]",fy="[object Boolean]",yy="[object Date]",gy="[object Error]",xy="[object Function]",by="[object Map]",vy="[object Number]",Sy="[object Object]",wy="[object RegExp]",Ly="[object Set]",Cy="[object String]",Ty="[object WeakMap]",Ny="[object ArrayBuffer]",My="[object DataView]",Oy="[object Float32Array]",Py="[object Float64Array]",Iy="[object Int8Array]",Ay="[object Int16Array]",Dy="[object Int32Array]",By="[object Uint8Array]",Ey="[object Uint8ClampedArray]",_y="[object Uint16Array]",Gy="[object Uint32Array]",Ue={};Ue[Oy]=Ue[Py]=Ue[Iy]=Ue[Ay]=Ue[Dy]=Ue[By]=Ue[Ey]=Ue[_y]=Ue[Gy]=!0;Ue[dy]=Ue[my]=Ue[Ny]=Ue[fy]=Ue[My]=Ue[yy]=Ue[gy]=Ue[xy]=Ue[by]=Ue[vy]=Ue[Sy]=Ue[wy]=Ue[Ly]=Ue[Cy]=Ue[Ty]=!1;function zy(n){return xt(n)&&Kn(n.length)&&!!Ue[zt(n)]}var Kc=zy;function Ry(n){return function(t){return n(t)}}var _o=Ry;var Yc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gi=Yc&&typeof module=="object"&&module&&!module.nodeType&&module,Fy=Gi&&Gi.exports===Yc,_a=Fy&&Fn.process,Vy=function(){try{var n=Gi&&Gi.require&&Gi.require("util").types;return n||_a&&_a.binding&&_a.binding("util")}catch{}}(),Mr=Vy;var Xc=Mr&&Mr.isTypedArray,jy=Xc?_o(Xc):Kc,Yn=jy;var Uy=Object.prototype,ky=Uy.hasOwnProperty;function Hy(n,t){var e=et(n),r=!e&&co(n),o=!e&&!r&&Eo(n),i=!e&&!r&&!o&&Yn(n),s=e||r||o||i,a=s?kc(n.length,String):[],l=a.length;for(var c in n)(t||ky.call(n,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Wn(c,l)))&&a.push(c);return a}var Xn=Hy;function qy(n,t){return function(e){return n(t(e))}}var Zn=qy;var Wy=Zn(Object.keys,Object),Zc=Wy;var $y=Object.prototype,Jy=$y.hasOwnProperty;function Ky(n){if(!Bo(n))return Zc(n);var t=[];for(var e in Object(n))Jy.call(n,e)&&e!="constructor"&&t.push(e);return t}var Qc=Ky;function Yy(n){return jr(n)?Xn(n):Qc(n)}var Go=Yy;function Xy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var eh=Xy;var Zy=Object.prototype,Qy=Zy.hasOwnProperty;function eg(n){if(!bt(n))return eh(n);var t=Bo(n),e=[];for(var r in n)r=="constructor"&&(t||!Qy.call(n,r))||e.push(r);return e}var th=eg;function tg(n){return jr(n)?Xn(n,!0):th(n)}var lr=tg;var rg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,og=/^\w*$/;function ig(n,t){if(et(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Po(n)?!0:og.test(n)||!rg.test(n)||t!=null&&n in Object(t)}var rh=ig;var ng=It(Object,"create"),Or=ng;function sg(){this.__data__=Or?Or(null):{},this.size=0}var oh=sg;function ag(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var ih=ag;var lg="__lodash_hash_undefined__",cg=Object.prototype,hg=cg.hasOwnProperty;function pg(n){var t=this.__data__;if(Or){var e=t[n];return e===lg?void 0:e}return hg.call(t,n)?t[n]:void 0}var nh=pg;var ug=Object.prototype,dg=ug.hasOwnProperty;function mg(n){var t=this.__data__;return Or?t[n]!==void 0:dg.call(t,n)}var sh=mg;var fg="__lodash_hash_undefined__";function yg(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Or&&t===void 0?fg:t,this}var ah=yg;function zo(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])}}zo.prototype.clear=oh;zo.prototype.delete=ih;zo.prototype.get=nh;zo.prototype.has=sh;zo.prototype.set=ah;var Ga=zo;function gg(){this.__data__=[],this.size=0}var lh=gg;function xg(n,t){for(var e=n.length;e--;)if(Vr(n[e][0],t))return e;return-1}var Ur=xg;var bg=Array.prototype,vg=bg.splice;function Sg(n){var t=this.__data__,e=Ur(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():vg.call(t,e,1),--this.size,!0}var ch=Sg;function wg(n){var t=this.__data__,e=Ur(t,n);return e<0?void 0:t[e][1]}var hh=wg;function Lg(n){return Ur(this.__data__,n)>-1}var ph=Lg;function Cg(n,t){var e=this.__data__,r=Ur(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var uh=Cg;function Ro(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])}}Ro.prototype.clear=lh;Ro.prototype.delete=ch;Ro.prototype.get=hh;Ro.prototype.has=ph;Ro.prototype.set=uh;var kr=Ro;var Tg=It(Qe,"Map"),Hr=Tg;function Ng(){this.size=0,this.__data__={hash:new Ga,map:new(Hr||kr),string:new Ga}}var dh=Ng;function Mg(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var mh=Mg;function Og(n,t){var e=n.__data__;return mh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var qr=Og;function Pg(n){var t=qr(this,n).delete(n);return this.size-=t?1:0,t}var fh=Pg;function Ig(n){return qr(this,n).get(n)}var yh=Ig;function Ag(n){return qr(this,n).has(n)}var gh=Ag;function Dg(n,t){var e=qr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var xh=Dg;function Fo(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])}}Fo.prototype.clear=dh;Fo.prototype.delete=fh;Fo.prototype.get=yh;Fo.prototype.has=gh;Fo.prototype.set=xh;var zi=Fo;var Bg="Expected a function";function za(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(Bg);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(za.Cache||zi),e}za.Cache=zi;var bh=za;var Eg=500;function _g(n){var t=bh(n,function(r){return e.size===Eg&&e.clear(),r}),e=t.cache;return t}var vh=_g;var Gg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zg=/\\(\\)?/g,Rg=vh(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(Gg,function(e,r,o,i){t.push(o?i.replace(zg,"$1"):r||e)}),t}),Sh=Rg;function Fg(n){return n==null?"":Mc(n)}var wh=Fg;function Vg(n,t){return et(n)?n:rh(n,t)?[n]:Sh(wh(n))}var Vo=Vg;var jg=1/0;function Ug(n){if(typeof n=="string"||Po(n))return n;var t=n+"";return t=="0"&&1/n==-jg?"-0":t}var Qn=Ug;function kg(n,t){t=Vo(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Qn(t[e++])];return e&&e==r?n:void 0}var Lh=kg;function Hg(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var jo=Hg;var Ch=Ct?Ct.isConcatSpreadable:void 0;function qg(n){return et(n)||co(n)||!!(Ch&&n&&n[Ch])}var Th=qg;function Nh(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Th),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?Nh(a,t-1,e,r,o):jo(o,a):r||(o[o.length]=a)}return o}var Mh=Nh;function Wg(n){var t=n==null?0:n.length;return t?Mh(n,1):[]}var Oh=Wg;function $g(n){return qn(Jn(n,void 0,Oh),n+"")}var Ph=$g;var Jg=Zn(Object.getPrototypeOf,Object),Uo=Jg;var Kg="[object Object]",Yg=Function.prototype,Xg=Object.prototype,Ih=Yg.toString,Zg=Xg.hasOwnProperty,Qg=Ih.call(Object);function ex(n){if(!xt(n)||zt(n)!=Kg)return!1;var t=Uo(n);if(t===null)return!0;var e=Zg.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ih.call(e)==Qg}var es=ex;function tx(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 Ah=tx;function rx(){this.__data__=new kr,this.size=0}var Dh=rx;function ox(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Bh=ox;function ix(n){return this.__data__.get(n)}var Eh=ix;function nx(n){return this.__data__.has(n)}var _h=nx;var sx=200;function ax(n,t){var e=this.__data__;if(e instanceof kr){var r=e.__data__;if(!Hr||r.length<sx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new zi(r)}return e.set(n,t),this.size=e.size,this}var Gh=ax;function ko(n){var t=this.__data__=new kr(n);this.size=t.size}ko.prototype.clear=Dh;ko.prototype.delete=Bh;ko.prototype.get=Eh;ko.prototype.has=_h;ko.prototype.set=Gh;var ts=ko;function lx(n,t){return n&&kt(t,Go(t),n)}var zh=lx;function cx(n,t){return n&&kt(t,lr(t),n)}var Rh=cx;var Uh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fh=Uh&&typeof module=="object"&&module&&!module.nodeType&&module,hx=Fh&&Fh.exports===Uh,Vh=hx?Qe.Buffer:void 0,jh=Vh?Vh.allocUnsafe:void 0;function px(n,t){if(t)return n.slice();var e=n.length,r=jh?jh(e):new n.constructor(e);return n.copy(r),r}var rs=px;function ux(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var kh=ux;function dx(){return[]}var os=dx;var mx=Object.prototype,fx=mx.propertyIsEnumerable,Hh=Object.getOwnPropertySymbols,yx=Hh?function(n){return n==null?[]:(n=Object(n),kh(Hh(n),function(t){return fx.call(n,t)}))}:os,Ho=yx;function gx(n,t){return kt(n,Ho(n),t)}var qh=gx;var xx=Object.getOwnPropertySymbols,bx=xx?function(n){for(var t=[];n;)jo(t,Ho(n)),n=Uo(n);return t}:os,is=bx;function vx(n,t){return kt(n,is(n),t)}var Wh=vx;function Sx(n,t,e){var r=t(n);return et(n)?r:jo(r,e(n))}var ns=Sx;function wx(n){return ns(n,Go,Ho)}var $h=wx;function Lx(n){return ns(n,lr,is)}var ss=Lx;var Cx=It(Qe,"DataView"),as=Cx;var Tx=It(Qe,"Promise"),ls=Tx;var Nx=It(Qe,"Set"),cs=Nx;var Jh="[object Map]",Mx="[object Object]",Kh="[object Promise]",Yh="[object Set]",Xh="[object WeakMap]",Zh="[object DataView]",Ox=Nr(as),Px=Nr(Hr),Ix=Nr(ls),Ax=Nr(cs),Dx=Nr(kn),ho=zt;(as&&ho(new as(new ArrayBuffer(1)))!=Zh||Hr&&ho(new Hr)!=Jh||ls&&ho(ls.resolve())!=Kh||cs&&ho(new cs)!=Yh||kn&&ho(new kn)!=Xh)&&(ho=function(n){var t=zt(n),e=t==Mx?n.constructor:void 0,r=e?Nr(e):"";if(r)switch(r){case Ox:return Zh;case Px:return Jh;case Ix:return Kh;case Ax:return Yh;case Dx:return Xh}return t});var qo=ho;var Bx=Object.prototype,Ex=Bx.hasOwnProperty;function _x(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&Ex.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Qh=_x;var Gx=Qe.Uint8Array,Ra=Gx;function zx(n){var t=new n.constructor(n.byteLength);return new Ra(t).set(new Ra(n)),t}var Wo=zx;function Rx(n,t){var e=t?Wo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var ep=Rx;var Fx=/\w*$/;function Vx(n){var t=new n.constructor(n.source,Fx.exec(n));return t.lastIndex=n.lastIndex,t}var tp=Vx;var rp=Ct?Ct.prototype:void 0,op=rp?rp.valueOf:void 0;function jx(n){return op?Object(op.call(n)):{}}var ip=jx;function Ux(n,t){var e=t?Wo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var hs=Ux;var kx="[object Boolean]",Hx="[object Date]",qx="[object Map]",Wx="[object Number]",$x="[object RegExp]",Jx="[object Set]",Kx="[object String]",Yx="[object Symbol]",Xx="[object ArrayBuffer]",Zx="[object DataView]",Qx="[object Float32Array]",e0="[object Float64Array]",t0="[object Int8Array]",r0="[object Int16Array]",o0="[object Int32Array]",i0="[object Uint8Array]",n0="[object Uint8ClampedArray]",s0="[object Uint16Array]",a0="[object Uint32Array]";function l0(n,t,e){var r=n.constructor;switch(t){case Xx:return Wo(n);case kx:case Hx:return new r(+n);case Zx:return ep(n,e);case Qx:case e0:case t0:case r0:case o0:case i0:case n0:case s0:case a0:return hs(n,e);case qx:return new r;case Wx:case Kx:return new r(n);case $x:return tp(n);case Jx:return new r;case Yx:return ip(n)}}var np=l0;function c0(n){return typeof n.constructor=="function"&&!Bo(n)?Bc(Uo(n)):{}}var ps=c0;var h0="[object Map]";function p0(n){return xt(n)&&qo(n)==h0}var sp=p0;var ap=Mr&&Mr.isMap,u0=ap?_o(ap):sp,lp=u0;var d0="[object Set]";function m0(n){return xt(n)&&qo(n)==d0}var cp=m0;var hp=Mr&&Mr.isSet,f0=hp?_o(hp):cp,pp=f0;var y0=1,g0=2,x0=4,up="[object Arguments]",b0="[object Array]",v0="[object Boolean]",S0="[object Date]",w0="[object Error]",dp="[object Function]",L0="[object GeneratorFunction]",C0="[object Map]",T0="[object Number]",mp="[object Object]",N0="[object RegExp]",M0="[object Set]",O0="[object String]",P0="[object Symbol]",I0="[object WeakMap]",A0="[object ArrayBuffer]",D0="[object DataView]",B0="[object Float32Array]",E0="[object Float64Array]",_0="[object Int8Array]",G0="[object Int16Array]",z0="[object Int32Array]",R0="[object Uint8Array]",F0="[object Uint8ClampedArray]",V0="[object Uint16Array]",j0="[object Uint32Array]",Re={};Re[up]=Re[b0]=Re[A0]=Re[D0]=Re[v0]=Re[S0]=Re[B0]=Re[E0]=Re[_0]=Re[G0]=Re[z0]=Re[C0]=Re[T0]=Re[mp]=Re[N0]=Re[M0]=Re[O0]=Re[P0]=Re[R0]=Re[F0]=Re[V0]=Re[j0]=!0;Re[w0]=Re[dp]=Re[I0]=!1;function us(n,t,e,r,o,i){var s,a=t&y0,l=t&g0,c=t&x0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!bt(n))return n;var h=et(n);if(h){if(s=Qh(n),!a)return Hn(n,s)}else{var p=qo(n),u=p==dp||p==L0;if(Eo(n))return rs(n,a);if(p==mp||p==up||u&&!o){if(s=l||u?{}:ps(n),!a)return l?Wh(n,Rh(s,n)):qh(n,zh(s,n))}else{if(!Re[p])return o?n:{};s=np(n,p,a)}}i||(i=new ts);var d=i.get(n);if(d)return d;i.set(n,s),pp(n)?n.forEach(function(w){s.add(us(w,t,e,w,n,i))}):lp(n)&&n.forEach(function(w,y){s.set(y,us(w,t,e,y,n,i))});var f=c?l?ss:$h:l?lr:Go,g=h?void 0:f(n);return Rc(g||n,function(w,y){g&&(y=w,w=n[y]),$n(s,y,us(w,t,e,y,n,i))}),s}var ds=us;var U0=1,k0=4;function H0(n){return ds(n,U0|k0)}var Ri=H0;function q0(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),a=s.length;a--;){var l=s[n?a:++o];if(e(i[l],l,i)===!1)break}return t}}var fp=q0;var W0=fp(),yp=W0;function $0(n,t,e){(e!==void 0&&!Vr(n[t],e)||e===void 0&&!(t in n))&&Do(n,t,e)}var Fi=$0;function J0(n){return xt(n)&&jr(n)}var gp=J0;function K0(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Vi=K0;function Y0(n){return kt(n,lr(n))}var xp=Y0;function X0(n,t,e,r,o,i,s){var a=Vi(n,e),l=Vi(t,e),c=s.get(l);if(c){Fi(n,e,c);return}var h=i?i(a,l,e+"",n,t,s):void 0,p=h===void 0;if(p){var u=et(l),d=!u&&Eo(l),f=!u&&!d&&Yn(l);h=l,u||d||f?et(a)?h=a:gp(a)?h=Hn(a):d?(p=!1,h=rs(l,!0)):f?(p=!1,h=hs(l,!0)):h=[]:es(l)||co(l)?(h=a,co(a)?h=xp(a):(!bt(a)||Io(a))&&(h=ps(l))):p=!1}p&&(s.set(l,h),o(h,l,r,i,s),s.delete(l)),Fi(n,e,h)}var bp=X0;function vp(n,t,e,r,o){n!==t&&yp(t,function(i,s){if(o||(o=new ts),bt(i))bp(n,t,s,e,vp,r,o);else{var a=r?r(Vi(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Fi(n,s,a)}},lr)}var Sp=vp;function Z0(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var wp=Z0;function Q0(n,t){return t.length<2?n:Lh(n,Ah(t,0,-1))}var Lp=Q0;var eb=Uc(function(n,t,e){Sp(n,t,e)}),po=eb;function tb(n,t){return t=Vo(t,n),n=Lp(n,t),n==null||delete n[Qn(wp(t))]}var Cp=tb;function rb(n){return es(n)?void 0:n}var Tp=rb;var ob=1,ib=2,nb=4,sb=Ph(function(n,t){var e={};if(n==null)return e;var r=!1;t=Vn(t,function(i){return i=Vo(i,n),r||(r=i.length>1),i}),kt(n,ss(n),e),r&&(e=ds(e,ob|ib|nb,Tp));for(var o=t.length;o--;)Cp(e,t[o]);return e}),$o=sb;var Jo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Jo||(Jo={}));var uo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(uo||(uo={}));var Np;(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})(Np||(Np={}));var Ko;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=r})(Ko||(Ko={}));var Mp;(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})(Mp||(Mp={}));var Wr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=t;function e(i){return i!=null?i:o.identity}o.simplify=e;function r(i,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let h=i[3]*s[l]+i[7]*s[l+1]+i[11]*s[l+2]+i[15];a[l]=(i[0]*s[l]+i[4]*s[l+1]+i[8]*s[l+2]+i[12])/h,a[l+1]=(i[1]*s[l]+i[5]*s[l+1]+i[9]*s[l+2]+i[13])/h,a[l+2]=(i[2]*s[l]+i[6]*s[l+1]+i[10]*s[l+2]+i[14])/h}return a}o.applyMatrix4=r})(Wr||(Wr={}));var Rt;(l=>{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 r(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=r;function o(c){return{r:c.r,g:c.g,b:c.b}}l.clone=o;function i(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=i;function s(c,h){return c.r===h.r&&c.g===h.g&&c.b===h.b}l.equals=s;function a(c,h,p){return{r:c.r+(h.r-c.r)*p,g:c.g+(h.g-c.g)*p,b:c.b+(h.b-c.b)*p}}l.lerp=a})(Rt||(Rt={}));var cr;(s=>{s.white=H(P({},Rt.white),{a:1});function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,l){return H(P({},Rt.fromHex(a)),{a:l})}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,l){return Rt.equals(a,l)&&a.a===l.a}s.equals=o;function i(a,l,c){return{r:a.r+(l.r-a.r)*c,g:a.g+(l.g-a.g)*c,b:a.b+(l.b-a.b)*c,a:a.a+(l.a-a.a)*c}}s.lerp=i})(cr||(cr={}));var ms;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ms||(ms={}));var Op;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Op||(Op={}));var Pp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Pp||(Pp={}));var fs;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(fs||(fs={}));var Ht=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i=H(P({},r),{[t]:e});return Object.setPrototypeOf(i,Ht.prototype),i}}add(t,e){var o;let r=this.runOp({type:1,id:t,data:e});return(o=r==null?void 0:r.data)!=null?o:this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,a=H(P({},e),{[i]:s});return Object.setPrototypeOf(a,Ht.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i=P({},e);return Object.setPrototypeOf(i,Ht.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function ji(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"&&ji(r)}return Object.freeze(n)}function Ip(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 ys=class extends Error{};function hr(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function Ap(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 Dp(){return typeof process<"u"}function Bp(n,t){for(let e of n)t(e.id,e.data),Bp(e.children,t)}function Ep(n,t){t(n.id,n.data);for(let e of n.children)Ep(e,t)}var qt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,qt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ji(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){var r;return(r=this.get(e))==null?void 0:r.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){var r;return e===null?this:(r=this.get(e))==null?void 0:r.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Ep(o,r)}}traverse(e){Bp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),a=s.findIndex(h=>h.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]=H(P({},l),{data:r}),this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let a=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(h=>h.id===l);if(c<0)throw new Error;i=[...i],i[c]=H(P({},i[c]),{children:a})}Object.setPrototypeOf(i,qt.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),h={fi:o,id:i,data:s,children:a};return c=[...c,h],c.sort((u,d)=>u.fi-d.fi),e.localIndex=c.indexOf(h),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(c=>c.id===r);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:H(P({type:7},a),{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 d=r;for(;d!==null;){if(d===void 0)throw new Error;if(d===i)throw new ys("cyclic tree");d=this.parent(d)}}let s=this.parent(i);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===i);l=[...l];let h=l.splice(c,1)[0],p=this.modifyArrayBy(s,l);s=r,l=p.childrenArray(s);let u=h.fi;return h=H(P({},h),{fi:o}),l=[...l,h],l.sort((d,f)=>d.fi-f.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(P(P({},o),i))}r.sort((o,i)=>Ip(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return H(P({},s),{sortKey:o})}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return hr(0,o,o);{let s=i[0].fi;return hr(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=i.find(l=>l.fi>s.fi);if(a===void 0){let l=i[i.length-1].fi;return hr(l,l+o,o)}else return hr(s.fi,a.fi,o)}}};var gs;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],a=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s=P({},e),a=!1;if(o)for(let l of Object.keys(o)){i[l]=s[l];let c=o[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(gs||(gs={}));var Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ji(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){var r;return(r=this.get(e))==null?void 0:r.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]=H(P({},a),{data:r}),this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return Dp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,a={fi:r,id:o,data:i};return s=[...s,a],s.sort((c,h)=>c.fi-h.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:P({type:4},s)}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(h=>h.id===o);if(s===-1)return null;let a=i[s].fi,l=H(P({},i[s]),{fi:r});return i[s]=l,i.sort((h,p)=>h.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return hr(0,r,r);{let i=o[0].fi;return hr(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return hr(a,a+r,r)}else return hr(i.fi,s.fi,r)}}};var _p=Symbol(),bs=Symbol(),Yo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof xs);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[bs];r&&r(),delete this._children[t]}}}},Va=class extends Yo{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=H(P({},this._current),{[t]:e})}runOp(t){this.reportOp(t,gs.runOp(this._current,t))}},ja=class extends Yo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=H(P({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,Ht.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Gp={get(n,t){if(t===bs)return()=>{n._parent=null};if(t===_p)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=vs(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},ab=H(P({},Gp),{set(n,t,e){var o;let r={type:0,props:{[t]:(o=Ha(e))!=null?o: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}}),lb=H(P({},Gp),{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}}),Xo=class extends Yo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[bs]=()=>{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){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=(a=e.get(t))==null?void 0:a.data,s=vs(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Zo=class extends Yo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[bs]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return H(P({},this._current.get(t)),{data:this.data(t)})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=(a=e.get(t))==null?void 0:a.data,s=vs(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Fa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Ss.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push(H(P({},t),{path:e}))}var xs=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Fa(this.ts,e,t),Fa(this.actual,r,t),Fa(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function vs(n,t,e){return e instanceof qt?new Xo(n,t,e):e instanceof Je?new Zo(n,t,e):e instanceof Ht?new Proxy(new ja(n,t,e),lb):e!==null&&typeof e=="object"?Ap(e)?e:new Proxy(new Va(n,t,e),ab):e}function Ua(n){let t=new xs(n);return[vs(t,"",n),t]}function ka(n,t){let[e,r]=Ua(n);return t(e),r.result()}function Ha(n){return n instanceof Xo||n instanceof Zo?n._current:n!==null&&typeof n=="object"?n[_p]:n}var Ss;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l=P({},i);return Object.keys(a).forEach(c=>{delete l[c]}),l}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof qt||o instanceof Xo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Je||o instanceof Zo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(Ss||(Ss={}));var ws=class{},Ui=class extends ws{constructor(e){super();this.id=e}},ki=class extends ws{constructor(e){super();this.data=e}};var Wa;try{Wa=new TextDecoder}catch{}var ee,Jr,S=0;var Hp=[],$a=Hp,Ja=0,At={},Pe,$r,Wt=0,pr=0,Ft,Pr,Tt=[],Ie,zp={useRecords:!1,mapsAsObjects:!0},Hi=class{},Ya=new Hi;Ya.name="MessagePack 0xC1";var Qo=!1,ur=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(ee)return Kp(()=>(Cs(),this?this.unpack(t,e):ur.prototype.unpack.call(zp,t,e)));Jr=e>-1?e:t.length,S=0,Ja=0,pr=0,$r=null,$a=Hp,Ft=null,ee=t;try{Ie=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ee=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 ur){if(At=this,this.structures)return Pe=this.structures,Ls();(!Pe||Pe.length>0)&&(Pe=[])}else At=zp,(!Pe||Pe.length>0)&&(Pe=[]);return Ls()}unpackMultiple(t,e){let r,o=0;try{Qo=!0;let i=t.length,s=this?this.unpack(t,i):Ms.unpack(t,i);if(e){for(e(s);S<i;)if(o=S,e(Ls())===!1)return}else{for(r=[s];S<i;)o=S,r.push(Ls());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Qo=!1,Cs()}}_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 Ls(){try{if(!At.trusted&&!Qo){let t=Pe.sharedLength||0;t<Pe.length&&(Pe.length=t)}let n=Ke();if(S==Jr)Pe.restoreStructures&&Rp(),Pe=null,ee=null,Pr&&(Pr=null);else if(S>Jr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Qo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Pe.restoreStructures&&Rp(),Cs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Rp(){for(let n in Pe.restoreStructures)Pe[n]=Pe.restoreStructures[n];Pe.restoreStructures=null}function Ke(){let n=ee[S++];if(n<160)if(n<128){if(n<64)return n;{let t=Pe[n&63]||At.getStructures&&qp()[n&63];return t?(t.read||(t.read=Xa(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,At.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[$p()]=Ke();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ke(),Ke());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ke();return t}else if(n<192){let t=n-160;if(pr>=S)return $r.slice(S-Wt,(S+=t)-Wt);if(pr==0&&Jr<140){let e=t<16?Za(t):Wp(t);if(e!=null)return e}return Ka(t)}else{let t;switch(n){case 192:return null;case 193:return Ft?(t=Ke(),t>0?Ft[1].slice(Ft.position1,Ft.position1+=t):Ft[0].slice(Ft.position0,Ft.position0-=t)):Ya;case 194:return!1;case 195:return!0;case 196:return qa(ee[S++]);case 197:return t=Ie.getUint16(S),S+=2,qa(t);case 198:return t=Ie.getUint32(S),S+=4,qa(t);case 199:return mo(ee[S++]);case 200:return t=Ie.getUint16(S),S+=2,mo(t);case 201:return t=Ie.getUint32(S),S+=4,mo(t);case 202:if(t=Ie.getFloat32(S),At.useFloat32>2){let e=Ns[(ee[S]&127)<<1|ee[S+1]>>7];return S+=4,(e*t+(t>0?.5:-.5)>>0)/e}return S+=4,t;case 203:return t=Ie.getFloat64(S),S+=8,t;case 204:return ee[S++];case 205:return t=Ie.getUint16(S),S+=2,t;case 206:return t=Ie.getUint32(S),S+=4,t;case 207:return At.int64AsNumber?(t=Ie.getUint32(S)*4294967296,t+=Ie.getUint32(S+4)):t=Ie.getBigUint64(S),S+=8,t;case 208:return Ie.getInt8(S++);case 209:return t=Ie.getInt16(S),S+=2,t;case 210:return t=Ie.getInt32(S),S+=4,t;case 211:return At.int64AsNumber?(t=Ie.getInt32(S)*4294967296,t+=Ie.getUint32(S+4)):t=Ie.getBigInt64(S),S+=8,t;case 212:if(t=ee[S++],t==114)return kp(ee[S++]&63);{let e=Tt[t];if(e)return e.read?(S++,e.read(Ke())):e.noBuffer?(S++,e()):e(ee.subarray(S,++S));throw new Error("Unknown extension "+t)}case 213:return t=ee[S],t==114?(S++,kp(ee[S++]&63,ee[S++])):mo(2);case 214:return mo(4);case 215:return mo(8);case 216:return mo(16);case 217:return t=ee[S++],pr>=S?$r.slice(S-Wt,(S+=t)-Wt):hb(t);case 218:return t=Ie.getUint16(S),S+=2,pr>=S?$r.slice(S-Wt,(S+=t)-Wt):pb(t);case 219:return t=Ie.getUint32(S),S+=4,pr>=S?$r.slice(S-Wt,(S+=t)-Wt):ub(t);case 220:return t=Ie.getUint16(S),S+=2,Vp(t);case 221:return t=Ie.getUint32(S),S+=4,Vp(t);case 222:return t=Ie.getUint16(S),S+=2,jp(t);case 223:return t=Ie.getUint32(S),S+=4,jp(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 cb=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Xa(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>cb.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ke);return n.highByte===0&&(n.read=Fp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Ke()}return r}return e.count=0,n.highByte===0?Fp(t,e):e}var Fp=(n,t)=>function(){let e=ee[S++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Pe[r]||qp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Xa(o,n)),o.read()};function qp(){let n=Kp(()=>(ee=null,At.getStructures()));return Pe=At._mergeStructures(n,Pe)}var Ka=Ts,hb=Ts,pb=Ts,ub=Ts;function Ts(n){let t;if(n<16&&(t=Za(n)))return t;if(n>64&&Wa)return Wa.decode(ee.subarray(S,S+=n));let e=S+n,r=[];for(t="";S<e;){let o=ee[S++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=ee[S++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=ee[S++]&63,s=ee[S++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ee[S++]&63,s=ee[S++]&63,a=ee[S++]&63,l=(o&7)<<18|i<<12|s<<6|a;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+=at.apply(String,r),r.length=0)}return r.length>0&&(t+=at.apply(String,r)),t}function Vp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ke();return t}function jp(n){if(At.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[$p()]=Ke();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ke(),Ke());return t}}var at=String.fromCharCode;function Wp(n){let t=S,e=new Array(n);for(let r=0;r<n;r++){let o=ee[S++];if((o&128)>0){S=t;return}e[r]=o}return at.apply(String,e)}function Za(n){if(n<4)if(n<2){if(n===0)return"";{let t=ee[S++];if((t&128)>1){S-=1;return}return at(t)}}else{let t=ee[S++],e=ee[S++];if((t&128)>0||(e&128)>0){S-=2;return}if(n<3)return at(t,e);let r=ee[S++];if((r&128)>0){S-=3;return}return at(t,e,r)}else{let t=ee[S++],e=ee[S++],r=ee[S++],o=ee[S++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){S-=4;return}if(n<6){if(n===4)return at(t,e,r,o);{let i=ee[S++];if((i&128)>0){S-=5;return}return at(t,e,r,o,i)}}else if(n<8){let i=ee[S++],s=ee[S++];if((i&128)>0||(s&128)>0){S-=6;return}if(n<7)return at(t,e,r,o,i,s);let a=ee[S++];if((a&128)>0){S-=7;return}return at(t,e,r,o,i,s,a)}else{let i=ee[S++],s=ee[S++],a=ee[S++],l=ee[S++];if((i&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){S-=8;return}if(n<10){if(n===8)return at(t,e,r,o,i,s,a,l);{let c=ee[S++];if((c&128)>0){S-=9;return}return at(t,e,r,o,i,s,a,l,c)}}else if(n<12){let c=ee[S++],h=ee[S++];if((c&128)>0||(h&128)>0){S-=10;return}if(n<11)return at(t,e,r,o,i,s,a,l,c,h);let p=ee[S++];if((p&128)>0){S-=11;return}return at(t,e,r,o,i,s,a,l,c,h,p)}else{let c=ee[S++],h=ee[S++],p=ee[S++],u=ee[S++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){S-=12;return}if(n<14){if(n===12)return at(t,e,r,o,i,s,a,l,c,h,p,u);{let d=ee[S++];if((d&128)>0){S-=13;return}return at(t,e,r,o,i,s,a,l,c,h,p,u,d)}}else{let d=ee[S++],f=ee[S++];if((d&128)>0||(f&128)>0){S-=14;return}if(n<15)return at(t,e,r,o,i,s,a,l,c,h,p,u,d,f);let g=ee[S++];if((g&128)>0){S-=15;return}return at(t,e,r,o,i,s,a,l,c,h,p,u,d,f,g)}}}}}function qa(n){return At.copyBuffers?Uint8Array.prototype.slice.call(ee,S,S+=n):ee.subarray(S,S+=n)}function mo(n){let t=ee[S++];if(Tt[t])return Tt[t](ee.subarray(S,S+=n));throw new Error("Unknown extension type "+t)}var Up=new Array(4096);function $p(){let n=ee[S++];if(n>=160&&n<192){if(n=n-160,pr>=S)return $r.slice(S-Wt,(S+=n)-Wt);if(!(pr==0&&Jr<180))return Ka(n)}else return S--,Ke();let t=(n<<5^(n>1?Ie.getUint16(S):n>0?ee[S]:0))&4095,e=Up[t],r=S,o=S+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ie.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=ee[r++],i!=e[s++]){r=1879048192;break}if(r===o)return S=r,e.string;o-=3,r=S}for(e=[],Up[t]=e,e.bytes=n;r<o;)i=Ie.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=ee[r++],e.push(i);let a=n<16?Za(n):Wp(n);return a!=null?e.string=a:e.string=Ka(n)}var kp=(n,t)=>{var e=Ke();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=Pe[n];return o&&o.isShared&&((Pe.restoreStructures||(Pe.restoreStructures=[]))[n]=o),Pe[n]=e,e.read=Xa(e,r),e.read()},Jp=typeof self=="object"?self:global;Tt[0]=()=>{};Tt[0].noBuffer=!0;Tt[101]=()=>{let n=Ke();return(Jp[n[0]]||Error)(n[1])};Tt[105]=n=>{let t=Ie.getUint32(S-4);Pr||(Pr=new Map);let e=ee[S],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Pr.set(t,o);let i=Ke();return o.used?Object.assign(r,i):(o.target=i,i)};Tt[112]=n=>{let t=Ie.getUint32(S-4),e=Pr.get(t);return e.used=!0,e.target};Tt[115]=()=>new Set(Ke());var Qa=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Tt[116]=n=>{let t=n[0],e=Qa[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Jp[e](Uint8Array.prototype.slice.call(n,1).buffer)};Tt[120]=()=>{let n=Ke();return new RegExp(n[0],n[1])};Tt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=S;S+=t-4,Ft=[Ke(),Ke()],Ft.position0=0,Ft.position1=0;let r=S;S=e;try{return Ke()}finally{S=r}};Tt[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 Kp(n){let t=Jr,e=S,r=Ja,o=Wt,i=pr,s=$r,a=$a,l=Pr,c=Ft,h=new Uint8Array(ee.slice(0,Jr)),p=Pe,u=Pe.slice(0,Pe.length),d=At,f=Qo,g=n();return Jr=t,S=e,Ja=r,Wt=o,pr=i,$r=s,$a=a,Pr=l,Ft=c,ee=h,Qo=f,Pe=p,Pe.splice(0,Pe.length,...u),At=d,Ie=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),g}function Cs(){ee=null,Pr=null,Pe=null}function Yp(n){n.unpack?Tt[n.type]=n.unpack:Tt[n.type]=n}var Ns=new Array(147);for(let n=0;n<256;n++)Ns[n]=+("1e"+Math.floor(45.15-n*.30103));var Ms=new ur({useRecords:!1}),db=Ms.unpack,mb=Ms.unpackMultiple,fb=Ms.unpack,Os={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},yb=new Float32Array(1),qI=new Uint8Array(yb.buffer,0,4);var Ps;try{Ps=new TextEncoder}catch{}var Is,tl,As=typeof Buffer<"u",el=As?Buffer.allocUnsafeSlow:Uint8Array,eu=As?Buffer:Uint8Array,Xp=As?4294967296:2144337920,_,Ye,M=0,dr,mr=null,gb=/[\u0080-\uFFFF]/,qi=Symbol("record-id"),fo=class extends ur{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,l=0,c=eu.prototype.utf8Write?function(m,I,x){return _.utf8Write(m,I,x)}:Ps&&Ps.encodeInto?function(m,I){return Ps.encodeInto(m,_.subarray(I)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,u=t.structures||t.saveStructures,d=t.maxSharedStructures;if(d==null&&(d=u?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=d>32||f+d>64,w=d+64,y=d+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],A=0,N=0;this.pack=this.encode=function(m,I){if(_||(_=new el(8192),Ye=new DataView(_.buffer,0,8192),M=0),dr=_.length-10,dr-M<2048?(_=new el(_.length),Ye=new DataView(_.buffer,0,_.length),dr=_.length-10,M=0):M=M+7&2147483640,r=M,a=h.structuredClone?new Map:null,h.bundleStrings?(mr=["",""],_[M++]=214,_[M++]=98,mr.position=M-r,M+=4):mr=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let x=o.sharedLength||0;if(x>d)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let C=0;C<x;C++){let T=o[C];if(!T)continue;let O,$=o.transitions;for(let J=0,ie=T.length;J<ie;J++){let ue=T[J];O=$[ue],O||(O=$[ue]=Object.create(null)),$=O}$[qi]=C+64}l=x}p||(o.nextId=x+64)}i&&(i=!1),s=o||[];try{if(v(m),mr){Ye.setUint32(mr.position+r,M-mr.position-r);let x=mr;mr=null,v(x[0]),v(x[1])}if(h.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>dr&&L(M),h.offset=M;let x=bb(_.subarray(r,M),a.idsToInsert);return a=null,x}return I&ru?(_.start=r,_.end=M,_):_.subarray(r,M)}finally{if(o){if(N<10&&N++,A>1e4)o.transitions=null,N=0,A=0,b.length>0&&(b=[]);else if(b.length>0&&!p){for(let x=0,C=b.length;x<C;x++)b[x][qi]=0;b=[]}if(i&&h.saveStructures){let x=o.sharedLength||d;o.length>x&&(o=o.slice(0,x));let C=_.subarray(r,M);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(m)):(l=x,C)}}I&Nb&&(M=r)}};let v=m=>{M>dr&&(_=L(M));var I=typeof m,x;if(I==="string"){let C=m.length;if(mr&&C>=8&&C<4096){let $=gb.test(m);mr[$?0:1]+=m,_[M++]=193,v($?-C:C);return}let T;C<32?T=1:C<256?T=2:C<65536?T=3:T=5;let O=C*3;if(M+O>dr&&(_=L(M+O)),C<64||!c){let $,J,ie,ue=M+T;for($=0;$<C;$++)J=m.charCodeAt($),J<128?_[ue++]=J:J<2048?(_[ue++]=J>>6|192,_[ue++]=J&63|128):(J&64512)===55296&&((ie=m.charCodeAt($+1))&64512)===56320?(J=65536+((J&1023)<<10)+(ie&1023),$++,_[ue++]=J>>18|240,_[ue++]=J>>12&63|128,_[ue++]=J>>6&63|128,_[ue++]=J&63|128):(_[ue++]=J>>12|224,_[ue++]=J>>6&63|128,_[ue++]=J&63|128);x=ue-M-T}else x=c(m,M+T,O);x<32?_[M++]=160|x:x<256?(T<2&&_.copyWithin(M+2,M+1,M+1+x),_[M++]=217,_[M++]=x):x<65536?(T<3&&_.copyWithin(M+3,M+2,M+2+x),_[M++]=218,_[M++]=x>>8,_[M++]=x&255):(T<5&&_.copyWithin(M+5,M+3,M+3+x),_[M++]=219,Ye.setUint32(M,x),M+=4),M+=x}else if(I==="number")if(m>>>0===m)m<64?_[M++]=m:m<256?(_[M++]=204,_[M++]=m):m<65536?(_[M++]=205,_[M++]=m>>8,_[M++]=m&255):(_[M++]=206,Ye.setUint32(M,m),M+=4);else if(m>>0===m)m>=-32?_[M++]=256+m:m>=-128?(_[M++]=208,_[M++]=m+256):m>=-32768?(_[M++]=209,Ye.setInt16(M,m),M+=2):(_[M++]=210,Ye.setInt32(M,m),M+=4);else{let C;if((C=this.useFloat32)>0&&m<4294967296&&m>=-2147483648){_[M++]=202,Ye.setFloat32(M,m);let T;if(C<4||(T=m*Ns[(_[M]&127)<<1|_[M+1]>>7])>>0===T){M+=4;return}else M--}_[M++]=203,Ye.setFloat64(M,m),M+=8}else if(I==="object")if(!m)_[M++]=192;else{if(a){let T=a.get(m);if(T){if(!T.id){let O=a.idsToInsert||(a.idsToInsert=[]);T.id=O.push(T)}_[M++]=214,_[M++]=112,Ye.setUint32(M,T.id),M+=4;return}else a.set(m,{offset:M-r})}let C=m.constructor;if(C===Object)k(m,!0);else if(C===Array){x=m.length,x<16?_[M++]=144|x:x<65536?(_[M++]=220,_[M++]=x>>8,_[M++]=x&255):(_[M++]=221,Ye.setUint32(M,x),M+=4);for(let T=0;T<x;T++)v(m[T])}else if(C===Map){x=m.size,x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ye.setUint32(M,x),M+=4);for(let[T,O]of m)v(T),v(O)}else{for(let T=0,O=Is.length;T<O;T++){let $=tl[T];if(m instanceof $){let J=Is[T];if(J.write){J.type&&(_[M++]=212,_[M++]=J.type,_[M++]=0),v(J.write.call(this,m));return}let ie=_,ue=Ye,ce=M;_=null;let ve;try{ve=J.pack.call(this,m,F=>(_=ie,ie=null,M+=F,M>dr&&L(M),{target:_,targetView:Ye,position:M-F}),v)}finally{ie&&(_=ie,Ye=ue,M=ce,dr=_.length-10)}ve&&(ve.length+M>dr&&L(ve.length+M),M=xb(ve,_,M,J.type));return}}k(m,!m.hasOwnProperty)}}else if(I==="boolean")_[M++]=m?195:194;else if(I==="bigint"){if(m<BigInt(1)<<BigInt(63)&&m>=-(BigInt(1)<<BigInt(63)))_[M++]=211,Ye.setBigInt64(M,m);else if(m<BigInt(1)<<BigInt(64)&&m>0)_[M++]=207,Ye.setBigUint64(M,m);else if(this.largeBigIntToFloat)_[M++]=203,Ye.setFloat64(M,Number(m));else throw new RangeError(m+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(I==="undefined")this.encodeUndefinedAsNil?_[M++]=192:(_[M++]=212,_[M++]=0,_[M++]=0);else if(I==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},k=this.useRecords===!1?this.variableMapSize?m=>{let I=Object.keys(m),x=I.length;x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ye.setUint32(M,x),M+=4);let C;for(let T=0;T<x;T++)v(C=I[T]),v(m[C])}:(m,I)=>{_[M++]=222;let x=M-r;M+=2;let C=0;for(let T in m)(I||m.hasOwnProperty(T))&&(v(T),v(m[T]),C++);_[x+++r]=C>>8,_[x+r]=C&255}:m=>{let I=Object.keys(m),x,C=s.transitions||(s.transitions=Object.create(null)),T=0;for(let $=0,J=I.length;$<J;$++){let ie=I[$];x=C[ie],x||(x=C[ie]=Object.create(null),T++),C=x}let O=C[qi];if(O)O>=96&&g?(_[M++]=((O-=96)&31)+96,_[M++]=O>>5):_[M++]=O;else{O=s.nextId,O||(O=64),O<w&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(O=s.nextOwnId,O<y||(O=w),s.nextOwnId=O+1):(O>=y&&(O=w),s.nextId=O+1);let $=I.highByte=O>=96&&g?O-96>>5:-1;C[qi]=O,s[O-64]=I,O<w?(I.isShared=!0,s.sharedLength=O-63,i=!0,$>=0?(_[M++]=(O&31)+96,_[M++]=$):_[M++]=O):($>=0?(_[M++]=213,_[M++]=114,_[M++]=(O&31)+96,_[M++]=$):(_[M++]=212,_[M++]=114,_[M++]=O),T&&(A+=N*T),b.length>=f&&(b.shift()[qi]=0),b.push(C),v(I))}for(let $=0,J=I.length;$<J;$++)v(m[I[$]])},L=m=>{let I;if(m>16777216){if(m-r>Xp)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(Xp,Math.round(Math.max((m-r)*(m>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(m-r<<2,_.length-1)>>12)+1<<12;let x=new el(I);return Ye=new DataView(x.buffer,0,I),_.copy?_.copy(x,0,r,m):x.set(_.slice(r,m)),M-=r,r=0,dr=x.length-10,_=x}}useBuffer(t){_=t,Ye=new DataView(_.buffer,_.byteOffset,_.byteLength),M=0}};tl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Hi];Is=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?Zp(n,16,t):Qp(As?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==eu&&this.structuredClone?Zp(n,Qa.indexOf(e.name),t):Qp(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Zp(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Qp(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 xb(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 bb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let a=i+r;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function yo(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)");tl.unshift(n.Class),Is.unshift(n)}Yp(n)}var tu=new fo({useRecords:!1}),vb=tu.pack,Sb=tu.pack;var{NEVER:wb,ALWAYS:Lb,DECIMAL_ROUND:Cb,DECIMAL_FIT:Tb}=Os,ru=512,Nb=1024;var ou=new fo({structuredClone:!0});yo({Class:Ht.prototype.constructor,type:1,write(n){return P({},n)},read(n){return Object.setPrototypeOf(n,Ht.prototype),n}});yo({Class:Je.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Je.prototype),n}});yo({Class:qt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,qt.prototype),n}});yo({Class:Ui.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ui(n)}});yo({Class:ki.prototype.constructor,type:5,write(n){return n.data},read(n){return new ki(n)}});function Mb(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}var Ds;(r=>{function n(o){return ou.pack(o)}r.serialize=n;function t(o){return ou.unpack(o)}r.deserialize=t;function e(o){return Mb(n(o)).toString()}r.checksum=e})(Ds||(Ds={}));var Bs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Bs||(Bs={}));var Es;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:2500,helper:!0};if(r==="SpotLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:2500,helper:!0};if(r==="DirectionalLight")return{type:r,color:cr.white,intensity:1,shadows:!0,size:2500,depth:2500,helper:!0};throw new Error("not implemented")}})(Es||(Es={}));var rl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(rl||(rl={}));var ol;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(ol||(ol={}));var _s;(t=>t.defaultData=H(P(P({},ol.defaultData),rl.defaultData),{cloner:null,booleanExclude:null}))(_s||(_s={}));var il=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(il||{}),nl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(nl||{}),sl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(sl||{}),Gs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:cr.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Gs||(Gs={}));var ei;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0,a:1},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Rt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:H(P({},Rt.fromHex(6710886)),{a:1}),colorB:H(P({},Rt.fromHex(6710886)),{a:1}),colorC:H(P({},Rt.fromHex(16777215)),{a:1}),colorD:H(P({},Rt.fromHex(16777215)),{a:1}),distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:cr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(ei||(ei={}));var go;(a=>{function n(l){return!l.layers.some(h=>{if(h.data.type==="texture"&&h.data.projection!==0||h.data.type==="depth"&&!h.data.isWorldSpace||h.data.type==="noise"||h.data.type==="displace")return!0})&&!e(l)}a.isMergable=n;function t(l){let c="";return l.layers.forEach(h=>{Object.entries(h.data).forEach(([p,u])=>{c+=`${p}${u}`,Array.isArray(u)?u.forEach(d=>c+=`${d}`):typeof u=="object"?Object.values(u).forEach(d=>{typeof d=="number"?c+=`${d.toFixed(4)}`:c+=`${d}`}):c+=`${u}`})}),c}a.getHash=t;function e(l){let c=0;for(let h of l.layers)"alpha"in h.data&&h.data.type!=="light"&&h.data.type!=="fresnel"&&(c+=(1-c)*h.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Je}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return i("phong",l,c)}a.defaultData=o;function i(l,c="layer1",h="layer2"){let p=new Je;return p.push({fi:0,data:ei.defaultData("light",l),id:c}),p.push({fi:1,data:ei.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=i;function s(l,c="basic",h="layer1",p="layer2"){let u=ei.defaultData("texture");Object.assign(u.texture,{image:l});let d=new Je;return d.push({fi:0,data:u,id:h}),d.push({fi:1,data:ei.defaultData("light",c),id:p}),{layers:d}}a.defaultTwoLayerTextureData=s})(go||(go={}));var ti;(r=>{function n(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n;function t(o,i){let{points:s}=i;if(s){for(let a of s)if(a.data.position[0]===o[0]&&a.data.position[1]===o[1])return!0}return!1}r.isOverlappingExistingPoint=t;function e(o,i){let s=o.controlNext,a=i.controlPrevious;return o.position[0]===s.position[0]&&o.position[1]===s.position[1]&&i.position[0]===a.position[0]&&i.position[1]===a.position[1]}r.isStraightLine=e})(ti||(ti={}));var zs;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(zs||(zs={}));var Wi;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ti.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0};throw new Error("not implemented")}t.defaultData=n})(Wi||(Wi={}));var $i;(o=>{o.identity=H(P({},ms.identity),{hiddenMatrix:Wr.identity});function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:(s==null?void 0:s.position)||i.position,rotation:(s==null?void 0:s.rotation)||i.rotation,scale:(s==null?void 0:s.scale)||i.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:Ko.isEqual(i.position,s.position)?null:s.position,rotation:Ko.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Ko.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:Wr.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})($i||($i={}));var Ir;(t=>t.defaultData=P({states:new Je,events:new Je,visible:!0,raycastLock:!1},$i.identity))(Ir||(Ir={}));var iu;(t=>t.defaultData=P({type:"Empty"},Ir.defaultData))(iu||(iu={}));var Rs;(t=>t.defaultData=P(P({type:"Mesh"},Ir.defaultData),_s.defaultData))(Rs||(Rs={}));var nu;(t=>t.defaultData=P(P({type:"TextFrame"},Ir.defaultData),Gs.defaultData))(nu||(nu={}));var Fs;(t=>t.defaultData=P(P(P({},Ir.defaultData),$i.identity),uo.defaultData))(Fs||(Fs={}));var su;(t=>{function n(e){return P(P({},Ir.defaultData),Es.defaultData(e))}t.defaultData=n})(su||(su={}));var au;(r=>(r.defaultCamera=P({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Wr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},uo.defaultData),r.defaultMeshObject=H(P(P({name:"Rectangle"},Ir.defaultData),Rs.defaultData),{geometry:Wi.defaultData("RectangleGeometry"),material:go.defaultTwoLayerData("basic","layer1","layer2")}),r.defaultBooleanObject=H(P(P({name:"Boolean"},Ir.defaultData),Rs.defaultData),{geometry:Wi.defaultData("BooleanGeometry"),material:go.defaultTwoLayerData("phong","layer1","layer2")})))(au||(au={}));var lu;(e=>{function n(r,o){if(o===void 0)return r;let i=P({},r);return"material"in i&&"material"in o&&o.material&&(i.material=ka(i.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&po(c,l)}}).data),i.materials&&o.materials&&(i.materials=ka(i.materials,s=>{var a,l;for(let c=0;c<i.materials.length;c++){let h=o.materials[c];if(typeof h!="string")for(let[p,u]of Object.entries(h.layers)){let d=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(p);d&&po(d,u)}}}).data),i}e.patchMaterialState=n;function t(r,o){var s,a;if(o===void 0)return r;let i=P({},r);if(Object.assign(i,$i.merge(i,o)),Jo.is(r.type)){i.orthographic=P({},i.orthographic),i.perspective=P({},i.perspective);let l=o;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(i.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(i.perspective.zoom=l.perspective.zoom)}else if(r.type==="Mesh")i.geometry=P({},i.geometry),Object.assign(i.geometry,o.geometry),i=n(i,o);else if(Bs.is(r.type)){let l=o;i.intensity!==void 0&&(i.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?i.color=l.color:i.color=Rt.clone(l.color))}return i}e.patch=t})(lu||(lu={}));import{ConeBufferGeometry as Ib}from"three";import{BufferGeometry as Ob,CylinderBufferGeometry as Pb,Float32BufferAttribute as al,Vector2 as Qt,Vector3 as Vs}from"three";var hu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var s,a,l,c,h;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=(a=e.radiusTop)!=null?a:r,i=(l=e.radiusBottom)!=null?l: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((c=e.height)!=null?c:e.width),depth:Math.abs((h=e.depth)!=null?h:e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:h,cornerRadius:p,cornerSegments:u,hollow:d}=n.parameters,f;return p||d?f=new Ji(c,h,r,o,i,s,a,l*Math.PI/180,p,p,u,d):f=new Pb(c,h,r,o,i,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:H(P({},n),{type:"CylinderGeometry"})})}};function Kr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function cu(n){return new Qt(n.y,-n.x)}var Ji=class extends Ob{constructor(t,e,r,o,i,s,a,l,c,h,p,u,d=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,h=0);let f=[],g=[],w=[],y=[],b=0,A=r/2,N=new Vs,v=new Vs;d&&t==0&&(t=c),d&&e==0&&(e=h);let k=new Qt(t,A),L=new Qt(e,-A),m=null,I=null,x=null,C=null,T=k.clone().sub(L),O=0,$=0,J=0;u>0&&(O=Math.min(t,e)*(1-u),$=t-O,J=e-O);let ie=k.clone();ie.x-=O;let ue=Math.PI-T.angle(),ce=T.angle(),ve=Math.tan(ce/2),F=Math.tan(ue/2),G=ve+F,B=u?G:F,z=u?G:ve;if(c=Math.min(c,(t-$)/B,T.length()/G),h=Math.min(h,(e-J)/z,T.length()/G),c>0){let V=c/ve;m=k.clone().sub(new Qt(V,c)),u&&(x=m.clone(),x.x-=O-G*c),k.sub(T.clone().setLength(V))}if(h>0){let V=h/F;I=L.clone().sub(new Qt(V,-h)),L.add(T.clone().setLength(V)),u&&(C=I.clone(),C.x-=O-G*h,ie.sub(T.clone().setLength(V)))}T=k.clone().sub(L);let D=T.length()<.5,R=[];for(let V=0;V<=o;V++){let E=[],U=V/o,ne=U*l+a,q=new Qt(Math.sin(ne),Math.cos(ne));C&&I?(K(E,U,q,ue,h,C,-1,!0),K(E,U,q,ce,h,I,-1,!1)):I?(Z(E,q,I.x,0,-1),K(E,U,q,ce,h,I,-1,!1)):s||Z(E,q,e,J,-1);let W=cu(T).normalize();if(Kr(W,q,N),!D)for(let Y=0;Y<=i;Y++){let X=Y/i,Q=T.clone().multiplyScalar(X).add(L);Kr(Q,q,v),g.push(v.x,v.y,v.z),w.push(N.x,N.y,N.z),y.push(U,.5+v.y/r),E.push(b++)}if(x&&m?(K(E,U,q,ue,c,m,1,!1),K(E,U,q,ce,c,x,1,!0)):m?(K(E,U,q,ue,c,m,1,!1),Z(E,q,m.x,0,1)):s||Z(E,q,t,$,1),u&&!D){let Y=cu(T).multiplyScalar(-1).normalize();Kr(Y,q,N);for(let X=0;X<=i;X++){let Q=X/i,se=T.clone().multiplyScalar(-Q).add(ie);Kr(se,q,v),g.push(v.x,v.y,v.z),w.push(N.x,N.y,N.z),y.push(U,.5+v.y/r),E.push(b++)}}u&&!s&&E.push(E[0]),R.push(E)}for(let V=0;V<R.length-1;V++)for(let E=0;E<R[0].length-1;E++){if(s&&u&&E==i)continue;let U=R[V][E],ne=R[V+1][E],q=R[V+1][E+1],W=R[V][E+1],Y=g[q*3+0],X=g[q*3+2];f.push(U,ne,W),(Y!=0||X!=0)&&f.push(ne,q,W)}l<Math.PI*2&&(j(-1,R[0],a),j(1,R[R.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new al(g,3)),this.setAttribute("normal",new al(w,3)),this.setAttribute("uv",new al(y,2));function K(V,E,U,ne,q,W,Y,X){for(let Q=0;Q<p+1;Q++){let se=Q/p,oe=Y<0?se:1-se;X&&(oe-=1),oe*=ne;let he=new Qt(Math.sin(oe),Math.cos(oe)*Y),Ge=he.clone().multiplyScalar(q).add(W);Kr(Ge,U,v),g.push(v.x,v.y,v.z),Kr(he,U,N),w.push(N.x,N.y,N.z),y.push(E,.5+v.y/r),V.push(b++)}}function Z(V,E,U,ne,q){let W=new Vs,Y=new Qt,X=[U,ne];q<0&&X.reverse();for(let Q of X)Y.set(Q,A*q),Kr(Y,E,W),g.push(W.x,W.y,W.z),w.push(0,q,0),y.push(.5,.5),V.push(b++)}function j(V,E,U){let ne=new Qt(Math.sin(U),Math.cos(U)),q=new Qt(-Math.cos(U),Math.sin(U)),W=new Vs,Y=V<0?(se,oe,he)=>f.push(se,oe,he):(se,oe,he)=>f.push(se,he,oe),X=new Qt((t+e+$+J)/4,0);Kr(X,ne,W),g.push(W.x,W.y,W.z),w.push(q.x,0,q.y),y.push(.5,.5);let Q=b++;for(let se of E){let oe=g.slice(se*3,se*3+3);g.push(...oe),w.push(q.x,0,q.y);let he=y.slice(se*2,se*2+2);y.push(...he),b++}for(let se=Q+1;se<b-1;se++)Y(Q,se,se+1);Y(Q,b-1,Q+1)}}};var pu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:h,cornerSegments:p}=n.parameters,u;return c>0||h>0||l<360?u=new Ji(0,t/2,r,o,i,s,a,l*Math.PI/180,c,h,p,0,!0):u=new Ib(t/2,r,o,i,s),u.scale(1,1,e/t),Object.assign(u,{userData:H(P({},n),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as Ab,BufferGeometry as Db,Float32BufferAttribute as ll,Vector3 as Ki}from"three";var uu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:l}=n.parameters,c;return a==0?c=new Ab(t,e,r,o,i,s):c=new hl(t,e,r,o,i,s,a,l),Object.assign(c,{userData:H(P({},n),{type:"CubeGeometry"})})}},cl=Math.PI/2,hl=class extends Db{constructor(t=1,e=1,r=1,o=1,i=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let h=[],p=[],u=[],d=[],f=0,g=0;w("z","y","x",-1,-1,r,e,t,s,i,0),w("z","y","x",1,-1,r,e,-t,s,i,1),w("x","z","y",1,1,t,r,e,o,s,2),w("x","z","y",1,-1,t,r,-e,o,s,3),w("x","y","z",1,-1,t,e,r,o,i,4),w("x","y","z",-1,-1,t,e,-r,o,i,5),a>0&&(y("z","y","x",-1,-1,1,r,e,t,s,0),y("z","y","x",1,-1,-1,r,e,t,s,1),y("z","y","x",-1,1,-1,r,e,t,s,1),y("z","y","x",1,1,1,r,e,t,s,0),y("x","y","z",-1,-1,-1,t,e,r,o,0),y("x","y","z",1,-1,1,t,e,r,o,1),y("x","y","z",-1,1,1,t,e,r,o,0),y("x","y","z",1,1,-1,t,e,r,o,1),y("y","x","z",-1,-1,1,e,t,r,i,0),y("y","x","z",1,-1,-1,e,t,r,i,1),y("y","x","z",1,1,1,e,t,r,i,1),y("y","x","z",-1,1,-1,e,t,r,i,0),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new ll(p,3)),this.setAttribute("normal",new ll(u,3)),this.setAttribute("uv",new ll(d,2));function w(A,N,v,k,L,m,I,x,C,T,O){let $=(m-2*a)/C,J=(I-2*a)/T,ie=m/2-a,ue=I/2-a,ce=x/2,ve=C+1,F=T+1,G=0,B=0,z=new Ki;for(let D=0;D<F;D++){let R=D*J-ue;for(let K=0;K<ve;K++){let Z=K*$-ie;z[A]=Z*k,z[N]=R*L,z[v]=ce,p.push(z.x,z.y,z.z),z[A]=0,z[N]=0,z[v]=x>0?1:-1,u.push(z.x,z.y,z.z),d.push(K/C),d.push(1-D/T),G+=1}}for(let D=0;D<T;D++)for(let R=0;R<C;R++){let K=f+R+ve*D,Z=f+R+ve*(D+1),j=f+(R+1)+ve*(D+1),V=f+(R+1)+ve*D;h.push(K,Z,V),h.push(Z,j,V),B+=6}c.addGroup(g,B,O),g+=B,f+=G}function y(A,N,v,k,L,m,I,x,C,T,O){let $=(I-2*a)/T,J=I/2-a,ie=x/2-a,ue=C/2,ce=T+1,ve=0,F=0,G=new Ki,B=new Ki;for(let z=0;z<l+1;z++){let D=z/l*cl,R=Math.sin(D)*a,K=(1-Math.cos(D))*a,Z=Math.sin(D),j=Math.cos(D);G[N]=(ie+R)*L,G[v]=(ue-K)*m,B[A]=0,B[N]=Z*Math.sign(G[N]),B[v]=j*Math.sign(G[v]);for(let V=0;V<ce;V++){let E=V*$-J;G[A]=E*k,p.push(G.x,G.y,G.z),u.push(B.x,B.y,B.z),d.push(V/T),d.push(0),ve+=1}}for(let z=0;z<l;z++)for(let D=0;D<T;D++){let R=f+D+ce*z,K=f+D+ce*(z+1),Z=f+(D+1)+ce*(z+1),j=f+(D+1)+ce*z;h.push(R,K,j),h.push(K,Z,j),F+=6}c.addGroup(g,F,O),g+=F,f+=ve}function b(A,N,v){let k=new Ki,L=new Ki(t/2,e/2,r/2);L.subScalar(a);let m=[],I=A*N*v>0?(C,T,O)=>h.push(C,T,O):(C,T,O)=>h.push(C,O,T);for(let C=0;C<=l;C++){let T=[],O=cl*(1-C/l),$=Math.cos(O),J=Math.sin(O),ie=0;for(let ue=0;ue<=C;ue++){let ce=Math.cos(ie),ve=Math.sin(ie);k.x=$*ce,k.y=J,k.z=$*ve;let F=L.clone().addScaledVector(k,a);p.push(A*F.x,N*F.y,v*F.z),u.push(A*k.x,N*k.y,v*k.z),d.push(0,0),T.push(f++),ie+=cl/C}m.push(T)}let x=m.length-1;for(let C=0;C<x;C++){let T=m[C],O=m[C+1],$=T.length-1;I(T[0],O[1],O[0]);for(let J=1;J<=$;J++)I(T[J-1],T[J],O[J]),I(T[J],O[J+1],O[J])}}}};import{BufferGeometry as Bb,Float32BufferAttribute as pl,Triangle as Eb,Vector3 as Ar,Vector2 as ul}from"three";var Yr=class extends Bb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new pl(a,3)),this.setAttribute("normal",new pl(c,3)),this.setAttribute("uv",new pl(l,2));return;function h(){var ve;i=Math.min(1-1e-5,i),i==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Ar,g=f.clone(),w=new Eb,y=i*o,b=o-y,A=s+1,N=new Ar,v=(F,G)=>N.subVectors(F,G).normalize(),k=(F,G)=>Array(F).fill(void 0).map(G),L=k(t.length/3,(F,G)=>new Ar().fromArray(t,G*3).setLength(o)),m=[],I=1e6;for(let F=0;F<L.length;F++){let G=L[F],B=[],z,D,R,K=1e10,Z=-1;for(;(Z=e.indexOf(F,Z+1))!=-1;){let U=Z-Z%3;z=e[U+(Z+1)%3],D=e[U+(Z+2)%3],R=G.distanceToSquared(L[z]),K=Math.min(K,R),B.push([z,D,R])}K+=1e-6;let j=[],V=0,E=B.length;for(let U=0;U<E;U++){[z,D,R]=B[V];let ne=((ve=m[z])==null?void 0:ve.includes(F))==!0;R<=K&&j.push(z+ +ne*I),V=B.findIndex(q=>q[0]==D)}m.push(j)}let x=[];{let F=0,G=0,B,z,D=d==3;for(let R=0;R<=s;R++){B=R*(R+1)/2,z=(R+1)*(R+2)/2;for(let K=0;K<s-R;K++)[F,G]=[B+K+R+2,z+K+R+3],x.push(B,z,...D?[G,B]:[F,z],G,F),[B,z]=[F,G];x.push(B,z,B+s+2)}}let C=f.clone(),T=f.clone(),O=f.clone(),$=f.clone(),J=f.clone(),ie=[],ue=k(L.length,()=>k(d,()=>f.clone()));for(let F=0;F<L.length;F++){f.copy(L[F]).normalize(),C.copy(f).multiplyScalar(b);let G=m[F];for(let j=0;j<G.length;j++){let V=G[j],E=G[(j+1)%d];w.setFromPointsAndIndices(L,F,V%I,E%I),w.b.sub(w.a).setLength(1e10).add(w.a),w.c.sub(w.a).setLength(1e10).add(w.a),w.closestPointToPoint(C,ue[F][j])}let B=[],z=[],D=[],R=new Ar;s==0&&[...ue[F]].reduce((j,V)=>j.add(V),R).multiplyScalar(1/d);for(let j=0;j<d;j++){let V=[],E=(j-1+d)%d,U=ue[F][E],ne=ue[F][j];f.copy(U).sub(C),g.copy(ne).sub(C);let q=C.angleTo(f),W=f.angleTo(g),Y=Math.cos(q)*y;s==0?T.copy(R):T.copy(C).setLength(b+Y),z.push(Y);let X=[T,U,ne];for(let Q=0;Q<2;Q++){let se=X[Q],oe=X[Q+1];$.subVectors(se,C),J.subVectors(oe,C),O.crossVectors($,J).normalize();for(let he=0;he<A;he++){let Ge=[q,W][Q]*he/A;f.copy($).applyAxisAngle(O,Ge).add(C),B.push(f.clone()),Q&&(v(f,C),V.push([he==0?se:f.clone(),N.clone()]))}Q&&(v(oe,C),V.push([oe,N.clone()]))}D.push(V)}ie.push(D);let K=2*A,Z=2;for(let j=0;j<d;j++){let V=K*j,E=K*((j+1)%d),U=[B[V]];for(let q=1;q<A;q++){$=B[V+q],J=B[E+q],U.push($);for(let W=1,Y=q-Z+1;W<=Y;W++)f.lerpVectors($,J,W/(Y+1)),f.sub(C).setLength(z[j]).add(C),U.push(f.clone());U.push(J)}for(let q=0;q<A;q++)U.push(B[q+A+V]);U.push(B[E+A]);let ne=x.map(q=>U[q]);a.push(...ne.map(q=>[q.x,q.y,q.z]).flat()),c.push(...ne.map(q=>(v(q,C),[N.x,N.y,N.z])).flat())}}let ce=[];for(let F=0;F<m.length;F++)for(let G=0;G<d;G++){let B=m[F][G];if(B<I){let z=m[B].findIndex(K=>K%I==F),D=ie[F][G],R=ie[B][z];for(let K=0;K<A;K++){let Z=D[K],j=R[A-K],V=D[K+1],E=R[A-(K+1)];[Z,j,V,V,j,E].forEach(U=>{a.push(U[0].x,U[0].y,U[0].z),c.push(U[1].x,U[1].y,U[1].z)})}ce.push(D[0][0],R[A][0],D[A][0],R[0][0])}}for(;ce.length;){let F,G,B,z;[F,G]=ce.splice(0,2);let D=[F];for(;F!=G;)D.push(G),B=ce.indexOf(G),z=B%2,G=ce.splice(B-z,2)[1-z];N.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let R=N.dot(D[0])<0;R&&N.negate();for(let K=1;K<=D.length-2;K++)[D[K+ +R],D[K+1-+R],D[0]].forEach(Z=>{a.push(Z.x,Z.y,Z.z),c.push(N.x,N.y,N.z)})}}function p(){let u=new Ar;for(let L=0;L<a.length;L+=3){u.x=a[L+0],u.y=a[L+1],u.z=a[L+2];let m=v(u)/2/Math.PI+.5,I=k(u)/Math.PI+.5;l.push(m,1-I)}let d=new Ar,f=new Ar,g=new Ar,w=new Ar,y=new ul,b=new ul,A=new ul,N=(L,m,I,x)=>{x<0&&L.x===1&&(l[m]=L.x-1),I.x===0&&I.z===0&&(l[m]=x/2/Math.PI+.5)};for(let L=0,m=0;L<a.length;L+=9,m+=6){d.set(a[L+0],a[L+1],a[L+2]),f.set(a[L+3],a[L+4],a[L+5]),g.set(a[L+6],a[L+7],a[L+8]),y.set(l[m+0],l[m+1]),b.set(l[m+2],l[m+3]),A.set(l[m+4],l[m+5]),w.copy(d).add(f).add(g).divideScalar(3);let I=v(w);N(y,m+0,d,I),N(b,m+2,f,I),N(A,m+4,g,I)}for(let L=0;L<l.length;L+=6){let m=l[L+0],I=l[L+2],x=l[L+4],C=Math.max(m,I,x),T=Math.min(m,I,x);C>.9&&T<.1&&(m<.2&&(l[L+0]+=1),I<.2&&(l[L+2]+=1),x<.2&&(l[L+4]+=1))}function v(L){return Math.atan2(L.z,-L.x)}function k(L){return Math.atan2(-L.y,Math.sqrt(L.x*L.x+L.z*L.z))}}}static fromJSON(t){return new Yr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as _b}from"three";var du=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new Yi(t*.5,i,s):new _b(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(P({},n),{type:"DodecahedronGeometry"})})}},Yi=class extends Yr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(s,a,l,t,e,r),this.type=l}static fromJSON(t){return new Yi(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as Wb,Plane as $b,Shape as Tu,Vector2 as Dr,Vector3 as Jb,MathUtils as bl,LineCurve as vl,QuadraticBezierCurve as Nu,CubicBezierCurve as ks}from"three";import{CubicBezierCurve as js,EllipseCurve as Gb,LineCurve as Us,LineCurve3 as zb,MathUtils as Rb,QuadraticBezierCurve as dl,SplineCurve as Fb,Vector2 as er,Vector3 as mu}from"three";var Xi=1e-12,ri=class{constructor(t){this.position=new er;this.startPosition=new er;this.uuid=Rb.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 ri(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},oi=class extends ri{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new oi(this.parent).copy(this)}},tr=class extends ri{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new oi(this),new oi(this))}static create(e,r){let o=new tr(e,new er(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new tr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}},ml=n=>n,Qi=new er,fl=new er,Vb=new er,jb=new er,Ub=new er,kb=new er,fu=new mu,yu=new mu;function gu(n){let t=new er;t.addVectors(n.v0,Qi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new er;return e.addVectors(n.v2,fl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new js(n.v0,t,e,n.v2)}function Zi(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Hb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function qb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function yl(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 xu(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(a+l,s+c),o.set(a-l,s-c),[r,o]}function bu(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function vu(n,t,e,r,o,i){let s=t.x-n.x,a=t.y-n.y,l=e.x-n.x,c=e.y-n.y,h=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),p;return yl(t,n,e)>Math.PI&&(h*=-1),Zi(c,a)?p=(a+c)*(r/h-.5)*8/3/(s-l):p=(s+l)*(r/h-.5)*8/3/(c-a),o.set(t.x-p*a,t.y+p*s),i.set(e.x+p*c,e.y-p*l),[o,i]}function gl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Su(n,t,e,r,o=.5){let i=Qi.subVectors(t,n).multiplyScalar(o).add(n),s=fl.subVectors(e,t).multiplyScalar(o).add(t),a=Vb.subVectors(r,e).multiplyScalar(o).add(e),l=i,c=jb.subVectors(s,i).multiplyScalar(o).add(i),h=Ub.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=kb.subVectors(h,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,u.x,u.y,h.x,h.y,p.x,p.y,r.x,r.y]}function wu(n,t,e=12,r=!0){let o=yu.set(0,0,0),i,s=0,a=[];for(let l=0;l<t.length;l++){let c=ml(t[l]),h=Qi,p=Xr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof js||c instanceof dl||c instanceof Us){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),i!==void 0&&qb(i,o))continue;i===void 0&&(i=fu),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Lu(n,t,e,r=12,o=!0){let i=yu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=ml(t[l]),p=Qi,u=Xr(h,r);a.push(u);for(let d=0;d<=u;d++)if(h instanceof js||h instanceof dl||h instanceof Us){if(h.getPoint(d/u,p),i.set(p.x,p.y,0),c!=null&&c.equals(i))continue;c===void 0?c=fu:(n.setXYZ(s,c.x,c.y,c.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),c.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function xl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Xr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Xr(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Xr(n[0].roundedCurveCorner,t)*.5),r}function Xr(n,t=12){return n&&n instanceof Gb?t*2:n&&(n instanceof Us||n instanceof zb)?1:n&&n instanceof Fb?t*n.points.length:t}function Cu(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=ml(t[s]),l=Xr(a,e),c=Qi;for(let h=0;h<=l;h++)if(a instanceof js||a instanceof dl||a instanceof Us){if(a.getPoint(h/l,c),o!==void 0&&Hb(o,c,Xi))continue;o===void 0&&(o=fl),o.copy(c),n.push(c.x,c.y),i++}}return Zi(n[0],n[n.length-2],Xi)&&Zi(n[1],n[n.length-1],Xi)&&(n.pop(),n.pop()),r&&i>1&&!(Zi(n[i-1],n[1],Xi)&&Zi(n[i-2],n[0],Xi))&&(n.push(n[0],n[1]),i++),n}var Sl=new Dr,Kb=new Dr,Yb=new Dr,Xb=new Dr,Zb=new Dr,Qb=new Dr,Oe=class extends Tu{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Wb;this.plane=new $b(new Jb(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=bl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Oe;return i.isClosed=e.isClosed,i.points=e.points.map(s=>tr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Oe.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){return this.points.findIndex(r=>r.uuid===e)}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=Sl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=bl.generateUUID()){let i;e instanceof Dr?i=e:i=new Dr(e,r);let s=new tr(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return wu(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=xl(this.points,e,!1),this.roundedCurveDivisions=xl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Lu(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Cu(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Xr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let h=i[l];if(a<o+h)return[l,(a-o+1)/h];o+=h}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(gl(i,s)){let p=i.position.distanceTo(s.position);return i.position.distanceTo(Sl.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=a[p];return(r-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){gl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){var o;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];if(i===0)this.moveTo(a.position.x,a.position.y);else{let l=this.points[i-1];this._applyCurveForPoint(a,l)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let i=this.points[0],s=this.points[this.points.length-1];this._applyCurveForPoint(i,s)}if(this.points.length>2){let i=0;for(let s=0,a=this.points.length;s<a;s++){let l=this.points[s],c=l.roundness;if(!l.controlsMoved()&&c>0){let h=l.curveBefore,p=l.curveAfter;if(h===void 0||p===void 0)continue;let u=l.roundedCurveBefore,d=l.roundedCurveAfter,f=h.getLength(),g=p.getLength(),w=Math.min(c,f*.499),y=Math.min(c,g*.499),b=Math.min(w,y),A=1-b/f,N=b/g,v=h.getPointAt(A,Sl),k=p.getPointAt(N,Kb);this._subSplitCurve(h,u,A,v,void 0),this._subSplitCurve(p,d,N,void 0,k);let L;if(this.useCubicForRoundedCorners){let m=yl(v,l.position,k)/2,I=Math.tan(m)*v.distanceTo(l.position),[x,C]=xu(v,k,I,Yb,Xb),T=bu(x,C,l.position),[O,$]=vu(T,v,k,I,Zb,Qb);L=new ks(v.clone(),O.clone(),$.clone(),k.clone())}else L=new Nu(v.clone(),l.position.clone(),k.clone());l.roundedCurveCorner=L,this.roundedCurves.splice(s+i,0,L),i++}}}e&&((o=this.eventDispatcher)==null||o.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,o,i,s){if(e instanceof vl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let a=e,l=r,c=a.getUtoTmapping(o,0),h=Su(a.v0,a.v1,a.v2,a.v3,c);return i!==void 0&&(l.v0.set(h[0],h[1]),l.v1.set(h[2],h[3]),l.v2.set(h[4],h[5]),l.v3.set(h[6],h[7])),s!==void 0&&(l.v0.set(h[6],h[7]),l.v1.set(h[8],h[9]),l.v2.set(h[10],h[11]),l.v3.set(h[12],h[13])),l}return r}clone(){let e=new Oe(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){var o;this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let i=0;i<r;i++){let s=i*7,a=e.points[s+0],l=e.points[s+1],c=e.points[s+2],h=e.points[s+3],p=e.points[s+4],u=e.points[s+5],d=e.points[s+6],f=new tr(bl.generateUUID(),new Dr(a,l));f.controls[0].position.set(c,h),f.controls[1].position.set(p,u),f.roundness=d,this.points.push(f)}return this.shapeHoles=(o=e.shapeHoles)!=null&&o.length?e.shapeHoles.map(i=>{let s=new Oe;return s.fromJSON(i),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof ks&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,l;for(a=0,l=i.length;a<l;a++)i[a]instanceof Nu&&(i[a]=gu(i[a]));for(a=0,l=i.length;a<l;a++){let p=i[a],u=a>0?i[a-1]:null,d;p instanceof ks?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof vl&&(d=this.createPoint(p.v1)),d!==void 0&&(u!==null&&r(d,u),s.push(d))}let c=i[i.length-1],h=!1;return c instanceof ks?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof vl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof Tu&&(this.shapeHoles=e.holes.map(i=>{let s=new Oe;return s.fromShape(i),s})),this.update(),this}};var Ll=Math.PI*2;function wl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function ev(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Mu(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 tv(n,t,e,r,o,i,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(i,2),u=Math.pow(s,2),d=Math.pow(a,2),f=h*p-h*d-p*u;f<0&&(f=0),f/=h*d+p*u,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/i*a,w=f*-i/o*s,y=g+(n+e)/2,b=w+(t+r)/2,A=(s-g)/o,N=(a-w)/i,v=(-s-g)/o,k=(-a-w)/i,L=Mu(1,0,A,N),m=Mu(A,N,v,k);return!c&&m>0&&(m-=Ll),c&&m<0&&(m+=Ll),{centerx:y,centery:b,ang1:L,ang2:m}}function Ou({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,h=(t-r)/2;if(c===0&&h===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(h,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let u=tv(n,t,e,r,o,i,c,h,s,a),{ang1:d,ang2:f}=u,{centerx:g,centery:w}=u,y=Math.abs(f)/(Ll/4);Math.abs(1-y)<1e-7&&(y=1);let b=Math.max(Math.ceil(y),1);f/=b;for(let A=0;A<b;A++)l.push(ev(d,f)),d+=f;return l.map(A=>{let{x:N,y:v}=wl(A[0],o,i,g,w),{x:k,y:L}=wl(A[1],o,i,g,w),{x:m,y:I}=wl(A[2],o,i,g,w);return{x1:N,y1:v,x2:k,y2:L,x:m,y:I}})}import{BufferAttribute as qs,BufferGeometry as sv}from"three";var qe;(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"})(qe||(qe={}));var ot;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ot||(ot={}));function de(n,t){if(!n)throw t||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){de(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){de(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){de(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){de(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,a,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)?(s=n.edgeEval(t,r,e),a=n.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,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)?(s=n.transEval(t,r,e),a=n.transEval(r,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,o.t)):i.t=(r.t+e.t)/2},n}(),en=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}(),Hs=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}(),ii=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}(),Pu=function(){function n(){var t=new ii,e=new en,r=new Hs(0),o=new Hs(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 Hs(0),r=new Hs(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;de(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;de(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new ii,e=new ii,r=new en,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 ii;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new en;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new en;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 ii;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new en;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,a;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),a+l-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,a,l,c;for(i=t,i=t;(o=i.next)!==t;i=o){de(o.prev===i),l=o.anEdge;do de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l),de(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(de(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){de(s.prev===a),l=s.anEdge;do de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l),de(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(de(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)de(l.Sym.next===c.Sym),de(l.Sym!==l),de(l.Sym.Sym===l),de(l.Org!==null),de(l.Dst!==null),de(l.Lnext.Onext.Sym===l),de(l.Onext.Sym.Lnext===l);de(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),Iu=function(){function n(){this.handle=null}return n}(),Au=function(){function n(){this.key=null,this.node=0}return n}(),rv=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 Iu,this.handles[r]=new Au;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,de(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Iu;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Au}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;de(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}(),Cl=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}(),Du=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),ov=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new Du,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 Du;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}(),iv=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var a=ae.edgeEval(i.Dst,o,i.Org),l=ae.edgeEval(s.Dst,o,s.Org);return a>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&de(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){de(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 Cl;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 qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),n.finishRegion(t,s),a=i.eUp,s=i}return a},n.addRightEdges=function(t,e,r,o,i,s){var a,l,c,h,p=!0;c=r;do de(ae.vertLeq(c.Org,c.Dst)),n.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,h=i;a=n.regionBelow(l),c=a.eUp.Sym,c.Org===h.Org;)c.Onext!==h&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(h.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=n.isWindingInside(t,a.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(t,l)&&(n.addWinding(c,h),n.deleteRegion(t,l),t.mesh.delete(h)),p=!1,l=a,h=c;l.dirty=!0,de(l.windingNumber-c.winding===a.windingNumber),s&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=ae.vertL1dist(e,t),i=ae.vertL1dist(r,t),s=.5*i/(o+i),a=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(ae.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(de(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,a=i.Org,l=o.Dst,c=i.Dst,h,p,u=new ii,d,f;if(de(!ae.vertEq(c,l)),de(ae.edgeSign(l,t.event,s)<=0),de(ae.edgeSign(c,t.event,a)>=0),de(s!==t.event&&a!==t.event),de(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(h=Math.min(s.t,l.t),p=Math.max(a.t,c.t),h>p))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(c,s,a)>0)return!1}else if(ae.edgeSign(l,a,s)<0)return!1;return n.debugEvent(t),ae.intersect(l,s,c,a,u),de(Math.min(s.t,l.t)<=u.t),de(u.t<=Math.max(a.t,c.t)),de(Math.min(c.s,l.s)<=u.s),de(u.s<=Math.max(a.s,s.s)),ae.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),d=ae.vertLeq(s,a)?s:a,ae.vertLeq(d,u)&&(u.s=d.s,u.t=d.t),ae.vertEq(u,s)||ae.vertEq(u,a)?(n.checkForRightSplice(t,e),!1):!ae.vertEq(l,t.event)&&ae.edgeSign(l,t.event,u)>=0||!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,u)<=0?c===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),f=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,f,!0),!0):(ae.edgeSign(l,t.event,u)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ae.edgeSign(c,t.event,u)<=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=u.s,o.Org.t=u.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,l,a,c),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&n.checkForIntersect(t,e),ae.vertEq(a.Org,t.event)&&(t.mesh.splice(i.Oprev,a),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),c=!0),ae.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,s,null),c=!0),c){n.addRightEdges(t,e,r.Onext,i,i,!0);return}ae.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,a,l;if(o=e.eUp,ae.vertEq(o.Org,r)){de(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}de(!1),e=n.topRightRegion(e),l=n.regionBelow(e),s=l.eUp.Sym,i=a=s.Onext,l.fixUpperEdge&&(de(i!==s),n.deleteRegion(t,l),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,a,l,c=new Cl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=ae.vertLeq(a.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var h=t.mesh.connect(a.Dnext,e.anEdge);l=h.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);de(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(t,i,null);a.Onext===s?n.connectRightVertex(t,o,a):n.addRightEdges(t,o,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new Cl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new ov(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(de(e.fixUpperEdge),de(++r===1)),de(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new rv(i,ae.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,de(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),nv=function(){function n(){this.mesh=new Pu,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=qe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,a,l=[0,0,0],c=[0,0,0],h=[0,0,0],p=[0,0,0],u=[0,0,0],d=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var w=0;w<3;++w)i=e.coords[w],c[w]=i,f[w]=e,l[w]=i,d[w]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)i=e.coords[y],i<c[y]&&(c[y]=i,f[y]=e),i>l[y]&&(l[y]=i,d[y]=e);var b=0;if(l[1]-c[1]>l[0]-c[0]&&(b=1),l[2]-c[2]>l[b]-c[b]&&(b=2),c[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[b],o=d[b],h[0]=r.coords[0]-o.coords[0],h[1]=r.coords[1]-o.coords[1],h[2]=r.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],u[0]=h[1]*p[2]-h[2]*p[1],u[1]=h[2]*p[0]-h[0]*p[2],u[2]=h[0]*p[1]-h[1]*p[0],s=u[0]*u[0]+u[1]*u[1]+u[2]*u[2],s>a&&(a=s,t[0]=u[0],t[1]=u[1],t[2]=u[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(h)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,a=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var h=t.fHead.next;h!==t.fHead;h=h.next)if(h.n=-1,!!h.inside){i=h.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=a,a++),l++,i=i.Lnext}while(i!==h.anEdge);if(l>r)throw"Face vertex greater that support polygon";h.n=s,++s}this.elementCount=s,e===ot.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var u=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){i=h.anEdge,l=0;do{var c=i.Org;this.elements[u++]=c.n,l++,i=i.Lnext}while(i!==h.anEdge);for(var d=l;d<r;++d)this.elements[u++]=-1;if(e===ot.CONNECTED_POLYGONS){i=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==h.anEdge);for(var f=l;f<r;++f)this.elements[u++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,h=0;i=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[h++]=i,this.elements[h++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Pu),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=qe.ODD),e===void 0&&(e=ot.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),iv.computeInterior(this,s);var a=this.mesh;return e===ot.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===ot.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function xo(n){var t=n.windingRule,e=t===void 0?qe.ODD:t,r=n.elementType,o=r===void 0?ot.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,l=a===void 0?2:a,c=n.normal,h=c===void 0?[0,0,1]:c,p=n.contours,u=p===void 0?[]:p,d=n.strict,f=d===void 0?!0:d,g=n.debug,w=g===void 0?!1:g;if(!u&&f)throw new Error("Contours can't be empty");if(!!u){var y=new nv;n.edgeCreateCallback&&(y.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(y.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<u.length;b++)y.addContour(l||2,u[b]);return y.tesselate(e,o,s,l,h,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:w?y.mesh:void 0}}}var BD=qe.ODD,ED=qe.NONZERO,_D=qe.POSITIVE,GD=qe.NEGATIVE,zD=qe.ABS_GEQ_TWO,RD=ot.POLYGONS,FD=ot.CONNECTED_POLYGONS,VD=ot.BOUNDARY_CONTOURS;var ni=class extends sv{constructor(e,r=12,o={}){var f,g,w;super();this.type="ShapeGeometry";this.windingRule=qe.ODD;this.elementType=ot.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:qe.ODD,elementType:ot.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(y=>y.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let y=0,b=i.length/2;y<b;y++){let A=y*2,N=i[A+0],v=i[A+1];if(h!==void 0&&N!==h&&(l=!1),p!==void 0&&v!==p&&(c=!1),h=N,p=v,!l&&!c)break}!l&&!c&&(a=xo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=(f=a==null?void 0:a.vertexCount)!=null?f:1,d=(g=a==null?void 0:a.elementCount)!=null?g:1;if(this._positionAttribute=new qs(new Float32Array(u*3),3),this._normalAttribute=new qs(new Float32Array(u*3),3),this._uvAttribute=new qs(new Float32Array(u*2),2),this._indexAttribute=new qs(new Uint32Array(d*3),1),a){let y=1/0,b=-1/0,A=1/0,N=-1/0;for(let L=0,m=u;L<m;L++){let I=L*2,x=a.vertices[I+0],C=a.vertices[I+1];x<y&&(y=x),x>b&&(b=x),C<A&&(A=C),C>N&&(N=C)}let v=b-y,k=N-A;for(let L=0,m=u;L<m;L++){let I=L*2,x=a.vertices[I+0],C=a.vertices[I+1],T=(x-y)/v,O=(C-A)/k;this._positionAttribute.setXYZ(L,x,C,0),this._normalAttribute.setXYZ(L,0,0,1),this._uvAttribute.setXY(L,T,O)}for(let L=0,m=d;L<m;L++){let I=L*3,x=a.elements[I+0],C=a.elements[I+1],T=a.elements[I+2];this._indexAttribute.setX(I+0,x),this._indexAttribute.setX(I+1,C),this._indexAttribute.setX(I+2,T)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((w=a==null?void 0:a.elementCount)!=null?w:1)*3)}clone(){let e=new ni(this._shape,this._curveSegments);return e.userData=Ri(this.userData),e}};import{BufferAttribute as $s,BufferGeometry as av}from"three";var Ws=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*Ws.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*Ws.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*t);s+=3*t;let l=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,2*t);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=l,this.uvs=c,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)}},tn=Ws;tn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Tl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),si=class extends av{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(L=>{let m=L.extractShapePointsToFlatArray([],i),I=[];for(let x=m.length-1;x>=1;x-=2){let C=m[x-1],T=m[x-0];I.push(C,T)}return I}),c=xo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=xo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let p=c.elementCount;if(h){c.elementCount+=h.elementCount;for(let L=0;L<h.elements.length;L++){let m=h.elements[L],I=L%2===0?c.vertexCount:0;c.elements.push(m+I)}for(let L=0;L<h.vertexIndices.length;L++){let m=h.vertexIndices[L],I=c.vertexCount;c.vertexIndices.push(m+I)}for(let L=0;L<h.vertices.length;L++){let m=h.vertices[L];c.vertices.push(m)}}let u=1/0,d=-1/0,f=1/0,g=-1/0;for(let L=0,m=c.vertexCount;L<m;L++){let I=L*2,x=c.vertices[I+0],C=c.vertices[I+1];x<u&&(u=x),x>d&&(d=x),C<f&&(f=C),C>g&&(g=C)}this._minX=u,this._minY=f,this._width=d-u,this._height=g-f;let w=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new tn(w);let y=[],b=[];for(let L=c.elementCount-1;L>=0;L--){let m=L>=p,I=L*2,x=c.elements[I+0],C=c.elements[I+1],T=x+C,O={start:x,count:C,normals:[],continuous:[],concave:[]},$=x,J=T-1,ie=x+1,ue=this._shape.roundedCurves.length;do{let G=$-x,B=c.vertices[J*2+0],z=c.vertices[J*2+1],D=c.vertices[$*2+0],R=c.vertices[$*2+1],K=c.vertices[ie*2+0],Z=c.vertices[ie*2+1],j=D-B,V=R-z,E=Math.sqrt(j*j+V*V);j/=E,V/=E;let U=D-K,ne=R-Z,q=Math.sqrt(U*U+ne*ne);U/=q,ne/=q,O.normals[G*2+0]=-ne,O.normals[G*2+1]=U,O.concave[G]=j*ne-V*U>0;let W=c.vertexIndices[$];if(Array.isArray(W))O.continuous[G]=!1;else{let[Y,X]=this._shape.getCurveIndexFromVertexId(W-1,!0);if(X>0&&X<1)O.continuous[G]=!0;else{let Q=X===1?Y+1:Y-1;Q=(Q+ue)%ue;let se=X===1?0:1,oe=this._shape.roundedCurves[Y].getTangent(X),he=this._shape.roundedCurves[Q].getTangent(se);O.continuous[G]=oe.dot(he)>.95}}m&&(O.normals[G*2+0]*=-1,O.normals[G*2+1]*=-1),[J,$,ie]=[$,ie,ie+1],ie>=T&&(ie-=C)}while(ie!==x+1);let ce=[];ce.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(x*2,T*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((G,B)=>[B,B]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(x*2,T*2)});for(let G=1;G<=this._bevelSegments;G++){let B=G/this._bevelSegments*Math.PI/2,z=(1-Math.cos(B))*this._bevelSize,D=[],R=[],K=[],Z=[],j=0;for(let E=0;E<C;E++){let U=E*2,ne=(E-1+C)%C*2,q=c.vertices[O.start*2+U+0],W=c.vertices[O.start*2+U+1],Y=-O.normals[ne+0]*z,X=-O.normals[ne+1]*z,Q=-O.normals[U+0]*z,se=-O.normals[U+1]*z;if(O.concave[E]||!O.concave[E]&&m){let oe=Math.atan2(X,Y),he=Math.atan2(se,Q);he>oe&&(he-=Math.PI*2);let Ge=he-oe;if(O.continuous[E]||m){let ge=oe+Ge/2,$e=Math.cos(ge)*z,Te=Math.sin(ge)*z;D[2*j+0]=q+$e*(m?-1:1),D[2*j+1]=W+Te*(m?-1:1),Z[j]=E,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Ge)/Math.PI));for(let $e=0;$e<=ge;$e++){let Te=oe+Ge*($e/ge),ht=Math.cos(Te)*z,Lt=Math.sin(Te)*z;D[2*j+0]=q+ht,D[2*j+1]=W+Lt,Z[j]=E,j++}}}else D[2*j+0]=q+Y,D[2*j+1]=W+X,Z[j]=E,R[E]=j,j++,D[2*j+0]=q,D[2*j+1]=W,Z[j]=E,j++,D[2*j+0]=q+Q,D[2*j+1]=W+se,Z[j]=E,K[E]=j,j++}let V=xo({windingRule:qe.POSITIVE,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:E=>{let ne=E.Org.idx,q=Z[ne],W=Z[(ne+1)%Z.length];E.idx=[q,W],E.Sym.idx=[W,q]},vertexIdCallback:E=>{let U=E.Lprev.idx;return[U?U[1]:0,E.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!V.vertexCount)break;for(let E=0;E<V.vertexIndices.length;E++){let[U,ne]=V.vertexIndices[E];if(U===ne)continue;let q=ne;ne<U&&(q+=C);for(let W=U;W<q;W++){let Y=W%C,X=(W+1)%C;if(!O.continuous[Y]||!O.continuous[X]){V.vertexIndices[E]=[U,Y],V.vertexIndices.splice(E+1,0,[X,ne]),V.vertices.splice((E+1)*2,0,V.vertices[E*2],V.vertices[E*2+1]);break}}}ce.push({bevelI:G,angle:B,size:z,boundary:V,reverseMap:Z,insetPoints:D})}let ve=(G,B,z)=>{let D=0,R=G.boundary.vertexIndices.length;for(;D<R&&z(G.boundary.vertexIndices[B]);)B=(B+1)%R,D++;return D},F=y.length;for(let G=1;G<ce.length;G++){let B=ce[G-1],z=ce[G],D=B.boundary.vertexIndices.length,R=z.boundary.vertexIndices.length;if(!D||!R)break;let K=O.concave.length,Z=0,j=Tl(Z,C);for(;!B.boundary.vertexIndices.filter(j).length||!z.boundary.vertexIndices.filter(j).length;)Z++,j=Tl(Z,C);let V=B.boundary.vertexIndices.findIndex(j),E=z.boundary.vertexIndices.findIndex(j);do V=(V+1)%D;while(j(B.boundary.vertexIndices[V]));do E=(E+1)%R;while(j(z.boundary.vertexIndices[E]));Z=(Z+1)%C;let U=Z,ne=this.buildBevelVert(O,B,(V-1+D)%D),q=this.buildBevelVert(O,z,(E-1+R)%R),W=ne,Y=q,X,Q,se=!1;do{j=Tl(Z,C);let oe=ve(B,V,j),he=ve(z,E,j),Ge=se;if(se=!1,oe&&!he){for(let ge=0;ge<oe;ge++)X=this.buildBevelVert(O,B,(V+ge)%D,ge/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X;se=!0}else if(!oe&&he)for(let ge=0;ge<he;ge++)Q=this.buildBevelVert(O,z,(E+ge)%R,ge/(he-1)),y.push(Y.topN,W.topP,Q.topP),y.push(W.bottomP,Y.bottomN,Q.bottomP),Y=Q;else if(oe&&he)if(X=this.buildBevelVert(O,B,V,0),Q=this.buildBevelVert(O,z,E,0),Ge?(y.push(W.topN,Q.topP,Y.topN),y.push(W.topN,X.topP,Q.topP),y.push(Q.bottomP,W.bottomN,Y.bottomN),y.push(Q.bottomP,X.bottomP,W.bottomN)):(y.push(Y.topN,W.topN,X.topP),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,Y.bottomN),y.push(X.bottomP,Y.bottomN,Q.bottomP)),W=X,Y=Q,oe===he)for(let ge=1;ge<oe;ge++)X=this.buildBevelVert(O,B,(V+ge)%D,ge/(oe-1)),Q=this.buildBevelVert(O,z,(E+ge)%R,ge/(he-1)),y.push(W.topN,X.topP,Y.topN),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,Y.bottomN),y.push(X.bottomP,Y.bottomN,Q.bottomP),W=X,Y=Q;else if(oe>he){let ge=oe/he,$e=0;for(let Te=1;Te<oe;Te++)X=this.buildBevelVert(O,B,(V+Te)%D,Te/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X,Te>($e+1)*ge&&($e++,Q=this.buildBevelVert(O,z,(E+$e)%R,$e/(he-1)),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,Y.bottomN,Q.bottomP),Y=Q)}else{let ge=he/oe,$e=0;for(let Te=1;Te<he;Te++)Q=this.buildBevelVert(O,z,(E+Te)%R,Te/(he-1)),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,Y.bottomN,Q.bottomP),Y=Q,Te>($e+1)*ge&&($e++,X=this.buildBevelVert(O,B,(V+$e)%D,$e/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X)}V=(V+oe)%D,E=(E+he)%R,Z=(Z+1)%K}while(Z!==U)}{let G=ce[0];for(let B=0,z=G.boundary.vertexCount;B<z;B++){let D=this.buildBevelVert(O,G,B),R=this.buildBevelVert(O,G,(B+1)%z);y.push(R.topP,D.topN,D.bottomN),y.push(R.topP,D.bottomN,R.bottomP)}}if(m){let G=[];for(let B=y.length-1;B>=F+2;B-=3){let z=y[B-2],D=y[B-1],R=y[B-0];G.push(R,D,z)}y.splice(F,y.length-F,...G)}if(m){let G=[];for(let B=ce[ce.length-1].boundary.vertices.length-1;B>=1;B-=2){let z=ce[ce.length-1].boundary.vertices[B-1],D=ce[ce.length-1].boundary.vertices[B-0];G.push(z,D)}b.push(G)}if(!m){let G=ce[ce.length-1],B=xo({windingRule:ce.length>1?qe.POSITIVE:qe.ODD,elementType:ot.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...b]});if(!B)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let z=0;z<B.elementCount*3;z+=3){let D=this.buildSurfaceVert(B,B.elements[z+0]),R=this.buildSurfaceVert(B,B.elements[z+1]),K=this.buildSurfaceVert(B,B.elements[z+2]);y.push(D.top,R.top,K.top),y.push(K.bottom,R.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new $s(Uint32Array.from(y),1),N=new $s(this._buffer.positions,3),v=new $s(this._buffer.normals,3),k=new $s(this._buffer.uvs,2);N.needsUpdate=!0,v.needsUpdate=!0,k.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",N),this.setAttribute("normal",v),this.setAttribute("uv",k),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(i-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),h=c*3,p=c*2,u={top:c+0,bottom:c+1};return this._buffer.positions[h+0]=i,this._buffer.positions[h+1]=s,this._buffer.positions[h+2]=this._depth,this._buffer.normals[h+0]=0,this._buffer.normals[h+1]=0,this._buffer.normals[h+2]=1,this._buffer.uvs[p+0]=a,this._buffer.uvs[p+1]=l,this._buffer.positions[h+3]=i,this._buffer.positions[h+4]=s,this._buffer.positions[h+5]=0,this._buffer.normals[h+3]=0,this._buffer.normals[h+4]=0,this._buffer.normals[h+5]=-1,this._buffer.uvs[p+2]=a,this._buffer.uvs[p+3]=l,this.vertexCache[o]=u,u}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=r.boundary.vertexIndices[o],c,h,p,u;a!==l?(h=a,c=l,u=!1,p=e.continuous[h]&&e.continuous[c]):(c=a,h=(c-1+e.count)%e.count,u=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||u);let d=Math.cos(r.angle),f=Math.sin(r.angle),g=o*2,w=c*2,y=h*2,b=r.boundary.vertices[g+0],A=r.boundary.vertices[g+1],N=(1-f)*this._bevelSize,v=(b-this._minX)/this._width,k=(A-this._minY)/this._height,L=e.normals[w+0],m=e.normals[w+1],I=e.normals[y+0],x=e.normals[y+1];if(u){let J=I-L,ie=x-m;L=L+J*(1-i),m=m+ie*(1-i);let ue=Math.sqrt(L*L+m*m);L/=ue,m/=ue}let C=this._buffer.get(p?2:4),T=C*3,O=C*2,$={i:o,fi:c,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[T+0]=b,this._buffer.positions[T+1]=A,this._buffer.positions[T+2]=this._depth-N,this._buffer.normals[T+0]=L*d,this._buffer.normals[T+1]=m*d,this._buffer.normals[T+2]=f,this._buffer.uvs[O+0]=v,this._buffer.uvs[O+1]=k,this._buffer.positions[T+3]=b,this._buffer.positions[T+4]=A,this._buffer.positions[T+5]=N,this._buffer.normals[T+3]=L*d,this._buffer.normals[T+4]=m*d,this._buffer.normals[T+5]=-f,this._buffer.uvs[O+2]=k,this._buffer.uvs[O+3]=v,p||(C+=2,T+=6,O+=4,$.topP=C+0,$.bottomP=C+1,this._buffer.positions[T+0]=b,this._buffer.positions[T+1]=A,this._buffer.positions[T+2]=this._depth-N,this._buffer.normals[T+0]=I*d,this._buffer.normals[T+1]=x*d,this._buffer.normals[T+2]=f,this._buffer.uvs[O+0]=v,this._buffer.uvs[O+1]=k,this._buffer.positions[T+3]=b,this._buffer.positions[T+4]=A,this._buffer.positions[T+5]=N,this._buffer.normals[T+3]=I*d,this._buffer.normals[T+4]=x*d,this._buffer.normals[T+5]=-f,this._buffer.uvs[O+2]=k,this._buffer.uvs[O+3]=v),this.vertexCache[s]=$,$}clone(){let e=new si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ri(this.userData),e}};var ut=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var c,h,p,u,d,f,g;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs((h=e.height)!=null?h:e.width),i=Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(p=e.depth)!=null?p:0),s=(u=n.shape)!=null?u:t==null?void 0:t.shape,a=(d=s==null?void 0:s.roundness)!=null?d:e.roundness;s!==void 0&&(s instanceof Oe?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Oe(r,o).fromJSON(s),((f=n.parameters)==null?void 0:f.roundness)!==void 0&&((g=n.parameters)==null?void 0:g.roundness)>0&&s.update(!1));let l=s!=null?s:new Oe(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,extrudeDepth:i,roundness:a}),shape:l}}static build(n){let{extrudeDepth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new ni(n.shape,o):s=new si(n.shape,t,e,o,r),Object.assign(s,{userData:H(P({},n),{type:"VectorGeometry"})})}};import{MathUtils as Eu,Vector2 as _u}from"three";var Gu=Math.PI*2,zu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c=n.shape,h=t*.5,p=e*.5,u=lv(c,h,p,o*Math.PI/180,r,i);c.isClosed=!0,c.update();let d=ut.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:H(P({},n),{type:"EllipseGeometry"})})}};function lv(n,t,e,r,o,i){if(r>=Gu)return o>30||o%4===0?(hv(n,t,e,i),Math.round(o/4)):Bu(n,r,o,t,e,i);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=Ou({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?cv(n,s.x,s.y,c,o,t,e,i):Bu(n,r,o,t,e,i)}function cv(n,t,e,r,o,i,s,a){let l=Math.round(o/r.length);n.addPoint(ai(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=n.points[c],d=ai(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),d.controls[0].position.set(p.x2,p.y2),n.addPoint(d)}return a>0?Ru(n,i,s,a):n.addPoint(ai(0,0)),l}function Bu(n,t,e,r,o,i){let s=-t/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*r,h=Math.cos(l)*o;n.addPoint(ai(c,h))}return t<Gu?i>0?Ru(n,r,o,i):n.addPoint(ai(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Fu(n,r,o,i)),1}function hv(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,l=e*s;n.addPoint(Js(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(Js(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Js(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(Js(o,i-e,o+a,i-e,o-a,i-e)),r>0&&Fu(n,t,e,r)}function ai(n,t){return new tr(Eu.generateUUID(),new _u(n,t))}function Js(n,t,e,r,o,i){let s=ai(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Ru(n,t,e,r){Vu(n,t,e,r).forEach(i=>n.addPoint(i))}function Fu(n,t,e,r){let o=Vu(n,t,e,r),i=new Oe;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Vu(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new _u(o/t,i/e),a=n.points.map(l=>{let c=l.clone();return c.uuid=Eu.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),h=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(h),l.controls[1].position.copy(c)}),a}import{BufferGeometry as pv,Float32BufferAttribute as Nl,Vector3 as ju}from"three";var Uu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var a,l,c;let e=Object.assign({},(a=t==null?void 0:t.parameters)!=null?a:{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((l=e.height)!=null?l:r),i=Math.abs((c=e.depth)!=null?c:r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:h,cornerSegments:p}=n.parameters,u=new rn(!1,t,e,r,o,i,s,a,l,c,h,p);return Object.assign(u,{userData:H(P({},n),{type:"HelixGeometry"})})}},rn=class extends pv{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,l=1,c=1,h=1,p=1,u=1){super();let d=t&&s===1;d&&(u=0),p>100&&(p=100);let f=()=>new ju,g=new ju,w=f(),y=f(),b=f(),A,N,v,k,L,m,I,x,C=f(),T=f(),O=f(),$=f(),J=f(),ie=f(),ue=f(),ce=f(),ve=r-2*l+.001,F=ve/s,G=Math.ceil(a*s),B=G+1,z=ve/G,D=-ve/2,R=h+1,K=2*Math.PI/h,Z=Math.PI/2/u,j=.01,V=Math.min((1-p/100)*l,l-j),E=l-V,U=0,ne=2,q=u*ne+ne,W=R*q/ne,Y=W+R*B,X=R*(B+q),[Q,se,oe]=[3,3,2].map(ke=>Array(X*ke).fill(0)),he=[],Ge=i-l;function ge(ke,gt){let _t=Math.PI/2;m=gt*z,x=2*Math.PI*(m%F)/F+_t,m+=D,I=Math.sin(x)*Ge,L=Math.cos(x)*Ge,t?ke.set(L,I,m):ke.set(L,m,I)}ge(g,-1e-10),ge(w,0),C.copy(g),ge(g,1);let $e=g.distanceTo(w),Te=E+V,ht=$e*G+2*Te,Lt=V,Lr=ht-Te;for(let ke=0;ke<=G;ke++){ge(y,ke),ce.subVectors(y,C).normalize(),C.copy(y),ie.copy(y).setComponent(+t+1,0).normalize(),ue.crossVectors(ce,ie).normalize();let gt=ke===0,_t=ke===G,An=gt?3*Math.PI/2:Z,Dn=gt?Lt:Lr,Bn=gt?R:Y,En=gt?0:X-R,_n=ce.clone().multiplyScalar(gt?-E:E).add(y),Gn=ce.clone().multiplyScalar(gt?-1:1).normalize();for(let Ut=0;Ut<R;Ut++){let Ei=Ut*K;if(T.addVectors(g.copy(ie).multiplyScalar(l*Math.cos(Ei)),w.copy(ue).multiplyScalar(l*Math.sin(Ei))),O.copy(T).normalize(),gt||_t){d||(U=En+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=_n.getComponent(pt),se[U*3+pt]=Gn.getComponent(pt)}),oe[U*2]=+_t,oe[U*2+1]=Ut/h),w.copy(O).multiplyScalar(V),b.addVectors(y,w);for(let pt=0;pt<u;pt++){let Oo=pt*Z+An;$.addVectors(g.copy(ce).multiplyScalar(E*Math.sin(Oo)),w.copy(O).multiplyScalar(E*Math.cos(Oo))),J.copy($).normalize(),w.addVectors(b,$),$.normalize(),U=Bn+pt*R+Ut,[0,1,2].forEach(lo=>{Q[U*3+lo]=w.getComponent(lo),se[U*3+lo]=J.getComponent(lo)});let zn=+gt+Math.sin(Oo);oe[U*2]=(Dn+E*zn)/ht,oe[U*2+1]=Ut/h}}w.addVectors(y,T),U=W+ke*R+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=w.getComponent(pt),se[U*3+pt]=O.getComponent(pt)}),oe[U*2]=(Te+ke*$e)/ht,oe[U*2+1]=Ut/h}}let yt=B+2*u+ne,Cr=1,[so,ao]=d?[Cr,Cr+B-1]:[0,yt-1];for(let ke=so;ke<=ao-1;ke++){let gt=d&&ke===ao-1;for(let _t=0;_t<R-1;_t++)A=ke*R+_t,N=A+1,v=(gt?_t:A)+R,k=(gt?_t+1:N)+R,ke===0?he.push(N,k,v):ke===yt-2?he.push(A,N,v):he.push(A,N,v,N,k,v)}this.setIndex(he),this.setAttribute("position",new Nl(Q,3)),this.setAttribute("normal",new Nl(se,3)),this.setAttribute("uv",new Nl(oe,2))}};import{IcosahedronBufferGeometry as uv}from"three";var ku=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new on(t*.5,i,s):new uv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(P({},n),{type:"IcosahedronGeometry"})})}},on=class extends Yr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(i,s,a,t,e,r),this.type=a}static fromJSON(t){return new on(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as dv,Shape as mv}from"three";var Hu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i,s,a;((o=(r=n.parameters)==null?void 0:r.points)!=null?o:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{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((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new mv;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 dv(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:H(P({},n),{type:"LatheGeometry"})})}};import{BufferGeometry as Wu,BufferGeometryLoader as Sv,Vector3 as wv,BoxBufferGeometry as $u}from"three";import{BufferGeometry as fv,Vector2 as Ml,Vector3 as qu}from"three";import{Geometry as yv,Face3 as gv}from"three/examples/jsm/deprecated/Geometry.js";var xv=["a","b","c"];function bv(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Ol(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Pl(n,t,e,r,o,i){let s=Math.min(n,t),a=Math.max(n,t),l=s+"_"+a,c;if(r.has(l))c=r.get(l);else{let h=e[s],p=e[a];c={a:h,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[t].edges.push(c)}function vv(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Pl(s.a,s.b,n,r,s,e),Pl(s.b,s.c,n,r,s,e),Pl(s.c,s.a,n,r,s,e)}function Ks(n,t,e,r,o){n.push(new gv(t,e,r,void 0,void 0,o))}function li(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Ys(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Xs=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof fv?t=new yv().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 qu,r,o,i,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],d=new Map;vv(l,c,u,d);let f=[],g,w,y,b,A,N,v;for(let j of Array.from(d.keys())){for(w=d.get(j),y=new qu,A=3/8,N=1/8,v=w.faces.length,v!=2&&(A=.5,N=0,v!=1),y.addVectors(w.a,w.b).multiplyScalar(A),e.set(0,0,0),s=0;s<v;s++){for(b=w.faces[s],a=0;a<3&&(g=l[bv(b,xv[a])],!(g!==w.a&&g!==w.b));a++);g&&e.add(g)}e.multiplyScalar(N),y.add(e),w.newEdge=f.length,f.push(y)}let k,L,m,I,x,C,T,O=[];for(o=0,i=l.length;o<i;o++){for(C=l[o],x=u[o].edges,r=x.length,r==3?k=3/16:r>3&&(k=3/(8*r)),L=1-r*Number(k),m=k,r<=2&&(r==2?(L=3/4,m=1/8):r==1||r==0),T=C.clone().multiplyScalar(L),e.set(0,0,0),s=0;s<r;s++)I=x[s],g=I.a!==C?I.a:I.b,e.add(g);e.multiplyScalar(Number(m)),T.add(e),O.push(T)}let $=O.concat(f),J=O.length,ie,ue,ce,ve=[],F=[],G,B,z,D,R=new Ml,K=new Ml,Z=new Ml;for(o=0,i=c.length;o<i;o++)b=c[o],ie=Number(Ol(b.a,b.b,d).newEdge)+J,ue=Number(Ol(b.b,b.c,d).newEdge)+J,ce=Number(Ol(b.c,b.a,d).newEdge)+J,Ks(ve,ie,ue,ce,b.materialIndex),Ks(ve,b.a,ie,ce,b.materialIndex),Ks(ve,b.b,ue,ie,b.materialIndex),Ks(ve,b.c,ce,ue,b.materialIndex),p&&(G=h[o],B=G[0],z=G[1],D=G[2],R.set(li(B.x,z.x),li(B.y,z.y)),K.set(li(z.x,D.x),li(z.y,D.y)),Z.set(li(B.x,D.x),li(B.y,D.y)),Ys(F,R,K,Z),Ys(F,B,R,Z),Ys(F,z,K,R),Ys(F,D,Z,K));t.vertices=$,t.faces=ve,p&&(t.faceVertexUvs[0]=F)}};var it=new wv,Ju=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,s;let e=(s=(i=n.geometry)!=null?i:t==null?void 0:t.geometry)!=null?s:new Wu().copy(new $u(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(it),r={width:it.x,height:it.y,depth:it.z,subdivisions:0}):r=t.parameters;let o=P(P({},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){var l;let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=(l=n.geometry)!=null?l:new Wu().copy(new $u(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(t!==it.x||e!==it.y||r!==it.z)&&i.scale(it.x===0?1:t/it.x,it.y===0?1:e/it.y,it.z===0?1:r/it.z);let a=i.originalGeometry;return o>0?(a===void 0||(s==null?void 0:s.subdivisions)!==o)&&(a===void 0&&(a=i),i=new Xs(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:H(P({},n),{type:"NonParametricGeometry"})})}static loadFromUrl(n,t,e){new Sv(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(i.parameters,{width:100,height:it.y*s,depth:it.z*s}),t(this.build(i))})}};var Ku=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,l=n.shape,c=t*.5,h=e*.5,p=0,u=0,d=2*Math.PI/r;for(let g=0;g<r;g++){let w=d*g,y=p+Math.sin(w)*c,b=u+Math.cos(w)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,w=l.points.length;g<w;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=ut.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:H(P({},n),{type:"PolygonGeometry"})})}};import{BufferGeometry as Lv,Float32BufferAttribute as Il,Vector2 as fr,Vector3 as lt}from"three";var Yu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=new Dl(t*.5,e,o,i,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:H(P({},n),{type:"PyramidGeometry"})})}};function nn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Al(n,t,e,r,o,i){let s=t.clone().sub(n),a=e.clone().sub(n),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let c=s.add(a).normalize();i.copy(n).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(c)),i.addScaledVector(a,r/Math.sin(c))}}function Cv(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Dl=class extends Lv{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let l=[],c=[],h=[],p=[],u=0,d=e/2,f=Math.PI/r,g=t*Math.cos(Math.PI/r),w=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,A=new lt(0,-d,0),N=new lt(0,d,0),v=new fr(t,-d),k=new fr(g,-d),L=new fr(0,N.y).sub(k),m=new fr(0,N.y).sub(v),I=new fr(L.y,-L.x).normalize(),x=new fr(m.y,-m.x).normalize(),T=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-L.angle())/2)-1e-8;s=Math.min(s,T);let O;{let F=new lt(I.x,I.y,0),G=new lt(Math.cos(w)*F.x,F.y,Math.sin(w)*F.x);O=F.angleTo(G)}let $=s/Math.tan((Math.PI-L.angle())/2),J=s/Math.tan((Math.PI-O)/2),ie=new lt;if(!i){c.push(A.x,A.y,A.z),h.push(0,-1,0),p.push(0,0);let F=u++,G=[],B=v.clone(),z=$/Math.cos(Math.PI/r);B.x-=z;for(let D=0;D<r;D++){let R=D/r*Math.PI*2+f,K=new fr(Math.sin(R),Math.cos(R));nn(B,K,ie),c.push(ie.x,ie.y,ie.z),h.push(0,-1,0),p.push(0,0),G.push(u++)}for(let D=0;D<G.length;D++)l.push(G[D],F,G[(D+1)%G.length])}let ue=[];{let F=new lt,G=new lt,B=new lt,z=new lt,D=new lt,R=new lt;for(let K=0;K<r;K++){let Z=K/r*Math.PI*2+f,j=(K+.5)/r*Math.PI*2+f,V=(K+1)/r*Math.PI*2+f,E=new fr(Math.sin(Z),Math.cos(Z)),U=new fr(Math.sin(j),Math.cos(j)),ne=new fr(Math.sin(V),Math.cos(V));nn(v,E,G),nn(v,ne,B),nn(I,U,F),Al(N,G,B,J,J,z),c.push(z.x,z.y,z.z),Al(G,N,B,J,$,D),c.push(D.x,D.y,D.z),Al(B,G,N,$,J,R),c.push(R.x,R.y,R.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let q=u++,W=u++,Y=u++;if(l.push(q,W,Y),s>0){{let se=G.clone().add(B).multiplyScalar(.5),oe=N.clone().sub(se).normalize(),Ge=A.clone().sub(se).normalize().add(oe).normalize().multiplyScalar(-1),ge=R.clone().sub(D);ce(se,ge,Ge,L.angle())}let X,Q;{let se=new lt;nn(x,ne,se);let oe=R.clone().add(z).multiplyScalar(.5);oe=Cv(oe,B,N);let he=R.clone().sub(z);[X,Q]=ce(oe,he,se,O,z.y)}{let se=X,oe=se.clone().setY(0).normalize(),he=new lt(0,-1,0),Ge=oe.clone().cross(he);ve(se,oe,he,Ge)}ue.concat(Q);{let se=L.angle(),oe=Math.PI-se,he=N.clone();he.y-=s/Math.sin(se-Math.PI/2);let Ge=new lt,ge=[];for(let Te=0;Te<a;Te++){let ht=[],Lt=Math.PI/2-oe*Te/a,Lr=Math.cos(Lt),yt=Math.sin(Lt),Cr=j;for(let so=0;so<=Te;so++){let ao=Math.cos(Cr),ke=Math.sin(Cr);F.x=Lr*ke,F.y=yt,F.z=Lr*ao,Ge.copy(he).addScaledVector(F,s),c.push(Ge.x,Ge.y,Ge.z),h.push(F.x,F.y,F.z),p.push(0,0),ht.push(u++),Cr+=Math.PI*2/Te/r}ge.push(ht)}Q.reverse(),ge.push(Q);let $e=ge.length-1;for(let Te=0;Te<$e;Te++){let ht=ge[Te],Lt=ge[Te+1],Lr=ht.length-1;l.push(Lt[1],ht[0],Lt[0]);for(let yt=1;yt<=Lr;yt++)l.push(ht[yt],ht[yt-1],Lt[yt]),l.push(Lt[yt+1],ht[yt],Lt[yt])}}}}}this.setIndex(l),this.setAttribute("position",new Il(c,3)),this.setAttribute("normal",new Il(h,3)),this.setAttribute("uv",new Il(p,2));function ce(F,G,B,z,D){let R=-z/2,K=(Math.PI-z)/2,Z=G.clone().normalize().cross(B);F.addScaledVector(B,-s/Math.sin(K));let j=new lt,V=new lt,E=1,U=u,ne=[];for(let q=0;q<=a;q++){let W=R+q/a*z;V.set(0,0,0),V.addScaledVector(Z,Math.sin(W)),V.addScaledVector(B,Math.cos(W));for(let Y=0;Y<=E;Y++){let X=Y/E-.5;if(j.copy(F),j.addScaledVector(G,X),j.addScaledVector(V,s),D!=null){let Q=Math.max(0,j.y-D);j.addScaledVector(G,-Q/G.y)}c.push(j.x,j.y,j.z),h.push(V.x,V.y,V.z),p.push(0,0),Y===0&&ne.push(u),u++}}for(let q=0;q<a;q++)for(let W=0;W<E;W++){let Y=U+W+(E+1)*q,X=Y+(E+1),Q=X+1,se=Y+1;l.push(Y,X,se),l.push(X,Q,se)}return[F.clone().addScaledVector(G,.5),ne]}function ve(F,G,B,z){let D=Math.PI/2,R=m.angle()-D,K=[],Z=new lt,j=new lt;for(let E=0;E<=a;E++){let U=[],ne=E/a;for(let q=0;q<=E;q++){let Y=((E?q/E:0)-.5)*b,X=Math.cos(Y),Q=Math.sin(Y),se=Math.atan(Math.tan(R)*X),oe=(D+se)*ne,he=Math.cos(oe),Ge=Math.sin(oe);Z.set(0,0,0),Z.addScaledVector(G,Ge*X),Z.addScaledVector(B,he),Z.addScaledVector(z,Ge*Q),j.copy(F).addScaledVector(Z,s),c.push(j.x,j.y,j.z),h.push(Z.x,Z.y,Z.z),p.push(0,0),U.push(u++)}K.push(U)}let V=K.length-1;for(let E=0;E<V;E++){let U=K[E],ne=K[E+1],q=U.length-1;l.push(U[0],ne[1],ne[0]);for(let W=1;W<=q;W++)l.push(U[W-1],U[W],ne[W]),l.push(U[W],ne[W+1],ne[W])}}}};var Zs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,s,a,l;let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(l=e.depth)!=null?l:0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:r*.5},h={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function u(N,v,k){return v>e&&k>r?Math.min(N*e/v,N*r/k):v>e?N*e/v:k>r?N*r/k:N}let d=[];d[0]=o[0]===0?0:u(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:u(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:u(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:u(o[3],o[3]+o[0],o[3]+o[2]);let f=h.x,g=p.x,w=p.y,y=h.y;t.addPoint(t.createPoint(f,w)),t.addPoint(t.createPoint(g,w)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let b=!0;for(let N=0,v=t.points.length;N<v;N++)t.points[N].roundness=d[N],N>0&&d[N]!==d[N-1]&&(b=!1);b&&(t.roundness=d[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=ut.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:H(P({},n),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as Tv}from"three";var Xu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=n.parameters,h=new Tv(.5*t,o,i,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:H(P({},n),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as Nv}from"three";var Zu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new Nv(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:H(P({},n),{type:"PlaneGeometry"})})}};var Qu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,h=n.shape,p=t*.5,u=e*.5,d=0,f=0,g=s*Math.PI/360/o,w=Math.PI/2*3*-1,y=p*r/100,b=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let N=0;N<o;N++){let v=g*N,k=d+Math.sin(v)*p,L=f+Math.cos(v)*u;h.addPoint(h.createPoint(k,L))}}else for(let N=0;N<o;N++){let v=d+Math.cos(w)*p,k=f+Math.sin(w)*u;h.addPoint(h.createPoint(v,k)),w+=g,v=d+Math.cos(w)*y,k=f+Math.sin(w)*b,N<=o,h.addPoint(h.createPoint(v,k)),w+=g}h.isClosed=!0;for(let N=0,v=h.points.length;N<v;N++)h.points[N].roundness=i;h.roundness=i,h.update();let A=ut.create({shape:h,parameters:{roundness:i,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:H(P({},n),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as Mv}from"three";var Qs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new Mv(t,e);return Object.assign(r,{userData:H(P({},n),{type:"TextFrameGeometry"})})}};var ed=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var s,a,l;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs((a=e.height)!=null?a:e.width),i=Math.abs((l=e.depth)!=null?l:e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=Ov(t,e,r,t*.5,s,i,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:H(P({},n),{type:"TorusGeometry"})})}};function Ov(n,t,e,r,o,i,s,a,l,c,h){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new rn(!0,n,t,e,r,o,i,s,a,l,c,h)}import{TorusKnotBufferGeometry as Pv}from"three";var td=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width),tube:(s=e.tube)!=null?s:e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let l=new Pv(a,e,r,o,i,s);return Object.assign(l,{userData:H(P({},n),{type:"TorusKnotGeometry"})})}};var rd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,l=n.shape,c=t*.5,h=e*.5;a?(l.addPoint(l.createPoint(-c,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))):(l.addPoint(l.createPoint(0,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))),l.isClosed=!0;for(let u=0,d=l.points.length;u<d;u++)l.points[u].roundness=r;l.roundness=r,l.update();let p=ut.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(p,{userData:H(P({},n),{type:"TriangleGeometry"})})}};var sn={};xc(sn,{addBarycentricAttribute:()=>Ev,fixUvs:()=>Gv,loadFromUrl:()=>_v,resizeGeometry:()=>Bv,roundShapePolygon:()=>Dv});import{BufferGeometryLoader as Iv,Float32BufferAttribute as Av,Vector3 as Bl}from"three";var od=function(n,t){let e=t.x-n.x,r=t.y-n.y,o=Math.sqrt(e*e+r*r),i=e/o,s=r/o,a=Math.atan2(s,i);return{x:e,y:r,len:o,nx:i,ny:s,ang:a}},Dv=(n,t,e)=>{let r,o,i,s,a,l,c,h,p,u,d,f,g,w,y=t.length;for(s=t[y-2],n.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let b=od(a,s),A=od(a,l);c=b.nx*A.ny-b.ny*A.nx,h=b.nx*A.nx-b.ny*-A.ny,d=Math.asin(c),p=1,u=!1,h<0?d<0?d=Math.PI+d:(d=Math.PI-d,p=-1,u=!0):d>0&&(p=-1,u=!0),f=d/2,w=Math.abs(Math.cos(f)*e/Math.sin(f)),w>Math.min(b.len/2,A.len/2)?(w=Math.min(b.len/2,A.len/2),g=Math.abs(w*Math.sin(f)/Math.cos(f))):g=e,o=a.x+A.nx*w,i=a.y+A.ny*w,o+=-A.ny*g*p,i+=A.nx*g*p,n.absarc(o,i,g,b.ang+Math.PI/2*p,A.ang-Math.PI/2*p,u),s=a,a=l}n.closePath()},Bv=(n,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=n.userData.parameters,i,s,a;t===0?(t=o.width,i=1):i=t/o.width,e===0?(e=o.height,s=1):s=e/o.height,r===0?(r=o.depth,a=1):a=r/o.depth,n.scale(i,s,a),o.width=t,o.height=e,o.depth=r},Ev=(n,t)=>{let e=[new Bl(1,0,0),new Bl(0,1,0),new Bl(0,0,1)],r=n.attributes.position,o=new Float32Array(r.count*3);for(let i=0,s=r.count;i<s;i++)e[i%3].toArray(o,i*3);n.setAttribute(t,new Av(o,3))},_v=n=>new Promise(t=>{new Iv().load(n,r=>t(r))}),Gv=(n,t,e)=>{let r=n.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let i=r.getX(o),s=r.getY(o);r.setXY(o,(i+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as Gd,BufferAttribute as zd,Uint32BufferAttribute as Ql,Float32BufferAttribute as ec,Matrix4 as qS,Vector3 as ba}from"three";var zv,ea=new Promise(n=>{zv=n});import{BufferGeometryLoader as kS}from"three";import{DoubleSide as FS,EventDispatcher as VS,Matrix3 as jS,Vector3 as Zl}from"three";import{NormalBlending as nS,ShaderMaterial as sS,FrontSide as aS}from"three";import{CubeReflectionMapping as Yv,CubeRefractionMapping as Xv,CubeUVReflectionMapping as Zv,LinearEncoding as ld,sRGBEncoding as Qv}from"three";var an=class{constructor(t){t=t!=null?t:{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as Rv}from"three";var pe=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Rv.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e!=null?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!=null?r:{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r!=null?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!=null?e:this.getType(t,e);let o=t.getNodeData(r!=null?r:this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getJSONNode(t){if((t==null?void 0:t.materials)&&(t==null?void 0:t.materials[this.uuid])!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof pe&&(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}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){var e;return(e=this.getJSONNode(t))!=null?e:this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),this}};var El=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}},nt=new El;import{Vector2 as id}from"three";import{MathUtils as Fv}from"three";var me=class extends pe{constructor(e,r){super(e);this.scope="";r=r!=null?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!=null?r:this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Fv.generateUUID()),o=e.getUUID(o!=null?o:this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,a.output,i);let h=this.generate(e,l,o);return e.addNodeCode(c+" = "+h+";"),e.format(c,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,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o!=null?o:this.uuid,e.getTempVar(o,i!=null?i:this.getType(e),s,this.getLabel()).name}};var Fe=class extends me{constructor(e,r){r=r!=null?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}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,o,i,s,a){o=e.getUUID(o!=null?o:this.getUUID()),i=i!=null?i:this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var vt=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof id?e:new id(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Vector3 as nd}from"three";var St=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof nd?e:new nd(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Color as Vv}from"three";var Dt=class extends Vv{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var Br=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Dt?e:new Dt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var jv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,sd=/[a-z_0-9]+/gi,re=class extends me{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let a,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let h=[];for(;a=sd.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],d=u[0],f=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&f&&nt.containsKeyword(d)){let w=this.keywords[d];if(!w){let y=nt.getKeywordData(d);y.cache&&(w=e.keywords[d]),w=w||nt.getKeyword(d,e),y.cache&&(e.keywords[d]=w)}g=w.build(e)}d!==g&&(c=c.substring(0,u.index+l)+g+c.substring(u.index+d.length+l),l+=g.length-d.length),this.getIncludeByName(g)===void 0&&nt.contains(g)&&e.include(nt.get(g))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r!=null?r:[],this.extensions=o!=null?o:{},this.keywords=i!=null?i:{},this.isMethod){let s=jv.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(sd);if(a){let l=0;for(;l<a.length;){let c=a[l++],h;c==="in"||c==="out"||c==="inout"?h=a[l++]:(h=c,c="");let p=a[l++];this.inputs.push({name:p,type:h,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let i={};for(let s in this.keywords)i[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=i,(o=this.includes)!=null&&o.length){let s=[];for(let a=0;a<this.includes.length;a++)s.push(this.includes[a].toJSON(e).uuid);r.includes=s}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let o in e.keywords)this.keywords[o]=r.getNode(e.keywords[o])}return e.includes&&r&&(this.includes=e.includes.map(o=>r.getNode(o))),this}};var Uv=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,_l=class extends me{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||_l.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let a,l,c="",h=Uv.exec(e);this.useDefine=s!=null?s:this.src.charAt(0)==="#",h&&h.length>1?(l=h[1],a=h[2],c=h[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},Ne=_l;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var kv=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
-
)*?)}`,"gim"),Hv=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),ci=class extends me{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=kv.exec(e);if(r){let o=r[2],i;for(;i=Hv.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var hi=class extends me{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e!=null?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)}copy(e){return super.copy(e),this.index=e.index,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.index=this.index),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.index&&(this.index=e.index),this}};nt.addKeyword("uv",function(){return new hi});nt.addKeyword("uv2",function(){return new hi(1)});import{LinearEncoding as qv,sRGBEncoding as Wv}from"three";var
|
|
1
|
+
var Om=Object.create;var Rn=Object.defineProperty,Pm=Object.defineProperties,Im=Object.getOwnPropertyDescriptor,Am=Object.getOwnPropertyDescriptors,Dm=Object.getOwnPropertyNames,fc=Object.getOwnPropertySymbols,Bm=Object.getPrototypeOf,gc=Object.prototype.hasOwnProperty,Em=Object.prototype.propertyIsEnumerable;var yc=(n,t,e)=>t in n?Rn(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,P=(n,t)=>{for(var e in t||(t={}))gc.call(t,e)&&yc(n,e,t[e]);if(fc)for(var e of fc(t))Em.call(t,e)&&yc(n,e,t[e]);return n},H=(n,t)=>Pm(n,Am(t));var _m=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports),xc=(n,t)=>{for(var e in t)Rn(n,e,{get:t[e],enumerable:!0})},Gm=(n,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Dm(t))!gc.call(n,o)&&o!==e&&Rn(n,o,{get:()=>t[o],enumerable:!(r=Im(t,o))||r.enumerable});return n};var zm=(n,t,e)=>(e=n!=null?Om(Bm(n)):{},Gm(t||!n||!n.__esModule?Rn(e,"default",{value:n,enumerable:!0}):e,n));var nm=_m((Aa,im)=>{(function(n,t){typeof Aa=="object"&&typeof im<"u"?t(Aa):typeof define=="function"&&define.amd?define(["exports"],t):t((n=typeof globalThis<"u"?globalThis:n||self).SVDJS={})})(Aa,function(n){"use strict";n.SVD=function(t,e,r,o,i){if(e=e===void 0||e,r=r===void 0||r,i=1e-64/(o=o||Math.pow(2,-52)),!t)throw new TypeError("Matrix a is not defined");var s,a,l,c,h,p,d,u,f,g,w,y,b=t[0].length,A=t.length;if(A<b)throw new TypeError("Invalid matrix: m < n");for(var N=[],v=[],k=[],L=e==="f"?A:b,m=g=d=0;m<A;m++)v[m]=new Array(L).fill(0);for(m=0;m<b;m++)k[m]=new Array(b).fill(0);var I,x=new Array(b).fill(0);for(m=0;m<A;m++)for(s=0;s<b;s++)v[m][s]=t[m][s];for(m=0;m<b;m++){for(N[m]=d,f=0,l=m+1,s=m;s<A;s++)f+=Math.pow(v[s][m],2);if(f<i)d=0;else for(u=(p=v[m][m])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,v[m][m]=p-d,s=l;s<b;s++){for(f=0,a=m;a<A;a++)f+=v[a][m]*v[a][s];for(p=f/u,a=m;a<A;a++)v[a][s]=v[a][s]+p*v[a][m]}for(x[m]=d,f=0,s=l;s<b;s++)f+=Math.pow(v[m][s],2);if(f<i)d=0;else{for(u=(p=v[m][m+1])*(d=p<0?Math.sqrt(f):-Math.sqrt(f))-f,v[m][m+1]=p-d,s=l;s<b;s++)N[s]=v[m][s]/u;for(s=l;s<A;s++){for(f=0,a=l;a<b;a++)f+=v[s][a]*v[m][a];for(a=l;a<b;a++)v[s][a]=v[s][a]+f*N[a]}}g<(w=Math.abs(x[m])+Math.abs(N[m]))&&(g=w)}if(r)for(m=b-1;0<=m;m--){if(d!==0){for(u=v[m][m+1]*d,s=l;s<b;s++)k[s][m]=v[m][s]/u;for(s=l;s<b;s++){for(f=0,a=l;a<b;a++)f+=v[m][a]*k[a][s];for(a=l;a<b;a++)k[a][s]=k[a][s]+f*k[a][m]}}for(s=l;s<b;s++)k[m][s]=0,k[s][m]=0;k[m][m]=1,d=N[m],l=m}if(e){if(e==="f")for(m=b;m<A;m++){for(s=b;s<A;s++)v[m][s]=0;v[m][m]=1}for(m=b-1;0<=m;m--){for(l=m+1,d=x[m],s=l;s<L;s++)v[m][s]=0;if(d!==0){for(u=v[m][m]*d,s=l;s<L;s++){for(f=0,a=l;a<A;a++)f+=v[a][m]*v[a][s];for(p=f/u,a=m;a<A;a++)v[a][s]=v[a][s]+p*v[a][m]}for(s=m;s<A;s++)v[s][m]=v[s][m]/d}else for(s=m;s<A;s++)v[s][m]=0;v[m][m]=v[m][m]+1}}for(o*=g,a=b-1;0<=a;a--)for(var C=0;C<50;C++){for(I=!1,l=a;0<=l;l--){if(Math.abs(N[l])<=o){I=!0;break}if(Math.abs(x[l-1])<=o)break}if(!I){for(h=0,c=l-(f=1),m=l;m<a+1&&(p=f*N[m],N[m]=h*N[m],!(Math.abs(p)<=o));m++)if(d=x[m],x[m]=Math.sqrt(p*p+d*d),h=d/(u=x[m]),f=-p/u,e)for(s=0;s<A;s++)w=v[s][c],y=v[s][m],v[s][c]=w*h+y*f,v[s][m]=-w*f+y*h}if(y=x[a],l===a){if(y<0&&(x[a]=-y,r))for(s=0;s<b;s++)k[s][a]=-k[s][a];break}for(g=x[l],p=(((w=x[a-1])-y)*(w+y)+((d=N[a-1])-(u=N[a]))*(d+u))/(2*u*w),d=Math.sqrt(p*p+1),p=((g-y)*(g+y)+u*(w/(p<0?p-d:p+d)-u))/g,m=l+(f=h=1);m<a+1;m++){if(d=N[m],w=x[m],u=f*d,d*=h,y=Math.sqrt(p*p+u*u),p=g*(h=p/(N[m-1]=y))+d*(f=u/y),d=-g*f+d*h,u=w*f,w*=h,r)for(s=0;s<b;s++)g=k[s][m-1],y=k[s][m],k[s][m-1]=g*h+y*f,k[s][m]=-g*f+y*h;if(y=Math.sqrt(p*p+u*u),p=(h=p/(x[m-1]=y))*d+(f=u/y)*w,g=-f*d+h*w,e)for(s=0;s<A;s++)w=v[s][m-1],y=v[s][m],v[s][m-1]=w*h+y*f,v[s][m]=-w*f+y*h}N[l]=0,N[a]=p,x[a]=g}for(m=0;m<b;m++)x[m]<o&&(x[m]=0);return{u:v,q:x,v:k}},n.VERSION="1.1.1",Object.defineProperty(n,"__esModule",{value:!0})})});import{FileLoader as m1,Loader as f1}from"three";function bc(n){return Array.isArray(n)?n:[n]}var Rm=typeof global=="object"&&global&&global.Object===Object&&global,Fn=Rm;var Fm=typeof self=="object"&&self&&self.Object===Object&&self,Vm=Fn||Fm||Function("return this")(),Qe=Vm;var jm=Qe.Symbol,Ct=jm;var vc=Object.prototype,Um=vc.hasOwnProperty,km=vc.toString,_i=Ct?Ct.toStringTag:void 0;function Hm(n){var t=Um.call(n,_i),e=n[_i];try{n[_i]=void 0;var r=!0}catch{}var o=km.call(n);return r&&(t?n[_i]=e:delete n[_i]),o}var Sc=Hm;var qm=Object.prototype,Wm=qm.toString;function $m(n){return Wm.call(n)}var wc=$m;var Jm="[object Null]",Km="[object Undefined]",Lc=Ct?Ct.toStringTag:void 0;function Ym(n){return n==null?n===void 0?Km:Jm:Lc&&Lc in Object(n)?Sc(n):wc(n)}var zt=Ym;function Xm(n){return n!=null&&typeof n=="object"}var xt=Xm;var Zm="[object Symbol]";function Qm(n){return typeof n=="symbol"||xt(n)&&zt(n)==Zm}var Po=Qm;function ef(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 Vn=ef;var tf=Array.isArray,et=tf;var rf=1/0,Cc=Ct?Ct.prototype:void 0,Tc=Cc?Cc.toString:void 0;function Nc(n){if(typeof n=="string")return n;if(et(n))return Vn(n,Nc)+"";if(Po(n))return Tc?Tc.call(n):"";var t=n+"";return t=="0"&&1/n==-rf?"-0":t}var Mc=Nc;function of(n){var t=typeof n;return n!=null&&(t=="object"||t=="function")}var bt=of;function nf(n){return n}var jn=nf;var sf="[object AsyncFunction]",af="[object Function]",lf="[object GeneratorFunction]",cf="[object Proxy]";function hf(n){if(!bt(n))return!1;var t=zt(n);return t==af||t==lf||t==sf||t==cf}var Io=hf;var pf=Qe["__core-js_shared__"],Un=pf;var Oc=function(){var n=/[^.]+$/.exec(Un&&Un.keys&&Un.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}();function df(n){return!!Oc&&Oc in n}var Pc=df;var uf=Function.prototype,mf=uf.toString;function ff(n){if(n!=null){try{return mf.call(n)}catch{}try{return n+""}catch{}}return""}var Nr=ff;var yf=/[\\^$.*+?()[\]{}|]/g,gf=/^\[object .+?Constructor\]$/,xf=Function.prototype,bf=Object.prototype,vf=xf.toString,Sf=bf.hasOwnProperty,wf=RegExp("^"+vf.call(Sf).replace(yf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Lf(n){if(!bt(n)||Pc(n))return!1;var t=Io(n)?wf:gf;return t.test(Nr(n))}var Ic=Lf;function Cf(n,t){return n==null?void 0:n[t]}var Ac=Cf;function Tf(n,t){var e=Ac(n,t);return Ic(e)?e:void 0}var It=Tf;var Nf=It(Qe,"WeakMap"),kn=Nf;var Dc=Object.create,Mf=function(){function n(){}return function(t){if(!bt(t))return{};if(Dc)return Dc(t);n.prototype=t;var e=new n;return n.prototype=void 0,e}}(),Bc=Mf;function Of(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 Ec=Of;function Pf(n,t){var e=-1,r=n.length;for(t||(t=Array(r));++e<r;)t[e]=n[e];return t}var Hn=Pf;var If=800,Af=16,Df=Date.now;function Bf(n){var t=0,e=0;return function(){var r=Df(),o=Af-(r-e);if(e=r,o>0){if(++t>=If)return arguments[0]}else t=0;return n.apply(void 0,arguments)}}var _c=Bf;function Ef(n){return function(){return n}}var Gc=Ef;var _f=function(){try{var n=It(Object,"defineProperty");return n({},"",{}),n}catch{}}(),Ao=_f;var Gf=Ao?function(n,t){return Ao(n,"toString",{configurable:!0,enumerable:!1,value:Gc(t),writable:!0})}:jn,zc=Gf;var zf=_c(zc),qn=zf;function Rf(n,t){for(var e=-1,r=n==null?0:n.length;++e<r&&t(n[e],e,n)!==!1;);return n}var Rc=Rf;var Ff=9007199254740991,Vf=/^(?:0|[1-9]\d*)$/;function jf(n,t){var e=typeof n;return t=t==null?Ff:t,!!t&&(e=="number"||e!="symbol"&&Vf.test(n))&&n>-1&&n%1==0&&n<t}var Wn=jf;function Uf(n,t,e){t=="__proto__"&&Ao?Ao(n,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):n[t]=e}var Do=Uf;function kf(n,t){return n===t||n!==n&&t!==t}var jr=kf;var Hf=Object.prototype,qf=Hf.hasOwnProperty;function Wf(n,t,e){var r=n[t];(!(qf.call(n,t)&&jr(r,e))||e===void 0&&!(t in n))&&Do(n,t,e)}var $n=Wf;function $f(n,t,e,r){var o=!e;e||(e={});for(var i=-1,s=t.length;++i<s;){var a=t[i],l=r?r(e[a],n[a],a,e,n):void 0;l===void 0&&(l=n[a]),o?Do(e,a,l):$n(e,a,l)}return e}var kt=$f;var Fc=Math.max;function Jf(n,t,e){return t=Fc(t===void 0?n.length-1:t,0),function(){for(var r=arguments,o=-1,i=Fc(r.length-t,0),s=Array(i);++o<i;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Ec(n,this,a)}}var Jn=Jf;function Kf(n,t){return qn(Jn(n,t,jn),n+"")}var Vc=Kf;var Yf=9007199254740991;function Xf(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Yf}var Kn=Xf;function Zf(n){return n!=null&&Kn(n.length)&&!Io(n)}var Ur=Zf;function Qf(n,t,e){if(!bt(e))return!1;var r=typeof t;return(r=="number"?Ur(e)&&Wn(t,e.length):r=="string"&&t in e)?jr(e[t],n):!1}var jc=Qf;function ey(n){return Vc(function(t,e){var r=-1,o=e.length,i=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(i=n.length>3&&typeof i=="function"?(o--,i):void 0,s&&jc(e[0],e[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++r<o;){var a=e[r];a&&n(t,a,r,i)}return t})}var Uc=ey;var ty=Object.prototype;function ry(n){var t=n&&n.constructor,e=typeof t=="function"&&t.prototype||ty;return n===e}var Bo=ry;function oy(n,t){for(var e=-1,r=Array(n);++e<n;)r[e]=t(e);return r}var kc=oy;var iy="[object Arguments]";function ny(n){return xt(n)&&zt(n)==iy}var Ea=ny;var Hc=Object.prototype,sy=Hc.hasOwnProperty,ay=Hc.propertyIsEnumerable,ly=Ea(function(){return arguments}())?Ea:function(n){return xt(n)&&sy.call(n,"callee")&&!ay.call(n,"callee")},ho=ly;function cy(){return!1}var qc=cy;var Jc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wc=Jc&&typeof module=="object"&&module&&!module.nodeType&&module,hy=Wc&&Wc.exports===Jc,$c=hy?Qe.Buffer:void 0,py=$c?$c.isBuffer:void 0,dy=py||qc,Eo=dy;var uy="[object Arguments]",my="[object Array]",fy="[object Boolean]",yy="[object Date]",gy="[object Error]",xy="[object Function]",by="[object Map]",vy="[object Number]",Sy="[object Object]",wy="[object RegExp]",Ly="[object Set]",Cy="[object String]",Ty="[object WeakMap]",Ny="[object ArrayBuffer]",My="[object DataView]",Oy="[object Float32Array]",Py="[object Float64Array]",Iy="[object Int8Array]",Ay="[object Int16Array]",Dy="[object Int32Array]",By="[object Uint8Array]",Ey="[object Uint8ClampedArray]",_y="[object Uint16Array]",Gy="[object Uint32Array]",Ue={};Ue[Oy]=Ue[Py]=Ue[Iy]=Ue[Ay]=Ue[Dy]=Ue[By]=Ue[Ey]=Ue[_y]=Ue[Gy]=!0;Ue[uy]=Ue[my]=Ue[Ny]=Ue[fy]=Ue[My]=Ue[yy]=Ue[gy]=Ue[xy]=Ue[by]=Ue[vy]=Ue[Sy]=Ue[wy]=Ue[Ly]=Ue[Cy]=Ue[Ty]=!1;function zy(n){return xt(n)&&Kn(n.length)&&!!Ue[zt(n)]}var Kc=zy;function Ry(n){return function(t){return n(t)}}var _o=Ry;var Yc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gi=Yc&&typeof module=="object"&&module&&!module.nodeType&&module,Fy=Gi&&Gi.exports===Yc,_a=Fy&&Fn.process,Vy=function(){try{var n=Gi&&Gi.require&&Gi.require("util").types;return n||_a&&_a.binding&&_a.binding("util")}catch{}}(),Mr=Vy;var Xc=Mr&&Mr.isTypedArray,jy=Xc?_o(Xc):Kc,Yn=jy;var Uy=Object.prototype,ky=Uy.hasOwnProperty;function Hy(n,t){var e=et(n),r=!e&&ho(n),o=!e&&!r&&Eo(n),i=!e&&!r&&!o&&Yn(n),s=e||r||o||i,a=s?kc(n.length,String):[],l=a.length;for(var c in n)(t||ky.call(n,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||i&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Wn(c,l)))&&a.push(c);return a}var Xn=Hy;function qy(n,t){return function(e){return n(t(e))}}var Zn=qy;var Wy=Zn(Object.keys,Object),Zc=Wy;var $y=Object.prototype,Jy=$y.hasOwnProperty;function Ky(n){if(!Bo(n))return Zc(n);var t=[];for(var e in Object(n))Jy.call(n,e)&&e!="constructor"&&t.push(e);return t}var Qc=Ky;function Yy(n){return Ur(n)?Xn(n):Qc(n)}var Go=Yy;function Xy(n){var t=[];if(n!=null)for(var e in Object(n))t.push(e);return t}var eh=Xy;var Zy=Object.prototype,Qy=Zy.hasOwnProperty;function eg(n){if(!bt(n))return eh(n);var t=Bo(n),e=[];for(var r in n)r=="constructor"&&(t||!Qy.call(n,r))||e.push(r);return e}var th=eg;function tg(n){return Ur(n)?Xn(n,!0):th(n)}var lr=tg;var rg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,og=/^\w*$/;function ig(n,t){if(et(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||Po(n)?!0:og.test(n)||!rg.test(n)||t!=null&&n in Object(t)}var rh=ig;var ng=It(Object,"create"),Or=ng;function sg(){this.__data__=Or?Or(null):{},this.size=0}var oh=sg;function ag(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}var ih=ag;var lg="__lodash_hash_undefined__",cg=Object.prototype,hg=cg.hasOwnProperty;function pg(n){var t=this.__data__;if(Or){var e=t[n];return e===lg?void 0:e}return hg.call(t,n)?t[n]:void 0}var nh=pg;var dg=Object.prototype,ug=dg.hasOwnProperty;function mg(n){var t=this.__data__;return Or?t[n]!==void 0:ug.call(t,n)}var sh=mg;var fg="__lodash_hash_undefined__";function yg(n,t){var e=this.__data__;return this.size+=this.has(n)?0:1,e[n]=Or&&t===void 0?fg:t,this}var ah=yg;function zo(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])}}zo.prototype.clear=oh;zo.prototype.delete=ih;zo.prototype.get=nh;zo.prototype.has=sh;zo.prototype.set=ah;var Ga=zo;function gg(){this.__data__=[],this.size=0}var lh=gg;function xg(n,t){for(var e=n.length;e--;)if(jr(n[e][0],t))return e;return-1}var kr=xg;var bg=Array.prototype,vg=bg.splice;function Sg(n){var t=this.__data__,e=kr(t,n);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():vg.call(t,e,1),--this.size,!0}var ch=Sg;function wg(n){var t=this.__data__,e=kr(t,n);return e<0?void 0:t[e][1]}var hh=wg;function Lg(n){return kr(this.__data__,n)>-1}var ph=Lg;function Cg(n,t){var e=this.__data__,r=kr(e,n);return r<0?(++this.size,e.push([n,t])):e[r][1]=t,this}var dh=Cg;function Ro(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])}}Ro.prototype.clear=lh;Ro.prototype.delete=ch;Ro.prototype.get=hh;Ro.prototype.has=ph;Ro.prototype.set=dh;var Hr=Ro;var Tg=It(Qe,"Map"),qr=Tg;function Ng(){this.size=0,this.__data__={hash:new Ga,map:new(qr||Hr),string:new Ga}}var uh=Ng;function Mg(n){var t=typeof n;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?n!=="__proto__":n===null}var mh=Mg;function Og(n,t){var e=n.__data__;return mh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Wr=Og;function Pg(n){var t=Wr(this,n).delete(n);return this.size-=t?1:0,t}var fh=Pg;function Ig(n){return Wr(this,n).get(n)}var yh=Ig;function Ag(n){return Wr(this,n).has(n)}var gh=Ag;function Dg(n,t){var e=Wr(this,n),r=e.size;return e.set(n,t),this.size+=e.size==r?0:1,this}var xh=Dg;function Fo(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])}}Fo.prototype.clear=uh;Fo.prototype.delete=fh;Fo.prototype.get=yh;Fo.prototype.has=gh;Fo.prototype.set=xh;var zi=Fo;var Bg="Expected a function";function za(n,t){if(typeof n!="function"||t!=null&&typeof t!="function")throw new TypeError(Bg);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],i=e.cache;if(i.has(o))return i.get(o);var s=n.apply(this,r);return e.cache=i.set(o,s)||i,s};return e.cache=new(za.Cache||zi),e}za.Cache=zi;var bh=za;var Eg=500;function _g(n){var t=bh(n,function(r){return e.size===Eg&&e.clear(),r}),e=t.cache;return t}var vh=_g;var Gg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zg=/\\(\\)?/g,Rg=vh(function(n){var t=[];return n.charCodeAt(0)===46&&t.push(""),n.replace(Gg,function(e,r,o,i){t.push(o?i.replace(zg,"$1"):r||e)}),t}),Sh=Rg;function Fg(n){return n==null?"":Mc(n)}var wh=Fg;function Vg(n,t){return et(n)?n:rh(n,t)?[n]:Sh(wh(n))}var Vo=Vg;var jg=1/0;function Ug(n){if(typeof n=="string"||Po(n))return n;var t=n+"";return t=="0"&&1/n==-jg?"-0":t}var Qn=Ug;function kg(n,t){t=Vo(t,n);for(var e=0,r=t.length;n!=null&&e<r;)n=n[Qn(t[e++])];return e&&e==r?n:void 0}var Lh=kg;function Hg(n,t){for(var e=-1,r=t.length,o=n.length;++e<r;)n[o+e]=t[e];return n}var jo=Hg;var Ch=Ct?Ct.isConcatSpreadable:void 0;function qg(n){return et(n)||ho(n)||!!(Ch&&n&&n[Ch])}var Th=qg;function Nh(n,t,e,r,o){var i=-1,s=n.length;for(e||(e=Th),o||(o=[]);++i<s;){var a=n[i];t>0&&e(a)?t>1?Nh(a,t-1,e,r,o):jo(o,a):r||(o[o.length]=a)}return o}var Mh=Nh;function Wg(n){var t=n==null?0:n.length;return t?Mh(n,1):[]}var Oh=Wg;function $g(n){return qn(Jn(n,void 0,Oh),n+"")}var Ph=$g;var Jg=Zn(Object.getPrototypeOf,Object),Uo=Jg;var Kg="[object Object]",Yg=Function.prototype,Xg=Object.prototype,Ih=Yg.toString,Zg=Xg.hasOwnProperty,Qg=Ih.call(Object);function ex(n){if(!xt(n)||zt(n)!=Kg)return!1;var t=Uo(n);if(t===null)return!0;var e=Zg.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ih.call(e)==Qg}var es=ex;function tx(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 Ah=tx;function rx(){this.__data__=new Hr,this.size=0}var Dh=rx;function ox(n){var t=this.__data__,e=t.delete(n);return this.size=t.size,e}var Bh=ox;function ix(n){return this.__data__.get(n)}var Eh=ix;function nx(n){return this.__data__.has(n)}var _h=nx;var sx=200;function ax(n,t){var e=this.__data__;if(e instanceof Hr){var r=e.__data__;if(!qr||r.length<sx-1)return r.push([n,t]),this.size=++e.size,this;e=this.__data__=new zi(r)}return e.set(n,t),this.size=e.size,this}var Gh=ax;function ko(n){var t=this.__data__=new Hr(n);this.size=t.size}ko.prototype.clear=Dh;ko.prototype.delete=Bh;ko.prototype.get=Eh;ko.prototype.has=_h;ko.prototype.set=Gh;var ts=ko;function lx(n,t){return n&&kt(t,Go(t),n)}var zh=lx;function cx(n,t){return n&&kt(t,lr(t),n)}var Rh=cx;var Uh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fh=Uh&&typeof module=="object"&&module&&!module.nodeType&&module,hx=Fh&&Fh.exports===Uh,Vh=hx?Qe.Buffer:void 0,jh=Vh?Vh.allocUnsafe:void 0;function px(n,t){if(t)return n.slice();var e=n.length,r=jh?jh(e):new n.constructor(e);return n.copy(r),r}var rs=px;function dx(n,t){for(var e=-1,r=n==null?0:n.length,o=0,i=[];++e<r;){var s=n[e];t(s,e,n)&&(i[o++]=s)}return i}var kh=dx;function ux(){return[]}var os=ux;var mx=Object.prototype,fx=mx.propertyIsEnumerable,Hh=Object.getOwnPropertySymbols,yx=Hh?function(n){return n==null?[]:(n=Object(n),kh(Hh(n),function(t){return fx.call(n,t)}))}:os,Ho=yx;function gx(n,t){return kt(n,Ho(n),t)}var qh=gx;var xx=Object.getOwnPropertySymbols,bx=xx?function(n){for(var t=[];n;)jo(t,Ho(n)),n=Uo(n);return t}:os,is=bx;function vx(n,t){return kt(n,is(n),t)}var Wh=vx;function Sx(n,t,e){var r=t(n);return et(n)?r:jo(r,e(n))}var ns=Sx;function wx(n){return ns(n,Go,Ho)}var $h=wx;function Lx(n){return ns(n,lr,is)}var ss=Lx;var Cx=It(Qe,"DataView"),as=Cx;var Tx=It(Qe,"Promise"),ls=Tx;var Nx=It(Qe,"Set"),cs=Nx;var Jh="[object Map]",Mx="[object Object]",Kh="[object Promise]",Yh="[object Set]",Xh="[object WeakMap]",Zh="[object DataView]",Ox=Nr(as),Px=Nr(qr),Ix=Nr(ls),Ax=Nr(cs),Dx=Nr(kn),po=zt;(as&&po(new as(new ArrayBuffer(1)))!=Zh||qr&&po(new qr)!=Jh||ls&&po(ls.resolve())!=Kh||cs&&po(new cs)!=Yh||kn&&po(new kn)!=Xh)&&(po=function(n){var t=zt(n),e=t==Mx?n.constructor:void 0,r=e?Nr(e):"";if(r)switch(r){case Ox:return Zh;case Px:return Jh;case Ix:return Kh;case Ax:return Yh;case Dx:return Xh}return t});var qo=po;var Bx=Object.prototype,Ex=Bx.hasOwnProperty;function _x(n){var t=n.length,e=new n.constructor(t);return t&&typeof n[0]=="string"&&Ex.call(n,"index")&&(e.index=n.index,e.input=n.input),e}var Qh=_x;var Gx=Qe.Uint8Array,Ra=Gx;function zx(n){var t=new n.constructor(n.byteLength);return new Ra(t).set(new Ra(n)),t}var Wo=zx;function Rx(n,t){var e=t?Wo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var ep=Rx;var Fx=/\w*$/;function Vx(n){var t=new n.constructor(n.source,Fx.exec(n));return t.lastIndex=n.lastIndex,t}var tp=Vx;var rp=Ct?Ct.prototype:void 0,op=rp?rp.valueOf:void 0;function jx(n){return op?Object(op.call(n)):{}}var ip=jx;function Ux(n,t){var e=t?Wo(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.length)}var hs=Ux;var kx="[object Boolean]",Hx="[object Date]",qx="[object Map]",Wx="[object Number]",$x="[object RegExp]",Jx="[object Set]",Kx="[object String]",Yx="[object Symbol]",Xx="[object ArrayBuffer]",Zx="[object DataView]",Qx="[object Float32Array]",e0="[object Float64Array]",t0="[object Int8Array]",r0="[object Int16Array]",o0="[object Int32Array]",i0="[object Uint8Array]",n0="[object Uint8ClampedArray]",s0="[object Uint16Array]",a0="[object Uint32Array]";function l0(n,t,e){var r=n.constructor;switch(t){case Xx:return Wo(n);case kx:case Hx:return new r(+n);case Zx:return ep(n,e);case Qx:case e0:case t0:case r0:case o0:case i0:case n0:case s0:case a0:return hs(n,e);case qx:return new r;case Wx:case Kx:return new r(n);case $x:return tp(n);case Jx:return new r;case Yx:return ip(n)}}var np=l0;function c0(n){return typeof n.constructor=="function"&&!Bo(n)?Bc(Uo(n)):{}}var ps=c0;var h0="[object Map]";function p0(n){return xt(n)&&qo(n)==h0}var sp=p0;var ap=Mr&&Mr.isMap,d0=ap?_o(ap):sp,lp=d0;var u0="[object Set]";function m0(n){return xt(n)&&qo(n)==u0}var cp=m0;var hp=Mr&&Mr.isSet,f0=hp?_o(hp):cp,pp=f0;var y0=1,g0=2,x0=4,dp="[object Arguments]",b0="[object Array]",v0="[object Boolean]",S0="[object Date]",w0="[object Error]",up="[object Function]",L0="[object GeneratorFunction]",C0="[object Map]",T0="[object Number]",mp="[object Object]",N0="[object RegExp]",M0="[object Set]",O0="[object String]",P0="[object Symbol]",I0="[object WeakMap]",A0="[object ArrayBuffer]",D0="[object DataView]",B0="[object Float32Array]",E0="[object Float64Array]",_0="[object Int8Array]",G0="[object Int16Array]",z0="[object Int32Array]",R0="[object Uint8Array]",F0="[object Uint8ClampedArray]",V0="[object Uint16Array]",j0="[object Uint32Array]",Re={};Re[dp]=Re[b0]=Re[A0]=Re[D0]=Re[v0]=Re[S0]=Re[B0]=Re[E0]=Re[_0]=Re[G0]=Re[z0]=Re[C0]=Re[T0]=Re[mp]=Re[N0]=Re[M0]=Re[O0]=Re[P0]=Re[R0]=Re[F0]=Re[V0]=Re[j0]=!0;Re[w0]=Re[up]=Re[I0]=!1;function ds(n,t,e,r,o,i){var s,a=t&y0,l=t&g0,c=t&x0;if(e&&(s=o?e(n,r,o,i):e(n)),s!==void 0)return s;if(!bt(n))return n;var h=et(n);if(h){if(s=Qh(n),!a)return Hn(n,s)}else{var p=qo(n),d=p==up||p==L0;if(Eo(n))return rs(n,a);if(p==mp||p==dp||d&&!o){if(s=l||d?{}:ps(n),!a)return l?Wh(n,Rh(s,n)):qh(n,zh(s,n))}else{if(!Re[p])return o?n:{};s=np(n,p,a)}}i||(i=new ts);var u=i.get(n);if(u)return u;i.set(n,s),pp(n)?n.forEach(function(w){s.add(ds(w,t,e,w,n,i))}):lp(n)&&n.forEach(function(w,y){s.set(y,ds(w,t,e,y,n,i))});var f=c?l?ss:$h:l?lr:Go,g=h?void 0:f(n);return Rc(g||n,function(w,y){g&&(y=w,w=n[y]),$n(s,y,ds(w,t,e,y,n,i))}),s}var us=ds;var U0=1,k0=4;function H0(n){return us(n,U0|k0)}var Ri=H0;function q0(n){return function(t,e,r){for(var o=-1,i=Object(t),s=r(t),a=s.length;a--;){var l=s[n?a:++o];if(e(i[l],l,i)===!1)break}return t}}var fp=q0;var W0=fp(),yp=W0;function $0(n,t,e){(e!==void 0&&!jr(n[t],e)||e===void 0&&!(t in n))&&Do(n,t,e)}var Fi=$0;function J0(n){return xt(n)&&Ur(n)}var gp=J0;function K0(n,t){if(!(t==="constructor"&&typeof n[t]=="function")&&t!="__proto__")return n[t]}var Vi=K0;function Y0(n){return kt(n,lr(n))}var xp=Y0;function X0(n,t,e,r,o,i,s){var a=Vi(n,e),l=Vi(t,e),c=s.get(l);if(c){Fi(n,e,c);return}var h=i?i(a,l,e+"",n,t,s):void 0,p=h===void 0;if(p){var d=et(l),u=!d&&Eo(l),f=!d&&!u&&Yn(l);h=l,d||u||f?et(a)?h=a:gp(a)?h=Hn(a):u?(p=!1,h=rs(l,!0)):f?(p=!1,h=hs(l,!0)):h=[]:es(l)||ho(l)?(h=a,ho(a)?h=xp(a):(!bt(a)||Io(a))&&(h=ps(l))):p=!1}p&&(s.set(l,h),o(h,l,r,i,s),s.delete(l)),Fi(n,e,h)}var bp=X0;function vp(n,t,e,r,o){n!==t&&yp(t,function(i,s){if(o||(o=new ts),bt(i))bp(n,t,s,e,vp,r,o);else{var a=r?r(Vi(n,s),i,s+"",n,t,o):void 0;a===void 0&&(a=i),Fi(n,s,a)}},lr)}var Sp=vp;function Z0(n){var t=n==null?0:n.length;return t?n[t-1]:void 0}var wp=Z0;function Q0(n,t){return t.length<2?n:Lh(n,Ah(t,0,-1))}var Lp=Q0;var eb=Uc(function(n,t,e){Sp(n,t,e)}),uo=eb;function tb(n,t){return t=Vo(t,n),n=Lp(n,t),n==null||delete n[Qn(wp(t))]}var Cp=tb;function rb(n){return es(n)?void 0:n}var Tp=rb;var ob=1,ib=2,nb=4,sb=Ph(function(n,t){var e={};if(n==null)return e;var r=!1;t=Vn(t,function(i){return i=Vo(i,n),r||(r=i.length>1),i}),kt(n,ss(n),e),r&&(e=us(e,ob|ib|nb,Tp));for(var o=t.length;o--;)Cp(e,t[o]);return e}),$o=sb;var Jo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Jo||(Jo={}));var mo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(i){return i.type==="PerspectiveCamera"?i.perspective.zoom:i.orthographic.zoom}o.getZoom=r})(mo||(mo={}));var Np;(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})(Np||(Np={}));var Ko;(o=>{function n(i,s){return i[0]===s[0]&&i[1]===s[1]&&i[2]===s[2]}o.isEqual=n;function t(i,s){return[i[0]+s[0],i[1]+s[1],i[2]+s[2]]}o.add=t;function e(i,s){return[i[0]-s[0],i[1]-s[1],i[2]-s[2]]}o.sub=e;function r(i,s,a){return[i[0]+(s[0]-i[0])*a,i[1]+(s[1]-i[1])*a,i[2]+(s[2]-i[2])*a]}o.lerp=r})(Ko||(Ko={}));var Mp;(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})(Mp||(Mp={}));var $r;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(i,s){for(let a=0;a<16;a++)if(i[a]!==s[a])return!1;return!0}o.isEqual=t;function e(i){return i!=null?i:o.identity}o.simplify=e;function r(i,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let h=i[3]*s[l]+i[7]*s[l+1]+i[11]*s[l+2]+i[15];a[l]=(i[0]*s[l]+i[4]*s[l+1]+i[8]*s[l+2]+i[12])/h,a[l+1]=(i[1]*s[l]+i[5]*s[l+1]+i[9]*s[l+2]+i[13])/h,a[l+2]=(i[2]*s[l]+i[6]*s[l+1]+i[10]*s[l+2]+i[14])/h}return a}o.applyMatrix4=r})($r||($r={}));var Rt;(l=>{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 r(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=r;function o(c){return{r:c.r,g:c.g,b:c.b}}l.clone=o;function i(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=i;function s(c,h){return c.r===h.r&&c.g===h.g&&c.b===h.b}l.equals=s;function a(c,h,p){return{r:c.r+(h.r-c.r)*p,g:c.g+(h.g-c.g)*p,b:c.b+(h.b-c.b)*p}}l.lerp=a})(Rt||(Rt={}));var cr;(s=>{s.white=H(P({},Rt.white),{a:1});function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,l){return H(P({},Rt.fromHex(a)),{a:l})}s.fromHexAndA=e;function r(a){return{r:Math.round(a.r*255),g:Math.round(a.g*255),b:Math.round(a.b*255),a:a.a}}s.toRgb255a1=r;function o(a,l){return Rt.equals(a,l)&&a.a===l.a}s.equals=o;function i(a,l,c){return{r:a.r+(l.r-a.r)*c,g:a.g+(l.g-a.g)*c,b:a.b+(l.b-a.b)*c,a:a.a+(l.a-a.a)*c}}s.lerp=i})(cr||(cr={}));var ms;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(ms||(ms={}));var Op;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Op||(Op={}));var Pp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Pp||(Pp={}));var fs;(t=>{function n(e,r=.1){return{type:"radial",hideBase:!1,count:3,radial:{radius:Math.max(e[0],e[1])*2,start:0,end:360,alignment:!1,axis:"y",scale:[1,1,1],rotation:[0,0,0],position:[0,0,0]},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*r,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+r)),useCenter:!0}}}t.defaultData=n})(fs||(fs={}));var Ht=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let i=H(P({},r),{[t]:e});return Object.setPrototypeOf(i,Ht.prototype),i}}add(t,e){var o;let r=this.runOp({type:1,id:t,data:e});return(o=r==null?void 0:r.data)!=null?o:this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:i,data:s}=t,a=H(P({},e),{[i]:s});return Object.setPrototypeOf(a,Ht.prototype),{data:a,actual:t,reverse:o}}else if(t.type===2){let{id:r}=t,o=e[r];if(o===void 0)return null;{let i=P({},e);return Object.setPrototypeOf(i,Ht.prototype),delete i[r],{data:i,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function ji(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"&&ji(r)}return Object.freeze(n)}function Ip(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 ys=class extends Error{};function hr(n,t,e){if(n===void 0?t===void 0?(n=0,t=10):n=t-10:t===void 0&&(t=n+10),n>t){let i=n;n=t,t=i}let r=[],o=1/(e+1);for(let i=0;i<e;i++){let s=n+(t-n)*(i+.75+Math.random()*.5)*o;r.push(s)}return r}function Ap(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 Dp(){return typeof process<"u"}function Bp(n,t){for(let e of n)t(e.id,e.data),Bp(e.children,t)}function Ep(n,t){t(n.id,n.data);for(let e of n.children)Ep(e,t)}var qt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,qt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ji(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){var r;return(r=this.get(e))==null?void 0:r.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){var r;return e===null?this:(r=this.get(e))==null?void 0:r.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Ep(o,r)}}traverse(e){Bp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this.parent(e),s=this.childrenArray(i),a=s.findIndex(h=>h.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]=H(P({},l),{data:r}),this.modifyArrayBy(i,s)}}modifyArrayBy(e,r){let o=e,i=r;for(;o!==null;){let a=i,l=o;if(o=this.parent(o),o===void 0)throw new Error;i=this.childrenArray(o);let c=i.findIndex(h=>h.id===l);if(c<0)throw new Error;i=[...i],i[c]=H(P({},i[c]),{children:a})}Object.setPrototypeOf(i,qt.prototype);let s=i;return s.fillCaches(),s}runOp(e){switch(e.type){case 7:return this.addOp(e);case 8:return this.deleteOp(e);case 9:return this.moveOp(e)}}checkDuplicatedIdRec({id:e,children:r}){if(this.get(e)!==void 0)return!0;for(let o of r)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:r,fi:o,id:i,data:s,children:a}=e;if(r!==null&&this.get(r)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=r,c=this.childrenArray(l),h={fi:o,id:i,data:s,children:a};return c=[...c,h],c.sort((d,u)=>d.fi-u.fi),e.localIndex=c.indexOf(h),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:i}}}}deleteOp(e){let{id:r}=e;if(this.get(r)===null)return null;{let o=this.parent(r);if(o===void 0)return null;let i=this.childrenArray(o),s=i.findIndex(c=>c.id===r);e.localIndex=s,i=[...i];let a=i.splice(s,1)[0];return{data:this.modifyArrayBy(o,i),actual:e,reverse:H(P({type:7},a),{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 u=r;for(;u!==null;){if(u===void 0)throw new Error;if(u===i)throw new ys("cyclic tree");u=this.parent(u)}}let s=this.parent(i);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(u=>u.id===i);l=[...l];let h=l.splice(c,1)[0],p=this.modifyArrayBy(s,l);s=r,l=p.childrenArray(s);let d=h.fi;return h=H(P({},h),{fi:o}),l=[...l,h],l.sort((u,f)=>u.fi-f.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:d,id:i}}}previous(e,r){if(r===null){let i=this.childrenArray(e);return i.length===0?null:i[i.length-1].id}let o=null;for(let i of this.childrenArray(e)){if(i.id===r)return o;o=i.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)+1;if(i<o.length)return o[i].id;if(r)return this.traverseSortNext(r)}}sortNext(e){let r=this.childrenArray(e);return r.length>0?r[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let r=this.childrenArray(e);return r.length>0?this.traverseSortPrevious(r[r.length-1].id):e}sortPrevious(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),i=o.findIndex(s=>s.id===e)-1;return i>=0?this.traverseSortPrevious(o[i].id):r}}getAllSorted(e){let r=[];for(let o of e){let i=this.getWithSortKey(o.id);i!==void 0&&r.push(P(P({},o),i))}r.sort((o,i)=>Ip(o.sortKey,i.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],i=this.get(r),s=i;if(i!==void 0){for(;r;)o.splice(0,0,i.fi),r=this.parent(r),r!==null&&(i=this.get(r));return H(P({},s),{sortKey:o})}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let i=this.childrenArray(e);if(r===null){if(i.length===0)return hr(0,o,o);{let s=i[0].fi;return hr(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=i.find(l=>l.fi>s.fi);if(a===void 0){let l=i[i.length-1].fi;return hr(l,l+o,o)}else return hr(s.fi,a.fi,o)}}};var gs;(t=>{function n(e,r){if(Array.isArray(e)){let o=r.props,i={},s=[...e],a=!1;if(o)for(let l of Object.keys(o)){let c=parseInt(l);if(isNaN(c))throw new Error("wrong index");i[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}else{let o=r.props,i={},s=P({},e),a=!1;if(o)for(let l of Object.keys(o)){i[l]=s[l];let c=o[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:r,reverse:{type:0,props:i}}:null}}t.runOp=n})(gs||(gs={}));var Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)ji(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){var r;return(r=this.get(e))==null?void 0:r.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let i=this,s=i.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=i[s];return i=[...i],i[s]=H(P({},a),{data:r}),this.modifyArrayBy(i)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return Dp()||r.fillCaches(),r}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:r,id:o,data:i}=e,s=this,a={fi:r,id:o,data:i};return s=[...s,a],s.sort((c,h)=>c.fi-h.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:r}=e,o=this,i=o.findIndex(l=>l.id===r);if(i===-1)return null;e.localIndex=i,o=[...o];let s=o.splice(i,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:P({type:4},s)}}moveOp(e){let{fi:r,id:o}=e,i=this;i=[...i];let s=i.findIndex(h=>h.id===o);if(s===-1)return null;let a=i[s].fi,l=H(P({},i[s]),{fi:r});return i[s]=l,i.sort((h,p)=>h.fi-p.fi),e.localIndex=i.indexOf(l),{data:this.modifyArrayBy(i),actual:e,reverse:{type:6,fi:a,id:o}}}previous(e){if(e===null)return this.length===0?null:this[this.length-1].id;let r=null;for(let o of this){if(o.id===e)return r;r=o.id}return null}insertBeforeHelper(e,r){return this.insertAfterHelper(this.previous(e),r)}insertAfterHelper(e,r){let o=this;if(e===null){if(o.length===0)return hr(0,r,r);{let i=o[0].fi;return hr(i-r,i,r)}}else{let i=this.get(e);if(i===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>i.fi);if(s===void 0){let a=o[o.length-1].fi;return hr(a,a+r,r)}else return hr(i.fi,s.fi,r)}}};var _p=Symbol(),bs=Symbol(),Yo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof xs);){let i=r._path,s=r._current;if(i!==""&&o.splice(0,0,i),r=r._parent,r===null)return;r.update(i,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[bs];r&&r(),delete this._children[t]}}}},Va=class extends Yo{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=H(P({},this._current),{[t]:e})}runOp(t){this.reportOp(t,gs.runOp(this._current,t))}},ja=class extends Yo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=H(P({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,Ht.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Gp={get(n,t){if(t===bs)return()=>{n._parent=null};if(t===_p)return n._current;let{_current:e,_children:r}=n;if(t==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=e[t],s=vs(n,t,i);return s!==i?(r===void 0&&(r={},n._children=r),r[t]=s,s):i},has(n,t){return t in n._current},ownKeys(n){return Reflect.ownKeys(n._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(n){return Object.getPrototypeOf(n._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(n,t){let e=n._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},ab=H(P({},Gp),{set(n,t,e){var o;let r={type:0,props:{[t]:(o=Ha(e))!=null?o: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}}),lb=H(P({},Gp),{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}}),Xo=class extends Yo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[bs]=()=>{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){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=(a=e.get(t))==null?void 0:a.data,s=vs(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}add(t,e,r,o,i){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:i})}move(t,e,r){this.runOp({type:9,parent:t,fi:e,id:r})}insertAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.add(t,o[i],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let i=0;i<r.length;i++){let s=r[i];this.move(t,o[i],s)}}delete(t){this.deleteChildren(t),this.runOp({type:8,id:t})}sortNext(t){return this._current.sortNext(t)}sortPrevious(t){return this._current.sortPrevious(t)}getAllSorted(t){return this._current.getAllSorted(t)}},Zo=class extends Yo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[bs]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return H(P({},this._current.get(t)),{data:this.data(t)})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let i=(a=e.get(t))==null?void 0:a.data,s=vs(this,t,i);return s!==i?(r===void 0&&(r={},this._children=r),r[t]=s,s):i}runOp(t){this.reportOp(t,this._current.runOp(t))}add(t,e,r){this.runOp({type:4,fi:t,id:e,data:r})}move(t,e){this.runOp({type:6,fi:t,id:e})}insertAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.add(r[o],i.id,i.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let i=e[o];this.move(r[o],i)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function Fa(n,t,e){if(n.length>0){let r=n[n.length-1];if(r.type===0&&t.type===0&&Ss.equal(r.path,e)){Object.assign(r.props,t.props);return}}n.push(H(P({},t),{path:e}))}var xs=class{constructor(t){this.ts=[],this.actual=[],this.reverse=[],this._current=t}update(t,e){if(t!=="")throw new Error("");this._current=e}push(t,e,r,o){Fa(this.ts,e,t),Fa(this.actual,r,t),Fa(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function vs(n,t,e){return e instanceof qt?new Xo(n,t,e):e instanceof Je?new Zo(n,t,e):e instanceof Ht?new Proxy(new ja(n,t,e),lb):e!==null&&typeof e=="object"?Ap(e)?e:new Proxy(new Va(n,t,e),ab):e}function Ua(n){let t=new xs(n);return[vs(t,"",n),t]}function ka(n,t){let[e,r]=Ua(n);return t(e),r.result()}function Ha(n){return n instanceof Xo||n instanceof Zo?n._current:n!==null&&typeof n=="object"?n[_p]:n}var Ss;(r=>{function n(o,i){if(i.length===o.length)for(var s=0;s<o.length;){if(o[s]!==i[s])return!1;s+=1}else return!1;return!0}r.equal=n;function t(o,i,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l=P({},i);return Object.keys(a).forEach(c=>{delete l[c]}),l}else return i}r.removeOverridden=t;function e(o,i,s=0){if(i.length<=s)return o;if((o instanceof qt||o instanceof Xo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if((o instanceof Je||o instanceof Zo)&&typeof i[s]=="string")return e(o.data(i[s]),i,s+1);if(typeof i[s]=="number"&&Array.isArray(o))return e(o[i[s]],i,s+1);if(typeof i[s]=="string"&&typeof o=="object")return e(o[i[s]],i,s+1)}r.zoom=e})(Ss||(Ss={}));var ws=class{},Ui=class extends ws{constructor(e){super();this.id=e}},ki=class extends ws{constructor(e){super();this.data=e}};var Wa;try{Wa=new TextDecoder}catch{}var ee,Kr,S=0;var Hp=[],$a=Hp,Ja=0,At={},Pe,Jr,Wt=0,pr=0,Ft,Pr,Tt=[],Ie,zp={useRecords:!1,mapsAsObjects:!0},Hi=class{},Ya=new Hi;Ya.name="MessagePack 0xC1";var Qo=!1,dr=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(ee)return Kp(()=>(Cs(),this?this.unpack(t,e):dr.prototype.unpack.call(zp,t,e)));Kr=e>-1?e:t.length,S=0,Ja=0,pr=0,Jr=null,$a=Hp,Ft=null,ee=t;try{Ie=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ee=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 dr){if(At=this,this.structures)return Pe=this.structures,Ls();(!Pe||Pe.length>0)&&(Pe=[])}else At=zp,(!Pe||Pe.length>0)&&(Pe=[]);return Ls()}unpackMultiple(t,e){let r,o=0;try{Qo=!0;let i=t.length,s=this?this.unpack(t,i):Ms.unpack(t,i);if(e){for(e(s);S<i;)if(o=S,e(Ls())===!1)return}else{for(r=[s];S<i;)o=S,r.push(Ls());return r}}catch(i){throw i.lastPosition=o,i.values=r,i}finally{Qo=!1,Cs()}}_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 Ls(){try{if(!At.trusted&&!Qo){let t=Pe.sharedLength||0;t<Pe.length&&(Pe.length=t)}let n=Ke();if(S==Kr)Pe.restoreStructures&&Rp(),Pe=null,ee=null,Pr&&(Pr=null);else if(S>Kr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Qo)throw new Error("Data read, but end of buffer not reached");return n}catch(n){throw Pe.restoreStructures&&Rp(),Cs(),(n instanceof RangeError||n.message.startsWith("Unexpected end of buffer"))&&(n.incomplete=!0),n}}function Rp(){for(let n in Pe.restoreStructures)Pe[n]=Pe.restoreStructures[n];Pe.restoreStructures=null}function Ke(){let n=ee[S++];if(n<160)if(n<128){if(n<64)return n;{let t=Pe[n&63]||At.getStructures&&qp()[n&63];return t?(t.read||(t.read=Xa(t,n&63)),t.read()):n}}else if(n<144)if(n-=128,At.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[$p()]=Ke();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ke(),Ke());return t}else{n-=144;let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ke();return t}else if(n<192){let t=n-160;if(pr>=S)return Jr.slice(S-Wt,(S+=t)-Wt);if(pr==0&&Kr<140){let e=t<16?Za(t):Wp(t);if(e!=null)return e}return Ka(t)}else{let t;switch(n){case 192:return null;case 193:return Ft?(t=Ke(),t>0?Ft[1].slice(Ft.position1,Ft.position1+=t):Ft[0].slice(Ft.position0,Ft.position0-=t)):Ya;case 194:return!1;case 195:return!0;case 196:return qa(ee[S++]);case 197:return t=Ie.getUint16(S),S+=2,qa(t);case 198:return t=Ie.getUint32(S),S+=4,qa(t);case 199:return fo(ee[S++]);case 200:return t=Ie.getUint16(S),S+=2,fo(t);case 201:return t=Ie.getUint32(S),S+=4,fo(t);case 202:if(t=Ie.getFloat32(S),At.useFloat32>2){let e=Ns[(ee[S]&127)<<1|ee[S+1]>>7];return S+=4,(e*t+(t>0?.5:-.5)>>0)/e}return S+=4,t;case 203:return t=Ie.getFloat64(S),S+=8,t;case 204:return ee[S++];case 205:return t=Ie.getUint16(S),S+=2,t;case 206:return t=Ie.getUint32(S),S+=4,t;case 207:return At.int64AsNumber?(t=Ie.getUint32(S)*4294967296,t+=Ie.getUint32(S+4)):t=Ie.getBigUint64(S),S+=8,t;case 208:return Ie.getInt8(S++);case 209:return t=Ie.getInt16(S),S+=2,t;case 210:return t=Ie.getInt32(S),S+=4,t;case 211:return At.int64AsNumber?(t=Ie.getInt32(S)*4294967296,t+=Ie.getUint32(S+4)):t=Ie.getBigInt64(S),S+=8,t;case 212:if(t=ee[S++],t==114)return kp(ee[S++]&63);{let e=Tt[t];if(e)return e.read?(S++,e.read(Ke())):e.noBuffer?(S++,e()):e(ee.subarray(S,++S));throw new Error("Unknown extension "+t)}case 213:return t=ee[S],t==114?(S++,kp(ee[S++]&63,ee[S++])):fo(2);case 214:return fo(4);case 215:return fo(8);case 216:return fo(16);case 217:return t=ee[S++],pr>=S?Jr.slice(S-Wt,(S+=t)-Wt):hb(t);case 218:return t=Ie.getUint16(S),S+=2,pr>=S?Jr.slice(S-Wt,(S+=t)-Wt):pb(t);case 219:return t=Ie.getUint32(S),S+=4,pr>=S?Jr.slice(S-Wt,(S+=t)-Wt):db(t);case 220:return t=Ie.getUint16(S),S+=2,Vp(t);case 221:return t=Ie.getUint32(S),S+=4,Vp(t);case 222:return t=Ie.getUint16(S),S+=2,jp(t);case 223:return t=Ie.getUint32(S),S+=4,jp(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 cb=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Xa(n,t){function e(){if(e.count++>2){let o=n.read=new Function("r","return function(){return {"+n.map(i=>cb.test(i)?i+":r()":"["+JSON.stringify(i)+"]:r()").join(",")+"}}")(Ke);return n.highByte===0&&(n.read=Fp(t,n.read)),o()}let r={};for(let o=0,i=n.length;o<i;o++){let s=n[o];r[s]=Ke()}return r}return e.count=0,n.highByte===0?Fp(t,e):e}var Fp=(n,t)=>function(){let e=ee[S++];if(e===0)return t();let r=n<32?-(n+(e<<5)):n+(e<<5),o=Pe[r]||qp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=Xa(o,n)),o.read()};function qp(){let n=Kp(()=>(ee=null,At.getStructures()));return Pe=At._mergeStructures(n,Pe)}var Ka=Ts,hb=Ts,pb=Ts,db=Ts;function Ts(n){let t;if(n<16&&(t=Za(n)))return t;if(n>64&&Wa)return Wa.decode(ee.subarray(S,S+=n));let e=S+n,r=[];for(t="";S<e;){let o=ee[S++];if((o&128)===0)r.push(o);else if((o&224)===192){let i=ee[S++]&63;r.push((o&31)<<6|i)}else if((o&240)===224){let i=ee[S++]&63,s=ee[S++]&63;r.push((o&31)<<12|i<<6|s)}else if((o&248)===240){let i=ee[S++]&63,s=ee[S++]&63,a=ee[S++]&63,l=(o&7)<<18|i<<12|s<<6|a;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+=at.apply(String,r),r.length=0)}return r.length>0&&(t+=at.apply(String,r)),t}function Vp(n){let t=new Array(n);for(let e=0;e<n;e++)t[e]=Ke();return t}function jp(n){if(At.mapsAsObjects){let t={};for(let e=0;e<n;e++)t[$p()]=Ke();return t}else{let t=new Map;for(let e=0;e<n;e++)t.set(Ke(),Ke());return t}}var at=String.fromCharCode;function Wp(n){let t=S,e=new Array(n);for(let r=0;r<n;r++){let o=ee[S++];if((o&128)>0){S=t;return}e[r]=o}return at.apply(String,e)}function Za(n){if(n<4)if(n<2){if(n===0)return"";{let t=ee[S++];if((t&128)>1){S-=1;return}return at(t)}}else{let t=ee[S++],e=ee[S++];if((t&128)>0||(e&128)>0){S-=2;return}if(n<3)return at(t,e);let r=ee[S++];if((r&128)>0){S-=3;return}return at(t,e,r)}else{let t=ee[S++],e=ee[S++],r=ee[S++],o=ee[S++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){S-=4;return}if(n<6){if(n===4)return at(t,e,r,o);{let i=ee[S++];if((i&128)>0){S-=5;return}return at(t,e,r,o,i)}}else if(n<8){let i=ee[S++],s=ee[S++];if((i&128)>0||(s&128)>0){S-=6;return}if(n<7)return at(t,e,r,o,i,s);let a=ee[S++];if((a&128)>0){S-=7;return}return at(t,e,r,o,i,s,a)}else{let i=ee[S++],s=ee[S++],a=ee[S++],l=ee[S++];if((i&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){S-=8;return}if(n<10){if(n===8)return at(t,e,r,o,i,s,a,l);{let c=ee[S++];if((c&128)>0){S-=9;return}return at(t,e,r,o,i,s,a,l,c)}}else if(n<12){let c=ee[S++],h=ee[S++];if((c&128)>0||(h&128)>0){S-=10;return}if(n<11)return at(t,e,r,o,i,s,a,l,c,h);let p=ee[S++];if((p&128)>0){S-=11;return}return at(t,e,r,o,i,s,a,l,c,h,p)}else{let c=ee[S++],h=ee[S++],p=ee[S++],d=ee[S++];if((c&128)>0||(h&128)>0||(p&128)>0||(d&128)>0){S-=12;return}if(n<14){if(n===12)return at(t,e,r,o,i,s,a,l,c,h,p,d);{let u=ee[S++];if((u&128)>0){S-=13;return}return at(t,e,r,o,i,s,a,l,c,h,p,d,u)}}else{let u=ee[S++],f=ee[S++];if((u&128)>0||(f&128)>0){S-=14;return}if(n<15)return at(t,e,r,o,i,s,a,l,c,h,p,d,u,f);let g=ee[S++];if((g&128)>0){S-=15;return}return at(t,e,r,o,i,s,a,l,c,h,p,d,u,f,g)}}}}}function qa(n){return At.copyBuffers?Uint8Array.prototype.slice.call(ee,S,S+=n):ee.subarray(S,S+=n)}function fo(n){let t=ee[S++];if(Tt[t])return Tt[t](ee.subarray(S,S+=n));throw new Error("Unknown extension type "+t)}var Up=new Array(4096);function $p(){let n=ee[S++];if(n>=160&&n<192){if(n=n-160,pr>=S)return Jr.slice(S-Wt,(S+=n)-Wt);if(!(pr==0&&Kr<180))return Ka(n)}else return S--,Ke();let t=(n<<5^(n>1?Ie.getUint16(S):n>0?ee[S]:0))&4095,e=Up[t],r=S,o=S+n-3,i,s=0;if(e&&e.bytes==n){for(;r<o;){if(i=Ie.getUint32(r),i!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(i=ee[r++],i!=e[s++]){r=1879048192;break}if(r===o)return S=r,e.string;o-=3,r=S}for(e=[],Up[t]=e,e.bytes=n;r<o;)i=Ie.getUint32(r),e.push(i),r+=4;for(o+=3;r<o;)i=ee[r++],e.push(i);let a=n<16?Za(n):Wp(n);return a!=null?e.string=a:e.string=Ka(n)}var kp=(n,t)=>{var e=Ke();let r=n;t!==void 0&&(n=n<32?-((t<<5)+n):(t<<5)+n,e.highByte=t);let o=Pe[n];return o&&o.isShared&&((Pe.restoreStructures||(Pe.restoreStructures=[]))[n]=o),Pe[n]=e,e.read=Xa(e,r),e.read()},Jp=typeof self=="object"?self:global;Tt[0]=()=>{};Tt[0].noBuffer=!0;Tt[101]=()=>{let n=Ke();return(Jp[n[0]]||Error)(n[1])};Tt[105]=n=>{let t=Ie.getUint32(S-4);Pr||(Pr=new Map);let e=ee[S],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Pr.set(t,o);let i=Ke();return o.used?Object.assign(r,i):(o.target=i,i)};Tt[112]=n=>{let t=Ie.getUint32(S-4),e=Pr.get(t);return e.used=!0,e.target};Tt[115]=()=>new Set(Ke());var Qa=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(n=>n+"Array");Tt[116]=n=>{let t=n[0],e=Qa[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Jp[e](Uint8Array.prototype.slice.call(n,1).buffer)};Tt[120]=()=>{let n=Ke();return new RegExp(n[0],n[1])};Tt[98]=n=>{let t=(n[0]<<24)+(n[1]<<16)+(n[2]<<8)+n[3],e=S;S+=t-4,Ft=[Ke(),Ke()],Ft.position0=0,Ft.position1=0;let r=S;S=e;try{return Ke()}finally{S=r}};Tt[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 Kp(n){let t=Kr,e=S,r=Ja,o=Wt,i=pr,s=Jr,a=$a,l=Pr,c=Ft,h=new Uint8Array(ee.slice(0,Kr)),p=Pe,d=Pe.slice(0,Pe.length),u=At,f=Qo,g=n();return Kr=t,S=e,Ja=r,Wt=o,pr=i,Jr=s,$a=a,Pr=l,Ft=c,ee=h,Qo=f,Pe=p,Pe.splice(0,Pe.length,...d),At=u,Ie=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),g}function Cs(){ee=null,Pr=null,Pe=null}function Yp(n){n.unpack?Tt[n.type]=n.unpack:Tt[n.type]=n}var Ns=new Array(147);for(let n=0;n<256;n++)Ns[n]=+("1e"+Math.floor(45.15-n*.30103));var Ms=new dr({useRecords:!1}),ub=Ms.unpack,mb=Ms.unpackMultiple,fb=Ms.unpack,Os={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},yb=new Float32Array(1),qI=new Uint8Array(yb.buffer,0,4);var Ps;try{Ps=new TextEncoder}catch{}var Is,tl,As=typeof Buffer<"u",el=As?Buffer.allocUnsafeSlow:Uint8Array,ed=As?Buffer:Uint8Array,Xp=As?4294967296:2144337920,_,Ye,M=0,ur,mr=null,gb=/[\u0080-\uFFFF]/,qi=Symbol("record-id"),yo=class extends dr{constructor(t){super(t),this.offset=0;let e,r,o,i,s,a,l=0,c=ed.prototype.utf8Write?function(m,I,x){return _.utf8Write(m,I,x)}:Ps&&Ps.encodeInto?function(m,I){return Ps.encodeInto(m,_.subarray(I)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,d=t.structures||t.saveStructures,u=t.maxSharedStructures;if(u==null&&(u=d?32:0),u>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=d?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=u>32||f+u>64,w=u+64,y=u+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],A=0,N=0;this.pack=this.encode=function(m,I){if(_||(_=new el(8192),Ye=new DataView(_.buffer,0,8192),M=0),ur=_.length-10,ur-M<2048?(_=new el(_.length),Ye=new DataView(_.buffer,0,_.length),ur=_.length-10,M=0):M=M+7&2147483640,r=M,a=h.structuredClone?new Map:null,h.bundleStrings?(mr=["",""],_[M++]=214,_[M++]=98,mr.position=M-r,M+=4):mr=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let x=o.sharedLength||0;if(x>u)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+o.sharedLength);if(!o.transitions){o.transitions=Object.create(null);for(let C=0;C<x;C++){let T=o[C];if(!T)continue;let O,$=o.transitions;for(let J=0,ie=T.length;J<ie;J++){let de=T[J];O=$[de],O||(O=$[de]=Object.create(null)),$=O}$[qi]=C+64}l=x}p||(o.nextId=x+64)}i&&(i=!1),s=o||[];try{if(v(m),mr){Ye.setUint32(mr.position+r,M-mr.position-r);let x=mr;mr=null,v(x[0]),v(x[1])}if(h.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>ur&&L(M),h.offset=M;let x=bb(_.subarray(r,M),a.idsToInsert);return a=null,x}return I&rd?(_.start=r,_.end=M,_):_.subarray(r,M)}finally{if(o){if(N<10&&N++,A>1e4)o.transitions=null,N=0,A=0,b.length>0&&(b=[]);else if(b.length>0&&!p){for(let x=0,C=b.length;x<C;x++)b[x][qi]=0;b=[]}if(i&&h.saveStructures){let x=o.sharedLength||u;o.length>x&&(o=o.slice(0,x));let C=_.subarray(r,M);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(m)):(l=x,C)}}I&Nb&&(M=r)}};let v=m=>{M>ur&&(_=L(M));var I=typeof m,x;if(I==="string"){let C=m.length;if(mr&&C>=8&&C<4096){let $=gb.test(m);mr[$?0:1]+=m,_[M++]=193,v($?-C:C);return}let T;C<32?T=1:C<256?T=2:C<65536?T=3:T=5;let O=C*3;if(M+O>ur&&(_=L(M+O)),C<64||!c){let $,J,ie,de=M+T;for($=0;$<C;$++)J=m.charCodeAt($),J<128?_[de++]=J:J<2048?(_[de++]=J>>6|192,_[de++]=J&63|128):(J&64512)===55296&&((ie=m.charCodeAt($+1))&64512)===56320?(J=65536+((J&1023)<<10)+(ie&1023),$++,_[de++]=J>>18|240,_[de++]=J>>12&63|128,_[de++]=J>>6&63|128,_[de++]=J&63|128):(_[de++]=J>>12|224,_[de++]=J>>6&63|128,_[de++]=J&63|128);x=de-M-T}else x=c(m,M+T,O);x<32?_[M++]=160|x:x<256?(T<2&&_.copyWithin(M+2,M+1,M+1+x),_[M++]=217,_[M++]=x):x<65536?(T<3&&_.copyWithin(M+3,M+2,M+2+x),_[M++]=218,_[M++]=x>>8,_[M++]=x&255):(T<5&&_.copyWithin(M+5,M+3,M+3+x),_[M++]=219,Ye.setUint32(M,x),M+=4),M+=x}else if(I==="number")if(m>>>0===m)m<64?_[M++]=m:m<256?(_[M++]=204,_[M++]=m):m<65536?(_[M++]=205,_[M++]=m>>8,_[M++]=m&255):(_[M++]=206,Ye.setUint32(M,m),M+=4);else if(m>>0===m)m>=-32?_[M++]=256+m:m>=-128?(_[M++]=208,_[M++]=m+256):m>=-32768?(_[M++]=209,Ye.setInt16(M,m),M+=2):(_[M++]=210,Ye.setInt32(M,m),M+=4);else{let C;if((C=this.useFloat32)>0&&m<4294967296&&m>=-2147483648){_[M++]=202,Ye.setFloat32(M,m);let T;if(C<4||(T=m*Ns[(_[M]&127)<<1|_[M+1]>>7])>>0===T){M+=4;return}else M--}_[M++]=203,Ye.setFloat64(M,m),M+=8}else if(I==="object")if(!m)_[M++]=192;else{if(a){let T=a.get(m);if(T){if(!T.id){let O=a.idsToInsert||(a.idsToInsert=[]);T.id=O.push(T)}_[M++]=214,_[M++]=112,Ye.setUint32(M,T.id),M+=4;return}else a.set(m,{offset:M-r})}let C=m.constructor;if(C===Object)k(m,!0);else if(C===Array){x=m.length,x<16?_[M++]=144|x:x<65536?(_[M++]=220,_[M++]=x>>8,_[M++]=x&255):(_[M++]=221,Ye.setUint32(M,x),M+=4);for(let T=0;T<x;T++)v(m[T])}else if(C===Map){x=m.size,x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ye.setUint32(M,x),M+=4);for(let[T,O]of m)v(T),v(O)}else{for(let T=0,O=Is.length;T<O;T++){let $=tl[T];if(m instanceof $){let J=Is[T];if(J.write){J.type&&(_[M++]=212,_[M++]=J.type,_[M++]=0),v(J.write.call(this,m));return}let ie=_,de=Ye,ce=M;_=null;let ve;try{ve=J.pack.call(this,m,F=>(_=ie,ie=null,M+=F,M>ur&&L(M),{target:_,targetView:Ye,position:M-F}),v)}finally{ie&&(_=ie,Ye=de,M=ce,ur=_.length-10)}ve&&(ve.length+M>ur&&L(ve.length+M),M=xb(ve,_,M,J.type));return}}k(m,!m.hasOwnProperty)}}else if(I==="boolean")_[M++]=m?195:194;else if(I==="bigint"){if(m<BigInt(1)<<BigInt(63)&&m>=-(BigInt(1)<<BigInt(63)))_[M++]=211,Ye.setBigInt64(M,m);else if(m<BigInt(1)<<BigInt(64)&&m>0)_[M++]=207,Ye.setBigUint64(M,m);else if(this.largeBigIntToFloat)_[M++]=203,Ye.setFloat64(M,Number(m));else throw new RangeError(m+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(I==="undefined")this.encodeUndefinedAsNil?_[M++]=192:(_[M++]=212,_[M++]=0,_[M++]=0);else if(I==="function")v(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+I)},k=this.useRecords===!1?this.variableMapSize?m=>{let I=Object.keys(m),x=I.length;x<16?_[M++]=128|x:x<65536?(_[M++]=222,_[M++]=x>>8,_[M++]=x&255):(_[M++]=223,Ye.setUint32(M,x),M+=4);let C;for(let T=0;T<x;T++)v(C=I[T]),v(m[C])}:(m,I)=>{_[M++]=222;let x=M-r;M+=2;let C=0;for(let T in m)(I||m.hasOwnProperty(T))&&(v(T),v(m[T]),C++);_[x+++r]=C>>8,_[x+r]=C&255}:m=>{let I=Object.keys(m),x,C=s.transitions||(s.transitions=Object.create(null)),T=0;for(let $=0,J=I.length;$<J;$++){let ie=I[$];x=C[ie],x||(x=C[ie]=Object.create(null),T++),C=x}let O=C[qi];if(O)O>=96&&g?(_[M++]=((O-=96)&31)+96,_[M++]=O>>5):_[M++]=O;else{O=s.nextId,O||(O=64),O<w&&this.shouldShareStructure&&!this.shouldShareStructure(I)?(O=s.nextOwnId,O<y||(O=w),s.nextOwnId=O+1):(O>=y&&(O=w),s.nextId=O+1);let $=I.highByte=O>=96&&g?O-96>>5:-1;C[qi]=O,s[O-64]=I,O<w?(I.isShared=!0,s.sharedLength=O-63,i=!0,$>=0?(_[M++]=(O&31)+96,_[M++]=$):_[M++]=O):($>=0?(_[M++]=213,_[M++]=114,_[M++]=(O&31)+96,_[M++]=$):(_[M++]=212,_[M++]=114,_[M++]=O),T&&(A+=N*T),b.length>=f&&(b.shift()[qi]=0),b.push(C),v(I))}for(let $=0,J=I.length;$<J;$++)v(m[I[$]])},L=m=>{let I;if(m>16777216){if(m-r>Xp)throw new Error("Packed buffer would be larger than maximum buffer size");I=Math.min(Xp,Math.round(Math.max((m-r)*(m>67108864?1.25:2),4194304)/4096)*4096)}else I=(Math.max(m-r<<2,_.length-1)>>12)+1<<12;let x=new el(I);return Ye=new DataView(x.buffer,0,I),_.copy?_.copy(x,0,r,m):x.set(_.slice(r,m)),M-=r,r=0,ur=x.length-10,_=x}}useBuffer(t){_=t,Ye=new DataView(_.buffer,_.byteOffset,_.byteLength),M=0}};tl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Hi];Is=[{pack(n,t,e){let r=n.getTime()/1e3;if((this.useTimestamp32||n.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:i,position:s}=t(6);o[s++]=214,o[s++]=255,i.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:i,position:s}=t(10);o[s++]=215,o[s++]=255,i.setUint32(s,n.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),i.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:i,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:i,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,i.setUint32(s,n.getMilliseconds()*1e6),i.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(n,t,e){let r=Array.from(n),{target:o,position:i}=t(this.structuredClone?3:0);this.structuredClone&&(o[i++]=212,o[i++]=115,o[i++]=0),e(r)}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([n.name,n.message])}},{pack(n,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([n.source,n.flags])}},{pack(n,t){this.structuredClone?Zp(n,16,t):Qp(As?Buffer.from(n):new Uint8Array(n),t)}},{pack(n,t){let e=n.constructor;e!==ed&&this.structuredClone?Zp(n,Qa.indexOf(e.name),t):Qp(n,t)}},{pack(n,t){let{target:e,position:r}=t(1);e[r]=193}}];function Zp(n,t,e,r){let o=n.byteLength;if(o+1<256){var{target:i,position:s}=e(4+o);i[s++]=199,i[s++]=o+1}else if(o+1<65536){var{target:i,position:s}=e(5+o);i[s++]=200,i[s++]=o+1>>8,i[s++]=o+1&255}else{var{target:i,position:s,targetView:a}=e(7+o);i[s++]=201,a.setUint32(s,o+1),s+=4}i[s++]=116,i[s++]=t,i.set(new Uint8Array(n.buffer,n.byteOffset,n.byteLength),s)}function Qp(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 xb(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 bb(n,t){let e,r=t.length*6,o=n.length-r;for(t.sort((i,s)=>i.offset>s.offset?1:-1);e=t.pop();){let i=e.offset,s=e.id;n.copyWithin(i+r,i,o),r-=6;let a=i+r;n[a++]=214,n[a++]=105,n[a++]=s>>24,n[a++]=s>>16&255,n[a++]=s>>8&255,n[a++]=s&255,o=i}return n}function go(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)");tl.unshift(n.Class),Is.unshift(n)}Yp(n)}var td=new yo({useRecords:!1}),vb=td.pack,Sb=td.pack;var{NEVER:wb,ALWAYS:Lb,DECIMAL_ROUND:Cb,DECIMAL_FIT:Tb}=Os,rd=512,Nb=1024;var od=new yo({structuredClone:!0});go({Class:Ht.prototype.constructor,type:1,write(n){return P({},n)},read(n){return Object.setPrototypeOf(n,Ht.prototype),n}});go({Class:Je.prototype.constructor,type:2,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,Je.prototype),n}});go({Class:qt.prototype.constructor,type:3,write(n){return[...n]},read(n){return Object.setPrototypeOf(n,qt.prototype),n}});go({Class:Ui.prototype.constructor,type:4,write(n){return n.id},read(n){return new Ui(n)}});go({Class:ki.prototype.constructor,type:5,write(n){return n.data},read(n){return new ki(n)}});function Mb(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}var Ds;(r=>{function n(o){return od.pack(o)}r.serialize=n;function t(o){return od.unpack(o)}r.deserialize=t;function e(o){return Mb(n(o)).toString()}r.checksum=e})(Ds||(Ds={}));var Bs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Bs||(Bs={}));var Es;(e=>{function n(r){return t(r)}e.defaultData=n;function t(r){if(r==="PointLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:2500,helper:!0};if(r==="SpotLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:2500,helper:!0};if(r==="DirectionalLight")return{type:r,color:cr.white,intensity:1,shadows:!0,size:2500,depth:2500,helper:!0};throw new Error("not implemented")}})(Es||(Es={}));var rl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(rl||(rl={}));var ol;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function t(r,o){return r.flatShading===o.flatShading&&r.side===o.side&&r.wireframe===o.wireframe}e.equals=t})(ol||(ol={}));var _s;(t=>t.defaultData=H(P(P({},ol.defaultData),rl.defaultData),{cloner:null,booleanExclude:null}))(_s||(_s={}));var il=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(il||{}),nl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(nl||{}),sl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(sl||{}),Gs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:cr.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Gs||(Gs={}));var ei;(r=>{function n(o,i){return o==="light"&&i?t(i):e(o)}r.defaultData=n;function t(o){switch(o){case"basic":return{type:"light",category:"basic",alpha:1,visible:!0,mode:0};case"phong":return{category:"phong",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"toon":return{category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1,visible:!0,mode:0};case"lambert":return{category:"lambert",emissive:{r:0,g:0,b:0,a:1},type:"light",alpha:1,visible:!0,mode:0};case"physical":return{category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0}}}function e(o){switch(o){case"texture":return{alpha:1,visible:!0,size:[128,128],mode:0,axis:"x",side:2,type:"texture",projection:0,texture:{image:"image_0",wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!0};case"color":return{type:"color",alpha:1,visible:!0,mode:0,color:Rt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:H(P({},Rt.fromHex(6710886)),{a:1}),colorB:H(P({},Rt.fromHex(6710886)),{a:1}),colorC:H(P({},Rt.fromHex(16777215)),{a:1}),colorD:H(P({},Rt.fromHex(16777215)),{a:1}),distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:cr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(ei||(ei={}));var xo;(a=>{function n(l){return!l.layers.some(h=>{if(h.data.type==="texture"&&h.data.projection!==0||h.data.type==="depth"&&!h.data.isWorldSpace||h.data.type==="noise"||h.data.type==="displace")return!0})&&!e(l)}a.isMergable=n;function t(l){let c="";return l.layers.forEach(h=>{Object.entries(h.data).forEach(([p,d])=>{c+=`${p}${d}`,Array.isArray(d)?d.forEach(u=>c+=`${u}`):typeof d=="object"?Object.values(d).forEach(u=>{typeof u=="number"?c+=`${u.toFixed(4)}`:c+=`${u}`}):c+=`${d}`})}),c}a.getHash=t;function e(l){let c=0;for(let h of l.layers)"alpha"in h.data&&h.data.type!=="light"&&h.data.type!=="fresnel"&&(c+=(1-c)*h.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Je}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return i("phong",l,c)}a.defaultData=o;function i(l,c="layer1",h="layer2"){let p=new Je;return p.push({fi:0,data:ei.defaultData("light",l),id:c}),p.push({fi:1,data:ei.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=i;function s(l,c="basic",h="layer1",p="layer2"){let d=ei.defaultData("texture");Object.assign(d.texture,{image:l});let u=new Je;return u.push({fi:0,data:d,id:h}),u.push({fi:1,data:ei.defaultData("light",c),id:p}),{layers:u}}a.defaultTwoLayerTextureData=s})(xo||(xo={}));var ti;(r=>{function n(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=n;function t(o,i){let{points:s}=i;if(s){for(let a of s)if(a.data.position[0]===o[0]&&a.data.position[1]===o[1])return!0}return!1}r.isOverlappingExistingPoint=t;function e(o,i){let s=o.controlNext,a=i.controlPrevious;return o.position[0]===s.position[0]&&o.position[1]===s.position[1]&&i.position[0]===a.position[0]&&i.position[1]===a.position[1]}r.isStraightLine=e})(ti||(ti={}));var zs;(t=>{function n(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=n})(zs||(zs={}));var Wi;(t=>{function n(e){if(e==="RectangleGeometry")return{width:320,height:320,type:e,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="VectorGeometry")return{width:1,height:1,type:e,subdivisions:12,shape:ti.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0};throw new Error("not implemented")}t.defaultData=n})(Wi||(Wi={}));var $i;(o=>{o.identity=H(P({},ms.identity),{hiddenMatrix:$r.identity});function t(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}o.fromObject=t;function e(i,s){return{position:(s==null?void 0:s.position)||i.position,rotation:(s==null?void 0:s.rotation)||i.rotation,scale:(s==null?void 0:s.scale)||i.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||i.hiddenMatrix}}o.merge=e;function r(i,s){return{position:Ko.isEqual(i.position,s.position)?null:s.position,rotation:Ko.isEqual(i.rotation,s.rotation)?null:s.rotation,scale:Ko.isEqual(i.scale,s.scale)?null:s.scale,hiddenMatrix:$r.isEqual(i.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})($i||($i={}));var Ir;(t=>t.defaultData=P({states:new Je,events:new Je,visible:!0,raycastLock:!1},$i.identity))(Ir||(Ir={}));var id;(t=>t.defaultData=P({type:"Empty"},Ir.defaultData))(id||(id={}));var Rs;(t=>t.defaultData=P(P({type:"Mesh"},Ir.defaultData),_s.defaultData))(Rs||(Rs={}));var nd;(t=>t.defaultData=P(P({type:"TextFrame"},Ir.defaultData),Gs.defaultData))(nd||(nd={}));var Fs;(t=>t.defaultData=P(P(P({},Ir.defaultData),$i.identity),mo.defaultData))(Fs||(Fs={}));var sd;(t=>{function n(e){return P(P({},Ir.defaultData),Es.defaultData(e))}t.defaultData=n})(sd||(sd={}));var ad;(r=>(r.defaultCamera=P({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:$r.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},mo.defaultData),r.defaultMeshObject=H(P(P({name:"Rectangle"},Ir.defaultData),Rs.defaultData),{geometry:Wi.defaultData("RectangleGeometry"),material:xo.defaultTwoLayerData("basic","layer1","layer2")}),r.defaultBooleanObject=H(P(P({name:"Boolean"},Ir.defaultData),Rs.defaultData),{geometry:Wi.defaultData("BooleanGeometry"),material:xo.defaultTwoLayerData("phong","layer1","layer2")})))(ad||(ad={}));var ld;(e=>{function n(r,o){if(o===void 0)return r;let i=P({},r);return"material"in i&&"material"in o&&o.material&&(i.material=ka(i.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&uo(c,l)}}).data),i.materials&&o.materials&&(i.materials=ka(i.materials,s=>{var a,l;for(let c=0;c<i.materials.length;c++){let h=o.materials[c];if(typeof h!="string")for(let[p,d]of Object.entries(h.layers)){let u=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(p);u&&uo(u,d)}}}).data),i}e.patchMaterialState=n;function t(r,o){var s,a;if(o===void 0)return r;let i=P({},r);if(Object.assign(i,$i.merge(i,o)),Jo.is(r.type)){i.orthographic=P({},i.orthographic),i.perspective=P({},i.perspective);let l=o;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(i.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(i.perspective.zoom=l.perspective.zoom)}else if(r.type==="Mesh")i.geometry=P({},i.geometry),Object.assign(i.geometry,o.geometry),i=n(i,o);else if(Bs.is(r.type)){let l=o;i.intensity!==void 0&&(i.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?i.color=l.color:i.color=Rt.clone(l.color))}return i}e.patch=t})(ld||(ld={}));import{ConeBufferGeometry as Ib}from"three";import{BufferGeometry as Ob,CylinderBufferGeometry as Pb,Float32BufferAttribute as al,Vector2 as Qt,Vector3 as Vs}from"three";var hd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var s,a,l,c,h;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},n.parameters),r=e.width/2,o=(a=e.radiusTop)!=null?a:r,i=(l=e.radiusBottom)!=null?l: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((c=e.height)!=null?c:e.width),depth:Math.abs((h=e.depth)!=null?h:e.width),radiusTop:o,radiusBottom:i})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:h,cornerRadius:p,cornerSegments:d,hollow:u}=n.parameters,f;return p||u?f=new Ji(c,h,r,o,i,s,a,l*Math.PI/180,p,p,d,u):f=new Pb(c,h,r,o,i,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:H(P({},n),{type:"CylinderGeometry"})})}};function Yr(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function cd(n){return new Qt(n.y,-n.x)}var Ji=class extends Ob{constructor(t,e,r,o,i,s,a,l,c,h,p,d,u=!1){super(),this.type="RoundedCylinderBufferGeometry",t=t!==void 0?t:1,e=e!==void 0?e:1,r=r||1,o=Math.floor(o)||8,i=Math.floor(i)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,h=0);let f=[],g=[],w=[],y=[],b=0,A=r/2,N=new Vs,v=new Vs;u&&t==0&&(t=c),u&&e==0&&(e=h);let k=new Qt(t,A),L=new Qt(e,-A),m=null,I=null,x=null,C=null,T=k.clone().sub(L),O=0,$=0,J=0;d>0&&(O=Math.min(t,e)*(1-d),$=t-O,J=e-O);let ie=k.clone();ie.x-=O;let de=Math.PI-T.angle(),ce=T.angle(),ve=Math.tan(ce/2),F=Math.tan(de/2),G=ve+F,B=d?G:F,z=d?G:ve;if(c=Math.min(c,(t-$)/B,T.length()/G),h=Math.min(h,(e-J)/z,T.length()/G),c>0){let V=c/ve;m=k.clone().sub(new Qt(V,c)),d&&(x=m.clone(),x.x-=O-G*c),k.sub(T.clone().setLength(V))}if(h>0){let V=h/F;I=L.clone().sub(new Qt(V,-h)),L.add(T.clone().setLength(V)),d&&(C=I.clone(),C.x-=O-G*h,ie.sub(T.clone().setLength(V)))}T=k.clone().sub(L);let D=T.length()<.5,R=[];for(let V=0;V<=o;V++){let E=[],U=V/o,ne=U*l+a,q=new Qt(Math.sin(ne),Math.cos(ne));C&&I?(K(E,U,q,de,h,C,-1,!0),K(E,U,q,ce,h,I,-1,!1)):I?(Z(E,q,I.x,0,-1),K(E,U,q,ce,h,I,-1,!1)):s||Z(E,q,e,J,-1);let W=cd(T).normalize();if(Yr(W,q,N),!D)for(let Y=0;Y<=i;Y++){let X=Y/i,Q=T.clone().multiplyScalar(X).add(L);Yr(Q,q,v),g.push(v.x,v.y,v.z),w.push(N.x,N.y,N.z),y.push(U,.5+v.y/r),E.push(b++)}if(x&&m?(K(E,U,q,de,c,m,1,!1),K(E,U,q,ce,c,x,1,!0)):m?(K(E,U,q,de,c,m,1,!1),Z(E,q,m.x,0,1)):s||Z(E,q,t,$,1),d&&!D){let Y=cd(T).multiplyScalar(-1).normalize();Yr(Y,q,N);for(let X=0;X<=i;X++){let Q=X/i,se=T.clone().multiplyScalar(-Q).add(ie);Yr(se,q,v),g.push(v.x,v.y,v.z),w.push(N.x,N.y,N.z),y.push(U,.5+v.y/r),E.push(b++)}}d&&!s&&E.push(E[0]),R.push(E)}for(let V=0;V<R.length-1;V++)for(let E=0;E<R[0].length-1;E++){if(s&&d&&E==i)continue;let U=R[V][E],ne=R[V+1][E],q=R[V+1][E+1],W=R[V][E+1],Y=g[q*3+0],X=g[q*3+2];f.push(U,ne,W),(Y!=0||X!=0)&&f.push(ne,q,W)}l<Math.PI*2&&(j(-1,R[0],a),j(1,R[R.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new al(g,3)),this.setAttribute("normal",new al(w,3)),this.setAttribute("uv",new al(y,2));function K(V,E,U,ne,q,W,Y,X){for(let Q=0;Q<p+1;Q++){let se=Q/p,oe=Y<0?se:1-se;X&&(oe-=1),oe*=ne;let he=new Qt(Math.sin(oe),Math.cos(oe)*Y),Ge=he.clone().multiplyScalar(q).add(W);Yr(Ge,U,v),g.push(v.x,v.y,v.z),Yr(he,U,N),w.push(N.x,N.y,N.z),y.push(E,.5+v.y/r),V.push(b++)}}function Z(V,E,U,ne,q){let W=new Vs,Y=new Qt,X=[U,ne];q<0&&X.reverse();for(let Q of X)Y.set(Q,A*q),Yr(Y,E,W),g.push(W.x,W.y,W.z),w.push(0,q,0),y.push(.5,.5),V.push(b++)}function j(V,E,U){let ne=new Qt(Math.sin(U),Math.cos(U)),q=new Qt(-Math.cos(U),Math.sin(U)),W=new Vs,Y=V<0?(se,oe,he)=>f.push(se,oe,he):(se,oe,he)=>f.push(se,he,oe),X=new Qt((t+e+$+J)/4,0);Yr(X,ne,W),g.push(W.x,W.y,W.z),w.push(q.x,0,q.y),y.push(.5,.5);let Q=b++;for(let se of E){let oe=g.slice(se*3,se*3+3);g.push(...oe),w.push(q.x,0,q.y);let he=y.slice(se*2,se*2+2);y.push(...he),b++}for(let se=Q+1;se<b-1;se++)Y(Q,se,se+1);Y(Q,b-1,Q+1)}}};var pd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:i,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:h,cornerSegments:p}=n.parameters,d;return c>0||h>0||l<360?d=new Ji(0,t/2,r,o,i,s,a,l*Math.PI/180,c,h,p,0,!0):d=new Ib(t/2,r,o,i,s),d.scale(1,1,e/t),Object.assign(d,{userData:H(P({},n),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as Ab,BufferGeometry as Db,Float32BufferAttribute as ll,Vector3 as Ki}from"three";var dd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:i,depthSegments:s,cornerRadius:a,cornerSegments:l}=n.parameters,c;return a==0?c=new Ab(t,e,r,o,i,s):c=new hl(t,e,r,o,i,s,a,l),Object.assign(c,{userData:H(P({},n),{type:"CubeGeometry"})})}},cl=Math.PI/2,hl=class extends Db{constructor(t=1,e=1,r=1,o=1,i=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),i=Math.floor(i),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let h=[],p=[],d=[],u=[],f=0,g=0;w("z","y","x",-1,-1,r,e,t,s,i,0),w("z","y","x",1,-1,r,e,-t,s,i,1),w("x","z","y",1,1,t,r,e,o,s,2),w("x","z","y",1,-1,t,r,-e,o,s,3),w("x","y","z",1,-1,t,e,r,o,i,4),w("x","y","z",-1,-1,t,e,-r,o,i,5),a>0&&(y("z","y","x",-1,-1,1,r,e,t,s,0),y("z","y","x",1,-1,-1,r,e,t,s,1),y("z","y","x",-1,1,-1,r,e,t,s,1),y("z","y","x",1,1,1,r,e,t,s,0),y("x","y","z",-1,-1,-1,t,e,r,o,0),y("x","y","z",1,-1,1,t,e,r,o,1),y("x","y","z",-1,1,1,t,e,r,o,0),y("x","y","z",1,1,-1,t,e,r,o,1),y("y","x","z",-1,-1,1,e,t,r,i,0),y("y","x","z",1,-1,-1,e,t,r,i,1),y("y","x","z",1,1,1,e,t,r,i,1),y("y","x","z",-1,1,-1,e,t,r,i,0),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new ll(p,3)),this.setAttribute("normal",new ll(d,3)),this.setAttribute("uv",new ll(u,2));function w(A,N,v,k,L,m,I,x,C,T,O){let $=(m-2*a)/C,J=(I-2*a)/T,ie=m/2-a,de=I/2-a,ce=x/2,ve=C+1,F=T+1,G=0,B=0,z=new Ki;for(let D=0;D<F;D++){let R=D*J-de;for(let K=0;K<ve;K++){let Z=K*$-ie;z[A]=Z*k,z[N]=R*L,z[v]=ce,p.push(z.x,z.y,z.z),z[A]=0,z[N]=0,z[v]=x>0?1:-1,d.push(z.x,z.y,z.z),u.push(K/C),u.push(1-D/T),G+=1}}for(let D=0;D<T;D++)for(let R=0;R<C;R++){let K=f+R+ve*D,Z=f+R+ve*(D+1),j=f+(R+1)+ve*(D+1),V=f+(R+1)+ve*D;h.push(K,Z,V),h.push(Z,j,V),B+=6}c.addGroup(g,B,O),g+=B,f+=G}function y(A,N,v,k,L,m,I,x,C,T,O){let $=(I-2*a)/T,J=I/2-a,ie=x/2-a,de=C/2,ce=T+1,ve=0,F=0,G=new Ki,B=new Ki;for(let z=0;z<l+1;z++){let D=z/l*cl,R=Math.sin(D)*a,K=(1-Math.cos(D))*a,Z=Math.sin(D),j=Math.cos(D);G[N]=(ie+R)*L,G[v]=(de-K)*m,B[A]=0,B[N]=Z*Math.sign(G[N]),B[v]=j*Math.sign(G[v]);for(let V=0;V<ce;V++){let E=V*$-J;G[A]=E*k,p.push(G.x,G.y,G.z),d.push(B.x,B.y,B.z),u.push(V/T),u.push(0),ve+=1}}for(let z=0;z<l;z++)for(let D=0;D<T;D++){let R=f+D+ce*z,K=f+D+ce*(z+1),Z=f+(D+1)+ce*(z+1),j=f+(D+1)+ce*z;h.push(R,K,j),h.push(K,Z,j),F+=6}c.addGroup(g,F,O),g+=F,f+=ve}function b(A,N,v){let k=new Ki,L=new Ki(t/2,e/2,r/2);L.subScalar(a);let m=[],I=A*N*v>0?(C,T,O)=>h.push(C,T,O):(C,T,O)=>h.push(C,O,T);for(let C=0;C<=l;C++){let T=[],O=cl*(1-C/l),$=Math.cos(O),J=Math.sin(O),ie=0;for(let de=0;de<=C;de++){let ce=Math.cos(ie),ve=Math.sin(ie);k.x=$*ce,k.y=J,k.z=$*ve;let F=L.clone().addScaledVector(k,a);p.push(A*F.x,N*F.y,v*F.z),d.push(A*k.x,N*k.y,v*k.z),u.push(0,0),T.push(f++),ie+=cl/C}m.push(T)}let x=m.length-1;for(let C=0;C<x;C++){let T=m[C],O=m[C+1],$=T.length-1;I(T[0],O[1],O[0]);for(let J=1;J<=$;J++)I(T[J-1],T[J],O[J]),I(T[J],O[J+1],O[J])}}}};import{BufferGeometry as Bb,Float32BufferAttribute as pl,Triangle as Eb,Vector3 as Ar,Vector2 as dl}from"three";var Xr=class extends Bb{constructor(t=[],e=[],r="",o=1,i=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new pl(a,3)),this.setAttribute("normal",new pl(c,3)),this.setAttribute("uv",new pl(l,2));return;function h(){var ve;i=Math.min(1-1e-5,i),i==0&&(s=0);let u={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Ar,g=f.clone(),w=new Eb,y=i*o,b=o-y,A=s+1,N=new Ar,v=(F,G)=>N.subVectors(F,G).normalize(),k=(F,G)=>Array(F).fill(void 0).map(G),L=k(t.length/3,(F,G)=>new Ar().fromArray(t,G*3).setLength(o)),m=[],I=1e6;for(let F=0;F<L.length;F++){let G=L[F],B=[],z,D,R,K=1e10,Z=-1;for(;(Z=e.indexOf(F,Z+1))!=-1;){let U=Z-Z%3;z=e[U+(Z+1)%3],D=e[U+(Z+2)%3],R=G.distanceToSquared(L[z]),K=Math.min(K,R),B.push([z,D,R])}K+=1e-6;let j=[],V=0,E=B.length;for(let U=0;U<E;U++){[z,D,R]=B[V];let ne=((ve=m[z])==null?void 0:ve.includes(F))==!0;R<=K&&j.push(z+ +ne*I),V=B.findIndex(q=>q[0]==D)}m.push(j)}let x=[];{let F=0,G=0,B,z,D=u==3;for(let R=0;R<=s;R++){B=R*(R+1)/2,z=(R+1)*(R+2)/2;for(let K=0;K<s-R;K++)[F,G]=[B+K+R+2,z+K+R+3],x.push(B,z,...D?[G,B]:[F,z],G,F),[B,z]=[F,G];x.push(B,z,B+s+2)}}let C=f.clone(),T=f.clone(),O=f.clone(),$=f.clone(),J=f.clone(),ie=[],de=k(L.length,()=>k(u,()=>f.clone()));for(let F=0;F<L.length;F++){f.copy(L[F]).normalize(),C.copy(f).multiplyScalar(b);let G=m[F];for(let j=0;j<G.length;j++){let V=G[j],E=G[(j+1)%u];w.setFromPointsAndIndices(L,F,V%I,E%I),w.b.sub(w.a).setLength(1e10).add(w.a),w.c.sub(w.a).setLength(1e10).add(w.a),w.closestPointToPoint(C,de[F][j])}let B=[],z=[],D=[],R=new Ar;s==0&&[...de[F]].reduce((j,V)=>j.add(V),R).multiplyScalar(1/u);for(let j=0;j<u;j++){let V=[],E=(j-1+u)%u,U=de[F][E],ne=de[F][j];f.copy(U).sub(C),g.copy(ne).sub(C);let q=C.angleTo(f),W=f.angleTo(g),Y=Math.cos(q)*y;s==0?T.copy(R):T.copy(C).setLength(b+Y),z.push(Y);let X=[T,U,ne];for(let Q=0;Q<2;Q++){let se=X[Q],oe=X[Q+1];$.subVectors(se,C),J.subVectors(oe,C),O.crossVectors($,J).normalize();for(let he=0;he<A;he++){let Ge=[q,W][Q]*he/A;f.copy($).applyAxisAngle(O,Ge).add(C),B.push(f.clone()),Q&&(v(f,C),V.push([he==0?se:f.clone(),N.clone()]))}Q&&(v(oe,C),V.push([oe,N.clone()]))}D.push(V)}ie.push(D);let K=2*A,Z=2;for(let j=0;j<u;j++){let V=K*j,E=K*((j+1)%u),U=[B[V]];for(let q=1;q<A;q++){$=B[V+q],J=B[E+q],U.push($);for(let W=1,Y=q-Z+1;W<=Y;W++)f.lerpVectors($,J,W/(Y+1)),f.sub(C).setLength(z[j]).add(C),U.push(f.clone());U.push(J)}for(let q=0;q<A;q++)U.push(B[q+A+V]);U.push(B[E+A]);let ne=x.map(q=>U[q]);a.push(...ne.map(q=>[q.x,q.y,q.z]).flat()),c.push(...ne.map(q=>(v(q,C),[N.x,N.y,N.z])).flat())}}let ce=[];for(let F=0;F<m.length;F++)for(let G=0;G<u;G++){let B=m[F][G];if(B<I){let z=m[B].findIndex(K=>K%I==F),D=ie[F][G],R=ie[B][z];for(let K=0;K<A;K++){let Z=D[K],j=R[A-K],V=D[K+1],E=R[A-(K+1)];[Z,j,V,V,j,E].forEach(U=>{a.push(U[0].x,U[0].y,U[0].z),c.push(U[1].x,U[1].y,U[1].z)})}ce.push(D[0][0],R[A][0],D[A][0],R[0][0])}}for(;ce.length;){let F,G,B,z;[F,G]=ce.splice(0,2);let D=[F];for(;F!=G;)D.push(G),B=ce.indexOf(G),z=B%2,G=ce.splice(B-z,2)[1-z];N.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let R=N.dot(D[0])<0;R&&N.negate();for(let K=1;K<=D.length-2;K++)[D[K+ +R],D[K+1-+R],D[0]].forEach(Z=>{a.push(Z.x,Z.y,Z.z),c.push(N.x,N.y,N.z)})}}function p(){let d=new Ar;for(let L=0;L<a.length;L+=3){d.x=a[L+0],d.y=a[L+1],d.z=a[L+2];let m=v(d)/2/Math.PI+.5,I=k(d)/Math.PI+.5;l.push(m,1-I)}let u=new Ar,f=new Ar,g=new Ar,w=new Ar,y=new dl,b=new dl,A=new dl,N=(L,m,I,x)=>{x<0&&L.x===1&&(l[m]=L.x-1),I.x===0&&I.z===0&&(l[m]=x/2/Math.PI+.5)};for(let L=0,m=0;L<a.length;L+=9,m+=6){u.set(a[L+0],a[L+1],a[L+2]),f.set(a[L+3],a[L+4],a[L+5]),g.set(a[L+6],a[L+7],a[L+8]),y.set(l[m+0],l[m+1]),b.set(l[m+2],l[m+3]),A.set(l[m+4],l[m+5]),w.copy(u).add(f).add(g).divideScalar(3);let I=v(w);N(y,m+0,u,I),N(b,m+2,f,I),N(A,m+4,g,I)}for(let L=0;L<l.length;L+=6){let m=l[L+0],I=l[L+2],x=l[L+4],C=Math.max(m,I,x),T=Math.min(m,I,x);C>.9&&T<.1&&(m<.2&&(l[L+0]+=1),I<.2&&(l[L+2]+=1),x<.2&&(l[L+4]+=1))}function v(L){return Math.atan2(L.z,-L.x)}function k(L){return Math.atan2(-L.y,Math.sqrt(L.x*L.x+L.z*L.z))}}}static fromJSON(t){return new Xr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as _b}from"three";var ud=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new Yi(t*.5,i,s):new _b(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(P({},n),{type:"DodecahedronGeometry"})})}},Yi=class extends Xr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=1/o,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-o,0,-i,o,0,i,-o,0,i,o,-i,-o,0,-i,o,0,i,-o,0,i,o,0,-o,0,-i,o,0,-i,-o,0,i,o,0,i],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],l="DodecahedronGeometry";super(s,a,l,t,e,r),this.type=l}static fromJSON(t){return new Yi(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as Wb,Plane as $b,Shape as Td,Vector2 as Dr,Vector3 as Jb,MathUtils as bl,LineCurve as vl,QuadraticBezierCurve as Nd,CubicBezierCurve as ks}from"three";import{CubicBezierCurve as js,EllipseCurve as Gb,LineCurve as Us,LineCurve3 as zb,MathUtils as Rb,QuadraticBezierCurve as ul,SplineCurve as Fb,Vector2 as er,Vector3 as md}from"three";var Xi=1e-12,ri=class{constructor(t){this.position=new er;this.startPosition=new er;this.uuid=Rb.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 ri(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},oi=class extends ri{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new oi(this.parent).copy(this)}},tr=class extends ri{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new oi(this),new oi(this))}static create(e,r){let o=new tr(e,new er(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,i=this.controls.length;o<i;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=r?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new tr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}},ml=n=>n,Qi=new er,fl=new er,Vb=new er,jb=new er,Ub=new er,kb=new er,fd=new md,yd=new md;function gd(n){let t=new er;t.addVectors(n.v0,Qi.subVectors(n.v1,n.v0).multiplyScalar(2/3));let e=new er;return e.addVectors(n.v2,fl.subVectors(n.v1,n.v2).multiplyScalar(2/3)),new js(n.v0,t,e,n.v2)}function Zi(n,t,e=Number.EPSILON){return Math.abs(n-t)<e}function Hb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function qb(n,t,e=Number.EPSILON){return n.distanceTo(t)<e}function yl(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 xd(n,t,e,r,o){let i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2)),s=(n.y+t.y)/2,a=(n.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(n.y-t.y)/i,c=Math.sqrt(Math.pow(e,2)-Math.pow(i/2,2))*(t.x-n.x)/i;return r.set(a+l,s+c),o.set(a-l,s-c),[r,o]}function bd(n,t,e){let r=n.distanceTo(e),o=t.distanceTo(e);return r<o?t:n}function vd(n,t,e,r,o,i){let s=t.x-n.x,a=t.y-n.y,l=e.x-n.x,c=e.y-n.y,h=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),p;return yl(t,n,e)>Math.PI&&(h*=-1),Zi(c,a)?p=(a+c)*(r/h-.5)*8/3/(s-l):p=(s+l)*(r/h-.5)*8/3/(c-a),o.set(t.x-p*a,t.y+p*s),i.set(e.x+p*c,e.y-p*l),[o,i]}function gl(n,t){return n.position.equals(n.controls[1].position)&&t.position.equals(t.controls[0].position)}function Sd(n,t,e,r,o=.5){let i=Qi.subVectors(t,n).multiplyScalar(o).add(n),s=fl.subVectors(e,t).multiplyScalar(o).add(t),a=Vb.subVectors(r,e).multiplyScalar(o).add(e),l=i,c=jb.subVectors(s,i).multiplyScalar(o).add(i),h=Ub.subVectors(a,s).multiplyScalar(o).add(s),p=a,d=kb.subVectors(h,c).multiplyScalar(o).add(c);return[n.x,n.y,l.x,l.y,c.x,c.y,d.x,d.y,h.x,h.y,p.x,p.y,r.x,r.y]}function wd(n,t,e=12,r=!0){let o=yd.set(0,0,0),i,s=0,a=[];for(let l=0;l<t.length;l++){let c=ml(t[l]),h=Qi,p=Zr(c,e);a.push(p);for(let d=0;d<=p;d++)if(c instanceof js||c instanceof ul||c instanceof Us){if(c.getPoint(d/p,h),o.set(h.x,h.y,0),i!==void 0&&qb(i,o))continue;i===void 0&&(i=fd),i.copy(o),n.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),n}function Ld(n,t,e,r=12,o=!0){let i=yd.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=ml(t[l]),p=Qi,d=Zr(h,r);a.push(d);for(let u=0;u<=d;u++)if(h instanceof js||h instanceof ul||h instanceof Us){if(h.getPoint(u/d,p),i.set(p.x,p.y,0),c!=null&&c.equals(i))continue;c===void 0?c=fd:(n.setXYZ(s,c.x,c.y,c.z),s++,n.setXYZ(s,i.x,i.y,i.z),s++),c.copy(i)}}return o&&s>1&&!(n.getX(s-1)===n.getX(0)&&n.getY(s-1)===n.getY(0)&&n.getZ(s-1)===n.getZ(0))&&(n.setXYZ(s,n.getX(0),n.getY(0),n.getZ(0)),s++),a}function xl(n,t=12,e=!1){let r=[];for(let o=0,i=n.length;o<i;o++){let s=n[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Zr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Zr(s.curveAfter,t)),r.push(a)}return n.length>0&&e&&n[0].roundedCurveCorner!==void 0&&(r[n.length-1]+=Zr(n[0].roundedCurveCorner,t)*.5),r}function Zr(n,t=12){return n&&n instanceof Gb?t*2:n&&(n instanceof Us||n instanceof zb)?1:n&&n instanceof Fb?t*n.points.length:t}function Cd(n,t,e=12,r=!0){let o,i=0;for(let s=0;s<t.length;s++){let a=ml(t[s]),l=Zr(a,e),c=Qi;for(let h=0;h<=l;h++)if(a instanceof js||a instanceof ul||a instanceof Us){if(a.getPoint(h/l,c),o!==void 0&&Hb(o,c,Xi))continue;o===void 0&&(o=fl),o.copy(c),n.push(c.x,c.y),i++}}return Zi(n[0],n[n.length-2],Xi)&&Zi(n[1],n[n.length-1],Xi)&&(n.pop(),n.pop()),r&&i>1&&!(Zi(n[i-1],n[1],Xi)&&Zi(n[i-2],n[0],Xi))&&(n.push(n[0],n[1]),i++),n}var Sl=new Dr,Kb=new Dr,Yb=new Dr,Xb=new Dr,Zb=new Dr,Qb=new Dr,Oe=class extends Td{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new Wb;this.plane=new $b(new Jb(0,0,-1));this.subdivision=0;this.controlSnapDistance=4;this.pointIDs=0;this.isMesh2D=!1;this._roundness=0;this.isClosed=!1;this.useCubicForRoundedCorners=!0;this.uuid=bl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let i=new Oe;return i.isClosed=e.isClosed,i.points=e.points.map(s=>tr.create(s.id,s.data)),typeof e.roundness=="number"&&(i.roundness=e.roundness),i.shapeHoles=e.shapeHoles.map(s=>Oe.createFromState(s)),r!==void 0&&o!==void 0&&i.applySize(r,o),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){return this.points.findIndex(r=>r.uuid===e)}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let i=this.shapeHoles[r],s=e-this.points.length;if(s<=i.points.length-1)return i.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let r=this.points.indexOf(e);if(r>=0)return r;if(r=this.points.length,this.shapeHoles.length>0)for(let o=0,i=this.shapeHoles.length;o<i;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return r+a;r+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(r=>r.points));return[...this.points,...e]}applySize(e,r){e===0&&(e=.001),r===0&&(r=.001),this._width=e,this._height=r}applyScale(e,r){let o=Sl.set(e,r);for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let i=0,s=this.shapeHoles.length;i<s;i++)this.shapeHoles[i].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=bl.generateUUID()){let i;e instanceof Dr?i=e:i=new Dr(e,r);let s=new tr(o,i);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,r){this.points.splice(r,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let r=0,o=this.points.length;r<o;r++){let i=this.points[r];if(i.uuid===e)return i}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let i=o?this.roundedCurveDivisions:this.curveDivisions;return wd(e,o?this.roundedCurves:this.curves,r,this.autoClose),i.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=xl(this.points,e,!1),this.roundedCurveDivisions=xl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Ld(e,this.curves,r,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,r=12){return this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r),Cd(e,this.roundedCurves,r,this.autoClose)}getCurveIndexFromVertexId(e,r=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Zr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=i.reduce((l,c)=>l+c,0));for(let l=0,c=i.length;l<c;l++){let h=i[l];if(a<o+h)return[l,(a-o+1)/h];o+=h}return[0,1]}getCurveT(e,r,o){let i=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(gl(i,s)){let p=i.position.distanceTo(s.position);return i.position.distanceTo(Sl.set(o.x,o.y))/p}let c=0;for(let p=0;p<e;p++)c+=a[p];return(r-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,r){gl(r,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(r.controls[1].position.x,r.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,r.curveAfter=o;let i=o.clone();e.roundedCurveBefore=i,r.roundedCurveAfter=i,e.roundedCurveCorner=void 0,this.roundedCurves.push(i)}_update(e=!0){var o;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let i=0,s=this.points.length;i<s;i++){let a=this.points[i];if(i===0)this.moveTo(a.position.x,a.position.y);else{let l=this.points[i-1];this._applyCurveForPoint(a,l)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let i=this.points[0],s=this.points[this.points.length-1];this._applyCurveForPoint(i,s)}if(this.points.length>2){let i=0;for(let s=0,a=this.points.length;s<a;s++){let l=this.points[s],c=l.roundness;if(!l.controlsMoved()&&c>0){let h=l.curveBefore,p=l.curveAfter;if(h===void 0||p===void 0)continue;let d=l.roundedCurveBefore,u=l.roundedCurveAfter,f=h.getLength(),g=p.getLength(),w=Math.min(c,f*.499),y=Math.min(c,g*.499),b=Math.min(w,y),A=1-b/f,N=b/g,v=h.getPointAt(A,Sl),k=p.getPointAt(N,Kb);this._subSplitCurve(h,d,A,v,void 0),this._subSplitCurve(p,u,N,void 0,k);let L;if(this.useCubicForRoundedCorners){let m=yl(v,l.position,k)/2,I=Math.tan(m)*v.distanceTo(l.position),[x,C]=xd(v,k,I,Yb,Xb),T=bd(x,C,l.position),[O,$]=vd(T,v,k,I,Zb,Qb);L=new ks(v.clone(),O.clone(),$.clone(),k.clone())}else L=new Nd(v.clone(),l.position.clone(),k.clone());l.roundedCurveCorner=L,this.roundedCurves.splice(s+i,0,L),i++}}}e&&((o=this.eventDispatcher)==null||o.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,o,i,s){if(e instanceof vl)i!==void 0&&r.v2.copy(i),s!==void 0&&r.v1.copy(s);else{let a=e,l=r,c=a.getUtoTmapping(o,0),h=Sd(a.v0,a.v1,a.v2,a.v3,c);return i!==void 0&&(l.v0.set(h[0],h[1]),l.v1.set(h[2],h[3]),l.v2.set(h[4],h[5]),l.v3.set(h[6],h[7])),s!==void 0&&(l.v0.set(h[6],h[7]),l.v1.set(h[8],h[9]),l.v2.set(h[10],h[11]),l.v3.set(h[12],h[13])),l}return r}clone(){let e=new Oe(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){var o;this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let i=0;i<r;i++){let s=i*7,a=e.points[s+0],l=e.points[s+1],c=e.points[s+2],h=e.points[s+3],p=e.points[s+4],d=e.points[s+5],u=e.points[s+6],f=new tr(bl.generateUUID(),new Dr(a,l));f.controls[0].position.set(c,h),f.controls[1].position.set(p,d),f.roundness=u,this.points.push(f)}return this.shapeHoles=(o=e.shapeHoles)!=null&&o.length?e.shapeHoles.map(i=>{let s=new Oe;return s.fromJSON(i),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(i,s)=>{s instanceof ks&&s.v3.equals(i.position)&&i.controls[0].position.copy(s.v2)},o=i=>{let s=[],a,l;for(a=0,l=i.length;a<l;a++)i[a]instanceof Nd&&(i[a]=gd(i[a]));for(a=0,l=i.length;a<l;a++){let p=i[a],d=a>0?i[a-1]:null,u;p instanceof ks?(u=this.createPoint(p.v0),u.controls[1].position.copy(p.v1)):p instanceof vl&&(u=this.createPoint(p.v1)),u!==void 0&&(d!==null&&r(u,d),s.push(u))}let c=i[i.length-1],h=!1;return c instanceof ks?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof vl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof Td&&(this.shapeHoles=e.holes.map(i=>{let s=new Oe;return s.fromShape(i),s})),this.update(),this}};var Ll=Math.PI*2;function wl({x:n,y:t},e,r,o,i){return{x:n*e+o,y:t*r+i}}function ev(n,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(n),o=Math.sin(n),i=Math.cos(n+t),s=Math.sin(n+t);return[{x:r-o*e,y:o+r*e},{x:i+s*e,y:s-i*e},{x:i,y:s}]}function Md(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 tv(n,t,e,r,o,i,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(i,2),d=Math.pow(s,2),u=Math.pow(a,2),f=h*p-h*u-p*d;f<0&&(f=0),f/=h*u+p*d,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/i*a,w=f*-i/o*s,y=g+(n+e)/2,b=w+(t+r)/2,A=(s-g)/o,N=(a-w)/i,v=(-s-g)/o,k=(-a-w)/i,L=Md(1,0,A,N),m=Md(A,N,v,k);return!c&&m>0&&(m-=Ll),c&&m<0&&(m+=Ll),{centerx:y,centery:b,ang1:L,ang2:m}}function Od({px:n,py:t,cx:e,cy:r,rx:o,ry:i,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||i===0)return[];let c=(n-e)/2,h=(t-r)/2;if(c===0&&h===0)return[];o=Math.abs(o),i=Math.abs(i);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(h,2)/Math.pow(i,2);p>1&&(o*=Math.sqrt(p),i*=Math.sqrt(p));let d=tv(n,t,e,r,o,i,c,h,s,a),{ang1:u,ang2:f}=d,{centerx:g,centery:w}=d,y=Math.abs(f)/(Ll/4);Math.abs(1-y)<1e-7&&(y=1);let b=Math.max(Math.ceil(y),1);f/=b;for(let A=0;A<b;A++)l.push(ev(u,f)),u+=f;return l.map(A=>{let{x:N,y:v}=wl(A[0],o,i,g,w),{x:k,y:L}=wl(A[1],o,i,g,w),{x:m,y:I}=wl(A[2],o,i,g,w);return{x1:N,y1:v,x2:k,y2:L,x:m,y:I}})}import{BufferAttribute as qs,BufferGeometry as sv}from"three";var qe;(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"})(qe||(qe={}));var ot;(function(n){n[n.POLYGONS=0]="POLYGONS",n[n.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",n[n.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ot||(ot={}));function ue(n,t){if(!n)throw t||"Assertion Failed!"}var ae=function(){function n(){}return n.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},n.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},n.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},n.edgeGoesLeft=function(t){return n.vertLeq(t.Dst,t.Org)},n.edgeGoesRight=function(t){return n.vertLeq(t.Org,t.Dst)},n.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},n.edgeEval=function(t,e,r){ue(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){ue(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){ue(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){ue(n.transLeq(t,e)&&n.transLeq(e,r));var o=e.t-t.t,i=r.t-e.t;return o+i>0?(e.s-r.s)*o+(e.s-t.s)*i:0},n.vertCCW=function(t,e,r){return t.s*(e.t-r.t)+e.s*(r.t-t.t)+r.s*(t.t-e.t)>=0},n.interpolate=function(t,e,r,o){return t=t<0?0:t,r=r<0?0:r,t<=r?r===0?(e+o)/2:e+(o-e)*(t/(t+r)):o+(e-o)*(r/(t+r))},n.intersect=function(t,e,r,o,i){var s,a,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)?(s=n.edgeEval(t,r,e),a=n.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,e.s)):(s=n.edgeSign(t,r,e),a=-n.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),i.s=n.interpolate(s,r.s,a,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)?(s=n.transEval(t,r,e),a=n.transEval(r,e,o),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,e.t)):(s=n.transSign(t,r,e),a=-n.transSign(t,o,e),s+a<0&&(s=-s,a=-a),i.t=n.interpolate(s,r.t,a,o.t)):i.t=(r.t+e.t)/2},n}(),en=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}(),Hs=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}(),ii=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}(),Pd=function(){function n(){var t=new ii,e=new en,r=new Hs(0),o=new Hs(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 Hs(0),r=new Hs(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;ue(o,"Vertex can't be null!");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},n.prototype.makeFace_=function(t,e,r){var o=t;ue(o,"Face can't be null");var i=r.prev;o.prev=i,i.next=o,o.next=r,r.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=r.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},n.prototype.killEdge_=function(t){t.Sym.side<t.side&&(t=t.Sym);var e=t.next,r=t.Sym.next;e.Sym.next=r,r.Sym.next=e},n.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var i=t.prev,s=t.next;s.prev=i,i.next=s},n.prototype.makeEdge=function(){var t=new ii,e=new ii,r=new en,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 ii;this.makeVertex_(i,e,t.Org),t.Org.anEdge=t}if(!r){var s=new en;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},n.prototype.delete=function(t){var e=t.Sym,r=!1;if(t.Lface!==t.Rface&&(r=!0,this.killFace_(t.Lface,t.Rface)),t.Onext===t)this.killVertex_(t.Org,null);else if(t.Rface.anEdge=t.Oprev,t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev),!r){var o=new en;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 ii;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},n.prototype.splitEdge=function(t){var e=this.addEdgeVertex(t),r=e.Sym;return this.splice_(t.Sym,t.Sym.Oprev),this.splice_(t.Sym,r),t.Dst=r.Org,r.Dst.anEdge=r.Sym,r.Rface=t.Rface,r.winding=t.winding,r.Sym.winding=t.Sym.winding,r.idx=t.idx,r.Sym.idx=t.Sym.idx,r},n.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),i=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(i,e),o.Org=t.Dst,i.Org=e.Org,o.Lface=i.Lface=t.Lface,t.Lface.anEdge=i,!r){var s=new en;this.makeFace_(s,o,t.Lface)}return o},n.prototype.zapFace=function(t){var e=t.anEdge,r,o,i,s,a;o=e.Lnext;do r=o,o=r.Lnext,r.Lface=null,r.Rface===null&&(r.Onext===r?this.killVertex_(r.Org,null):(r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev)),i=r.Sym,i.Onext===i?this.killVertex_(i.Org,null):(i.Org.anEdge=i.Onext,this.splice_(i,i.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},n.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},n.prototype.mergeConvexFaces=function(t){var e,r,o,i,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(r=e.anEdge,s=r.Org;o=r.Lnext,i=r.Sym,i&&i.Lface&&i.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(i.Lface),a+l-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,i.Lnext.Lnext.Org)&&ae.vertCCW(i.Lprev.Org,i.Org,r.Lnext.Lnext.Org)&&(o=i.Lnext,this.delete(i),r=null,i=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},n.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,i,s,a,l,c;for(i=t,i=t;(o=i.next)!==t;i=o){ue(o.prev===i),l=o.anEdge;do ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l),ue(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(ue(o.prev===i&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){ue(s.prev===a),l=s.anEdge;do ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l),ue(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(ue(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)ue(l.Sym.next===c.Sym),ue(l.Sym!==l),ue(l.Sym.Sym===l),ue(l.Org!==null),ue(l.Dst!==null),ue(l.Lnext.Onext.Sym===l),ue(l.Onext.Sym.Lnext===l);ue(l.Sym.next===c.Sym&&l.Sym===this.eHeadSym&&l.Sym.Sym===l&&l.Org===null&&l.Dst===null&&l.Lface===null&&l.Rface===null)},n}(),Id=function(){function n(){this.handle=null}return n}(),Ad=function(){function n(){this.key=null,this.node=0}return n}(),rv=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 Id,this.handles[r]=new Ad;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return n.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t<<1,s<this.size&&this.leq(r[e[s+1].handle].key,r[e[s].handle].key)&&++s,ue(s<=this.max),i=e[s].handle,s>this.size||this.leq(r[o].key,r[i].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,i,s;for(o=e[t].handle;;){if(s=t>>1,i=e[s].handle,s===0||this.leq(r[i].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=i,r[i].node=t,t=s}},n.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},n.prototype.min=function(){return this.handles[this.nodes[1].handle].key},n.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,i;for(i=this.nodes.length,this.nodes.length=this.max+1,o=i;o<this.nodes.length;o++)this.nodes[o]=new Id;for(i=this.handles.length,this.handles.length=this.max+1,o=i;o<this.handles.length;o++)this.handles[o]=new Ad}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;ue(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}(),Cl=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}(),Dd=function(){function n(){this.key=null,this.next=null,this.prev=null}return n}(),ov=function(){function n(t,e){this.frame=t,this.leq=e,this.head=new Dd,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 Dd;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}(),iv=function(){function n(){}return n.regionBelow=function(t){return t.nodeUp.prev.key},n.regionAbove=function(t){return t.nodeUp.next.key},n.debugEvent=function(t){},n.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.edgeLeq=function(t,e,r){var o=t.event,i=e.eUp,s=r.eUp;if(i.Dst===o)return s.Dst===o?ae.vertLeq(i.Org,s.Org)?ae.edgeSign(s.Dst,i.Org,s.Org)<=0:ae.edgeSign(i.Dst,s.Org,i.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(i.Dst,o,i.Org)>=0;var a=ae.edgeEval(i.Dst,o,i.Org),l=ae.edgeEval(s.Dst,o,s.Org);return a>=l},n.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},n.fixUpperEdge=function(t,e,r){ue(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 Cl;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 qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},n.computeWinding=function(t,e){e.windingNumber=n.regionAbove(e).windingNumber+e.eUp.winding,e.inside=n.isWindingInside(t,e.windingNumber)},n.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,n.deleteRegion(t,e)},n.finishLeftRegions=function(t,e,r){for(var o,i=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,i=n.regionBelow(s),o=i.eUp,o.Org!=a.Org){if(!i.fixUpperEdge){n.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),n.fixUpperEdge(t,i,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),n.finishRegion(t,s),a=i.eUp,s=i}return a},n.addRightEdges=function(t,e,r,o,i,s){var a,l,c,h,p=!0;c=r;do ue(ae.vertLeq(c.Org,c.Dst)),n.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(i===null&&(i=n.regionBelow(e).eUp.Rprev),l=e,h=i;a=n.regionBelow(l),c=a.eUp.Sym,c.Org===h.Org;)c.Onext!==h&&(t.mesh.splice(c.Oprev,c),t.mesh.splice(h.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=n.isWindingInside(t,a.windingNumber),l.dirty=!0,!p&&n.checkForRightSplice(t,l)&&(n.addWinding(c,h),n.deleteRegion(t,l),t.mesh.delete(h)),p=!1,l=a,h=c;l.dirty=!0,ue(l.windingNumber-c.winding===a.windingNumber),s&&n.walkDirtyRegions(t,l)},n.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},n.vertexWeights=function(t,e,r){var o=ae.vertL1dist(e,t),i=ae.vertL1dist(r,t),s=.5*i/(o+i),a=.5*o/(o+i);t.coords[0]+=s*e.coords[0]+a*r.coords[0],t.coords[1]+=s*e.coords[1]+a*r.coords[1],t.coords[2]+=s*e.coords[2]+a*r.coords[2]},n.getIntersectData=function(t,e,r,o,i,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,n.vertexWeights(e,r,o),n.vertexWeights(e,i,s)},n.checkForRightSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp;if(ae.vertLeq(o.Org,i.Org)){if(ae.edgeSign(i.Dst,o.Org,i.Org)>0)return!1;ae.vertEq(o.Org,i.Org)?o.Org!==i.Org&&(t.pq.delete(o.Org.pqHandle),n.spliceMergeVertices(t,i.Oprev,o)):(t.mesh.splitEdge(i.Sym),t.mesh.splice(o,i.Oprev),e.dirty=r.dirty=!0)}else{if(ae.edgeSign(o.Dst,i.Org,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(i.Oprev,o)}return!0},n.checkForLeftSplice=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s;if(ue(!ae.vertEq(o.Dst,i.Dst)),ae.vertLeq(o.Dst,i.Dst)){if(ae.edgeSign(o.Dst,i.Dst,o.Org)<0)return!1;n.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(i.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(i.Dst,o.Dst,i.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(i),t.mesh.splice(o.Lnext,i.Sym),s.Rface.inside=e.inside}return!0},n.checkForIntersect=function(t,e){var r=n.regionBelow(e),o=e.eUp,i=r.eUp,s=o.Org,a=i.Org,l=o.Dst,c=i.Dst,h,p,d=new ii,u,f;if(ue(!ae.vertEq(c,l)),ue(ae.edgeSign(l,t.event,s)<=0),ue(ae.edgeSign(c,t.event,a)>=0),ue(s!==t.event&&a!==t.event),ue(!e.fixUpperEdge&&!r.fixUpperEdge),s===a||(h=Math.min(s.t,l.t),p=Math.max(a.t,c.t),h>p))return!1;if(ae.vertLeq(s,a)){if(ae.edgeSign(c,s,a)>0)return!1}else if(ae.edgeSign(l,a,s)<0)return!1;return n.debugEvent(t),ae.intersect(l,s,c,a,d),ue(Math.min(s.t,l.t)<=d.t),ue(d.t<=Math.max(a.t,c.t)),ue(Math.min(c.s,l.s)<=d.s),ue(d.s<=Math.max(a.s,s.s)),ae.vertLeq(d,t.event)&&(d.s=t.event.s,d.t=t.event.t),u=ae.vertLeq(s,a)?s:a,ae.vertLeq(u,d)&&(d.s=u.s,d.t=u.t),ae.vertEq(d,s)||ae.vertEq(d,a)?(n.checkForRightSplice(t,e),!1):!ae.vertEq(l,t.event)&&ae.edgeSign(l,t.event,d)>=0||!ae.vertEq(c,t.event)&&ae.edgeSign(c,t.event,d)<=0?c===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),f=n.regionBelow(e).eUp.Rprev,r.eUp=i.Oprev,i=n.finishLeftRegions(t,r,null),n.addRightEdges(t,e,i.Onext,o.Rprev,f,!0),!0):(ae.edgeSign(l,t.event,d)>=0&&(n.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),o.Org.s=t.event.s,o.Org.t=t.event.t),ae.edgeSign(c,t.event,d)<=0&&(e.dirty=r.dirty=!0,t.mesh.splitEdge(i.Sym),i.Org.s=t.event.s,i.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(i.Sym),t.mesh.splice(i.Oprev,o),o.Org.s=d.s,o.Org.t=d.t,o.Org.pqHandle=t.pq.insert(o.Org),n.getIntersectData(t,o.Org,s,l,a,c),n.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},n.walkDirtyRegions=function(t,e){for(var r=n.regionBelow(e),o,i;;){for(;r.dirty;)e=r,r=n.regionBelow(r);if(!e.dirty&&(r=e,e=n.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,i=r.eUp,o.Dst!==i.Dst&&n.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(n.deleteRegion(t,r),t.mesh.delete(i),r=n.regionBelow(e),i=r.eUp):e.fixUpperEdge&&(n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r),o=e.eUp)),o.Org!==i.Org)if(o.Dst!==i.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||i.Dst===t.event)){if(n.checkForIntersect(t,e))return}else n.checkForRightSplice(t,e);o.Org===i.Org&&o.Dst===i.Dst&&(n.addWinding(i,o),n.deleteRegion(t,e),t.mesh.delete(o),e=n.regionAbove(r))}},n.connectRightVertex=function(t,e,r){var o,i=r.Onext,s=n.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&n.checkForIntersect(t,e),ae.vertEq(a.Org,t.event)&&(t.mesh.splice(i.Oprev,a),e=n.topLeftRegion(t,e),i=n.regionBelow(e).eUp,n.finishLeftRegions(t,n.regionBelow(e),s),c=!0),ae.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=n.finishLeftRegions(t,s,null),c=!0),c){n.addRightEdges(t,e,r.Onext,i,i,!0);return}ae.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),n.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,n.walkDirtyRegions(t,e)},n.connectLeftDegenerate=function(t,e,r){var o,i,s,a,l;if(o=e.eUp,ae.vertEq(o.Org,r)){ue(!1),n.spliceMergeVertices(t,o,r.anEdge);return}if(!ae.vertEq(o.Dst,r)){t.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(t.mesh.delete(o.Onext),e.fixUpperEdge=!1),t.mesh.splice(r.anEdge,o),n.sweepEvent(t,r);return}ue(!1),e=n.topRightRegion(e),l=n.regionBelow(e),s=l.eUp.Sym,i=a=s.Onext,l.fixUpperEdge&&(ue(i!==s),n.deleteRegion(t,l),t.mesh.delete(s),s=i.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(i)||(i=null),n.addRightEdges(t,e,s.Onext,a,i,!0)},n.connectLeftVertex=function(t,e){var r,o,i,s,a,l,c=new Cl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=n.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){n.connectLeftDegenerate(t,r,e);return}if(i=ae.vertLeq(a.Dst,s.Dst)?r:o,r.inside||i.fixUpperEdge){if(i===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var h=t.mesh.connect(a.Dnext,e.anEdge);l=h.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);ue(o!==null);var i=n.regionBelow(o),s=i.eUp,a=n.finishLeftRegions(t,i,null);a.Onext===s?n.connectRightVertex(t,o,a):n.addRightEdges(t,o,a.Onext,s,s,!0)},n.addSentinel=function(t,e,r,o){var i=new Cl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,i.eUp=s,i.windingNumber=0,i.inside=!1,i.fixUpperEdge=!1,i.sentinel=!0,i.dirty=!1,i.nodeUp=t.dict.insert(i)},n.initEdgeDict=function(t){t.dict=new ov(t,n.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,i=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;n.addSentinel(t,o,i,s),n.addSentinel(t,o,i,a)},n.doneEdgeDict=function(t){for(var e,r=0;(e=t.dict.min().key)!==null;)e.sentinel||(ue(e.fixUpperEdge),ue(++r===1)),ue(e.windingNumber===0),n.deleteRegion(t,e)},n.removeDegenerateEdges=function(t){var e,r,o,i=t.mesh.eHead;for(e=i.next;e!==i;e=r)r=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(n.spliceMergeVertices(t,o,e),t.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===r||o===r.Sym)&&(r=r.next),t.mesh.delete(o)),(e===r||e===r.Sym)&&(r=r.next),t.mesh.delete(e))},n.initPriorityQ=function(t){var e,r,o,i=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)i++;for(i+=8,e=t.pq=new rv(i,ae.vertLeq),o=t.mesh.vHead,r=o.next;r!==o;r=r.next)r.pqHandle=e.insert(r);return r!==o?!1:(e.init(),!0)},n.donePriorityQ=function(t){t.pq=null},n.removeDegenerateFaces=function(t,e){var r,o,i;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,i=r.anEdge,ue(i.Lnext!==i),i.Lnext.Lnext===i&&(n.addWinding(i.Onext,i),t.mesh.delete(i));return!0},n.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(n.removeDegenerateEdges(t),!n.initPriorityQ(t))return!1;for(n.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.vertEq(o,r));)o=t.pq.extractMin(),n.spliceMergeVertices(t,r.anEdge,o.anEdge);n.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,n.debugEvent(t),n.doneEdgeDict(t),n.donePriorityQ(t),n.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},n}(),nv=function(){function n(){this.mesh=new Pd,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=qe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return n.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},n.prototype.normalize_=function(t){var e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),t[0]/=e,t[1]/=e,t[2]/=e},n.prototype.longAxis_=function(t){var e=0;return Math.abs(t[1])>Math.abs(t[0])&&(e=1),Math.abs(t[2])>Math.abs(t[e])&&(e=2),e},n.prototype.computeNormal_=function(t){var e,r,o,i,s,a,l=[0,0,0],c=[0,0,0],h=[0,0,0],p=[0,0,0],d=[0,0,0],u=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var w=0;w<3;++w)i=e.coords[w],c[w]=i,f[w]=e,l[w]=i,u[w]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)i=e.coords[y],i<c[y]&&(c[y]=i,f[y]=e),i>l[y]&&(l[y]=i,u[y]=e);var b=0;if(l[1]-c[1]>l[0]-c[0]&&(b=1),l[2]-c[2]>l[b]-c[b]&&(b=2),c[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[b],o=u[b],h[0]=r.coords[0]-o.coords[0],h[1]=r.coords[1]-o.coords[1],h[2]=r.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],d[0]=h[1]*p[2]-h[2]*p[1],d[1]=h[2]*p[0]-h[0]*p[2],d[2]=h[0]*p[1]-h[1]*p[0],s=d[0]*d[0]+d[1]*d[1]+d[2]*d[2],s>a&&(a=s,t[0]=d[0],t[1]=d[1],t[2]=d[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(h)]=1)},n.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,i=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do i+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(i<0){for(e=r.next;e!==r;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},n.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,i=!1;e[0]=this.normal[0],e[1]=this.normal[1],e[2]=this.normal[2],!e[0]&&!e[1]&&!e[2]&&(this.computeNormal_(e),i=!0),r=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);r[s]=0,r[(s+1)%3]=1,r[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=t.next;a!==t;a=a.next)a.s=this.dot_(a.coords,r),a.t=this.dot_(a.coords,o);i&&this.checkOrientation_();for(var l=!0,c=t.next;c!==t;c=c.next)l?(this.bmin[0]=this.bmax[0]=c.s,this.bmin[1]=this.bmax[1]=c.t,l=!1):(c.s<this.bmin[0]&&(this.bmin[0]=c.s),c.s>this.bmax[0]&&(this.bmax[0]=c.s),c.t<this.bmin[1]&&(this.bmin[1]=c.t),c.t>this.bmax[1]&&(this.bmax[1]=c.t))},n.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},n.prototype.tessellateMonoRegion_=function(t,e){var r,o;if(r=e.anEdge,!(r.Lnext!==r&&r.Lnext.Lnext!==r))throw"Mono region invalid";for(;ae.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ae.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var i=void 0;r.Lnext!==o;)if(ae.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)i=t.connect(o.Lnext,o),o=i.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)i=t.connect(r,r.Lprev),r=i.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)i=t.connect(o.Lnext,o),o=i.Sym;return!0},n.prototype.tessellateInterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)if(e=r.next,r.inside&&!this.tessellateMonoRegion_(t,r))return!1;return!0},n.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},n.prototype.setWindingNumber_=function(t,e,r){for(var o,i=t.eHead.next;i!==t.eHead;i=o)o=i.next,i.Rface.inside!==i.Lface.inside?i.winding=i.Lface.inside?e:-e:r?t.delete(i):i.winding=0},n.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},n.prototype.outputPolymesh_=function(t,e,r,o){var i,s=0,a=0,l;r>3&&t.mergeConvexFaces(r);for(var c=t.vHead.next;c!==t.vHead;c=c.next)c.n=-1;for(var h=t.fHead.next;h!==t.fHead;h=h.next)if(h.n=-1,!!h.inside){i=h.anEdge,l=0;do{var c=i.Org;c.n===-1&&(c.n=a,a++),l++,i=i.Lnext}while(i!==h.anEdge);if(l>r)throw"Face vertex greater that support polygon";h.n=s,++s}this.elementCount=s,e===ot.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var d=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){i=h.anEdge,l=0;do{var c=i.Org;this.elements[d++]=c.n,l++,i=i.Lnext}while(i!==h.anEdge);for(var u=l;u<r;++u)this.elements[d++]=-1;if(e===ot.CONNECTED_POLYGONS){i=h.anEdge;do this.elements[d++]=this.getNeighbourFace_(i),i=i.Lnext;while(i!==h.anEdge);for(var f=l;f<r;++f)this.elements[d++]=-1}}},n.prototype.outputContours_=function(t,e){var r,o,i=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){o=r=a.anEdge;do this.vertexCount++,r=r.Lnext;while(r!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,h=0;i=0;for(var a=t.fHead.next;a!==t.fHead;a=a.next)if(!!a.inside){s=0,o=r=a.anEdge;do this.vertices[l++]=r.Org.coords[0],this.vertices[l++]=r.Org.coords[1],e>2&&(this.vertices[l++]=r.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(r):r.Org.idx,s++,r=r.Lnext;while(r!==o);this.elements[h++]=i,this.elements[h++]=s,i+=s}},n.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Pd),t<2&&(t=2),t>3&&(t=3);for(var r=null,o=0;o<e.length;o+=t)r===null?(r=this.mesh.makeEdge(),this.mesh.splice(r,r.Sym)):(this.mesh.splitEdge(r),r=r.Lnext),r.Org.coords[0]=e[o+0],r.Org.coords[1]=e[o+1],t>2?r.Org.coords[2]=e[o+2]:r.Org.coords[2]=0,r.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(r),r.winding=1,r.Sym.winding=-1},n.prototype.tesselate=function(t,e,r,o,i,s){if(t===void 0&&(t=qe.ODD),e===void 0&&(e=ot.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,i&&(this.normal[0]=i[0],this.normal[1]=i[1],this.normal[2]=i[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),iv.computeInterior(this,s);var a=this.mesh;return e===ot.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===ot.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},n}();function bo(n){var t=n.windingRule,e=t===void 0?qe.ODD:t,r=n.elementType,o=r===void 0?ot.POLYGONS:r,i=n.polySize,s=i===void 0?3:i,a=n.vertexSize,l=a===void 0?2:a,c=n.normal,h=c===void 0?[0,0,1]:c,p=n.contours,d=p===void 0?[]:p,u=n.strict,f=u===void 0?!0:u,g=n.debug,w=g===void 0?!1:g;if(!d&&f)throw new Error("Contours can't be empty");if(!!d){var y=new nv;n.edgeCreateCallback&&(y.edgeCreateCallback=n.edgeCreateCallback),n.vertexIdCallback&&(y.vertexIdCallback=n.vertexIdCallback);for(var b=0;b<d.length;b++)y.addContour(l||2,d[b]);return y.tesselate(e,o,s,l,h,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:w?y.mesh:void 0}}}var BD=qe.ODD,ED=qe.NONZERO,_D=qe.POSITIVE,GD=qe.NEGATIVE,zD=qe.ABS_GEQ_TWO,RD=ot.POLYGONS,FD=ot.CONNECTED_POLYGONS,VD=ot.BOUNDARY_CONTOURS;var ni=class extends sv{constructor(e,r=12,o={}){var f,g,w;super();this.type="ShapeGeometry";this.windingRule=qe.ODD;this.elementType=ot.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:qe.ODD,elementType:ot.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let i=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(y=>y.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let y=0,b=i.length/2;y<b;y++){let A=y*2,N=i[A+0],v=i[A+1];if(h!==void 0&&N!==h&&(l=!1),p!==void 0&&v!==p&&(c=!1),h=N,p=v,!l&&!c)break}!l&&!c&&(a=bo({contours:[i,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let d=(f=a==null?void 0:a.vertexCount)!=null?f:1,u=(g=a==null?void 0:a.elementCount)!=null?g:1;if(this._positionAttribute=new qs(new Float32Array(d*3),3),this._normalAttribute=new qs(new Float32Array(d*3),3),this._uvAttribute=new qs(new Float32Array(d*2),2),this._indexAttribute=new qs(new Uint32Array(u*3),1),a){let y=1/0,b=-1/0,A=1/0,N=-1/0;for(let L=0,m=d;L<m;L++){let I=L*2,x=a.vertices[I+0],C=a.vertices[I+1];x<y&&(y=x),x>b&&(b=x),C<A&&(A=C),C>N&&(N=C)}let v=b-y,k=N-A;for(let L=0,m=d;L<m;L++){let I=L*2,x=a.vertices[I+0],C=a.vertices[I+1],T=(x-y)/v,O=(C-A)/k;this._positionAttribute.setXYZ(L,x,C,0),this._normalAttribute.setXYZ(L,0,0,1),this._uvAttribute.setXY(L,T,O)}for(let L=0,m=u;L<m;L++){let I=L*3,x=a.elements[I+0],C=a.elements[I+1],T=a.elements[I+2];this._indexAttribute.setX(I+0,x),this._indexAttribute.setX(I+1,C),this._indexAttribute.setX(I+2,T)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((w=a==null?void 0:a.elementCount)!=null?w:1)*3)}clone(){let e=new ni(this._shape,this._curveSegments);return e.userData=Ri(this.userData),e}};import{BufferAttribute as $s,BufferGeometry as av}from"three";var Ws=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*Ws.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*Ws.eSize,o=new ArrayBuffer(r),i=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*i,3*t);s+=3*t;let l=new Float32Array(o,s*i,3*t);s+=3*t;let c=new Float32Array(o,s*i,2*t);a.set(this.positions.slice(0,this.size*3)),l.set(this.normals.slice(0,this.size*3)),c.set(this.uvs.slice(0,this.size*2)),this.buffer=o,this.positions=a,this.normals=l,this.uvs=c,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)}},tn=Ws;tn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Tl=(n,t)=>([e,r])=>(r<e&&(r+=t),(n>=e?n:n+t)<=r),si=class extends av{constructor(e,r,o=0,i=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=i,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,r/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],i),l=this._shape.shapeHoles.map(L=>{let m=L.extractShapePointsToFlatArray([],i),I=[];for(let x=m.length-1;x>=1;x-=2){let C=m[x-1],T=m[x-0];I.push(C,T)}return I}),c=bo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=bo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let p=c.elementCount;if(h){c.elementCount+=h.elementCount;for(let L=0;L<h.elements.length;L++){let m=h.elements[L],I=L%2===0?c.vertexCount:0;c.elements.push(m+I)}for(let L=0;L<h.vertexIndices.length;L++){let m=h.vertexIndices[L],I=c.vertexCount;c.vertexIndices.push(m+I)}for(let L=0;L<h.vertices.length;L++){let m=h.vertices[L];c.vertices.push(m)}}let d=1/0,u=-1/0,f=1/0,g=-1/0;for(let L=0,m=c.vertexCount;L<m;L++){let I=L*2,x=c.vertices[I+0],C=c.vertices[I+1];x<d&&(d=x),x>u&&(u=x),C<f&&(f=C),C>g&&(g=C)}this._minX=d,this._minY=f,this._width=u-d,this._height=g-f;let w=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new tn(w);let y=[],b=[];for(let L=c.elementCount-1;L>=0;L--){let m=L>=p,I=L*2,x=c.elements[I+0],C=c.elements[I+1],T=x+C,O={start:x,count:C,normals:[],continuous:[],concave:[]},$=x,J=T-1,ie=x+1,de=this._shape.roundedCurves.length;do{let G=$-x,B=c.vertices[J*2+0],z=c.vertices[J*2+1],D=c.vertices[$*2+0],R=c.vertices[$*2+1],K=c.vertices[ie*2+0],Z=c.vertices[ie*2+1],j=D-B,V=R-z,E=Math.sqrt(j*j+V*V);j/=E,V/=E;let U=D-K,ne=R-Z,q=Math.sqrt(U*U+ne*ne);U/=q,ne/=q,O.normals[G*2+0]=-ne,O.normals[G*2+1]=U,O.concave[G]=j*ne-V*U>0;let W=c.vertexIndices[$];if(Array.isArray(W))O.continuous[G]=!1;else{let[Y,X]=this._shape.getCurveIndexFromVertexId(W-1,!0);if(X>0&&X<1)O.continuous[G]=!0;else{let Q=X===1?Y+1:Y-1;Q=(Q+de)%de;let se=X===1?0:1,oe=this._shape.roundedCurves[Y].getTangent(X),he=this._shape.roundedCurves[Q].getTangent(se);O.continuous[G]=oe.dot(he)>.95}}m&&(O.normals[G*2+0]*=-1,O.normals[G*2+1]*=-1),[J,$,ie]=[$,ie,ie+1],ie>=T&&(ie-=C)}while(ie!==x+1);let ce=[];ce.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(x*2,T*2),vertexCount:C,vertexIndices:new Array(C).fill(!0).map((G,B)=>[B,B]),elements:[0,C],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(x*2,T*2)});for(let G=1;G<=this._bevelSegments;G++){let B=G/this._bevelSegments*Math.PI/2,z=(1-Math.cos(B))*this._bevelSize,D=[],R=[],K=[],Z=[],j=0;for(let E=0;E<C;E++){let U=E*2,ne=(E-1+C)%C*2,q=c.vertices[O.start*2+U+0],W=c.vertices[O.start*2+U+1],Y=-O.normals[ne+0]*z,X=-O.normals[ne+1]*z,Q=-O.normals[U+0]*z,se=-O.normals[U+1]*z;if(O.concave[E]||!O.concave[E]&&m){let oe=Math.atan2(X,Y),he=Math.atan2(se,Q);he>oe&&(he-=Math.PI*2);let Ge=he-oe;if(O.continuous[E]||m){let ge=oe+Ge/2,$e=Math.cos(ge)*z,Te=Math.sin(ge)*z;D[2*j+0]=q+$e*(m?-1:1),D[2*j+1]=W+Te*(m?-1:1),Z[j]=E,j++}else{let ge=Math.max(1,Math.floor(i/4*Math.abs(Ge)/Math.PI));for(let $e=0;$e<=ge;$e++){let Te=oe+Ge*($e/ge),ht=Math.cos(Te)*z,Lt=Math.sin(Te)*z;D[2*j+0]=q+ht,D[2*j+1]=W+Lt,Z[j]=E,j++}}}else D[2*j+0]=q+Y,D[2*j+1]=W+X,Z[j]=E,R[E]=j,j++,D[2*j+0]=q,D[2*j+1]=W,Z[j]=E,j++,D[2*j+0]=q+Q,D[2*j+1]=W+se,Z[j]=E,K[E]=j,j++}let V=bo({windingRule:qe.POSITIVE,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:E=>{let ne=E.Org.idx,q=Z[ne],W=Z[(ne+1)%Z.length];E.idx=[q,W],E.Sym.idx=[W,q]},vertexIdCallback:E=>{let U=E.Lprev.idx;return[U?U[1]:0,E.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${G}'th loop`);if(!V.vertexCount)break;for(let E=0;E<V.vertexIndices.length;E++){let[U,ne]=V.vertexIndices[E];if(U===ne)continue;let q=ne;ne<U&&(q+=C);for(let W=U;W<q;W++){let Y=W%C,X=(W+1)%C;if(!O.continuous[Y]||!O.continuous[X]){V.vertexIndices[E]=[U,Y],V.vertexIndices.splice(E+1,0,[X,ne]),V.vertices.splice((E+1)*2,0,V.vertices[E*2],V.vertices[E*2+1]);break}}}ce.push({bevelI:G,angle:B,size:z,boundary:V,reverseMap:Z,insetPoints:D})}let ve=(G,B,z)=>{let D=0,R=G.boundary.vertexIndices.length;for(;D<R&&z(G.boundary.vertexIndices[B]);)B=(B+1)%R,D++;return D},F=y.length;for(let G=1;G<ce.length;G++){let B=ce[G-1],z=ce[G],D=B.boundary.vertexIndices.length,R=z.boundary.vertexIndices.length;if(!D||!R)break;let K=O.concave.length,Z=0,j=Tl(Z,C);for(;!B.boundary.vertexIndices.filter(j).length||!z.boundary.vertexIndices.filter(j).length;)Z++,j=Tl(Z,C);let V=B.boundary.vertexIndices.findIndex(j),E=z.boundary.vertexIndices.findIndex(j);do V=(V+1)%D;while(j(B.boundary.vertexIndices[V]));do E=(E+1)%R;while(j(z.boundary.vertexIndices[E]));Z=(Z+1)%C;let U=Z,ne=this.buildBevelVert(O,B,(V-1+D)%D),q=this.buildBevelVert(O,z,(E-1+R)%R),W=ne,Y=q,X,Q,se=!1;do{j=Tl(Z,C);let oe=ve(B,V,j),he=ve(z,E,j),Ge=se;if(se=!1,oe&&!he){for(let ge=0;ge<oe;ge++)X=this.buildBevelVert(O,B,(V+ge)%D,ge/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X;se=!0}else if(!oe&&he)for(let ge=0;ge<he;ge++)Q=this.buildBevelVert(O,z,(E+ge)%R,ge/(he-1)),y.push(Y.topN,W.topP,Q.topP),y.push(W.bottomP,Y.bottomN,Q.bottomP),Y=Q;else if(oe&&he)if(X=this.buildBevelVert(O,B,V,0),Q=this.buildBevelVert(O,z,E,0),Ge?(y.push(W.topN,Q.topP,Y.topN),y.push(W.topN,X.topP,Q.topP),y.push(Q.bottomP,W.bottomN,Y.bottomN),y.push(Q.bottomP,X.bottomP,W.bottomN)):(y.push(Y.topN,W.topN,X.topP),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,Y.bottomN),y.push(X.bottomP,Y.bottomN,Q.bottomP)),W=X,Y=Q,oe===he)for(let ge=1;ge<oe;ge++)X=this.buildBevelVert(O,B,(V+ge)%D,ge/(oe-1)),Q=this.buildBevelVert(O,z,(E+ge)%R,ge/(he-1)),y.push(W.topN,X.topP,Y.topN),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,W.bottomN,Y.bottomN),y.push(X.bottomP,Y.bottomN,Q.bottomP),W=X,Y=Q;else if(oe>he){let ge=oe/he,$e=0;for(let Te=1;Te<oe;Te++)X=this.buildBevelVert(O,B,(V+Te)%D,Te/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X,Te>($e+1)*ge&&($e++,Q=this.buildBevelVert(O,z,(E+$e)%R,$e/(he-1)),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,Y.bottomN,Q.bottomP),Y=Q)}else{let ge=he/oe,$e=0;for(let Te=1;Te<he;Te++)Q=this.buildBevelVert(O,z,(E+Te)%R,Te/(he-1)),y.push(Y.topN,X.topP,Q.topP),y.push(X.bottomP,Y.bottomN,Q.bottomP),Y=Q,Te>($e+1)*ge&&($e++,X=this.buildBevelVert(O,B,(V+$e)%D,$e/(oe-1)),y.push(W.topN,X.topP,Y.topN),y.push(X.bottomP,W.bottomN,Y.bottomN),W=X)}V=(V+oe)%D,E=(E+he)%R,Z=(Z+1)%K}while(Z!==U)}{let G=ce[0];for(let B=0,z=G.boundary.vertexCount;B<z;B++){let D=this.buildBevelVert(O,G,B),R=this.buildBevelVert(O,G,(B+1)%z);y.push(R.topP,D.topN,D.bottomN),y.push(R.topP,D.bottomN,R.bottomP)}}if(m){let G=[];for(let B=y.length-1;B>=F+2;B-=3){let z=y[B-2],D=y[B-1],R=y[B-0];G.push(R,D,z)}y.splice(F,y.length-F,...G)}if(m){let G=[];for(let B=ce[ce.length-1].boundary.vertices.length-1;B>=1;B-=2){let z=ce[ce.length-1].boundary.vertices[B-1],D=ce[ce.length-1].boundary.vertices[B-0];G.push(z,D)}b.push(G)}if(!m){let G=ce[ce.length-1],B=bo({windingRule:ce.length>1?qe.POSITIVE:qe.ODD,elementType:ot.POLYGONS,vertexSize:2,strict:!0,contours:[G.insetPoints,...b]});if(!B)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let z=0;z<B.elementCount*3;z+=3){let D=this.buildSurfaceVert(B,B.elements[z+0]),R=this.buildSurfaceVert(B,B.elements[z+1]),K=this.buildSurfaceVert(B,B.elements[z+2]);y.push(D.top,R.top,K.top),y.push(K.bottom,R.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new $s(Uint32Array.from(y),1),N=new $s(this._buffer.positions,3),v=new $s(this._buffer.normals,3),k=new $s(this._buffer.uvs,2);N.needsUpdate=!0,v.needsUpdate=!0,k.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",N),this.setAttribute("normal",v),this.setAttribute("uv",k),this.setIndex(A)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let i=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(i-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),h=c*3,p=c*2,d={top:c+0,bottom:c+1};return this._buffer.positions[h+0]=i,this._buffer.positions[h+1]=s,this._buffer.positions[h+2]=this._depth,this._buffer.normals[h+0]=0,this._buffer.normals[h+1]=0,this._buffer.normals[h+2]=1,this._buffer.uvs[p+0]=a,this._buffer.uvs[p+1]=l,this._buffer.positions[h+3]=i,this._buffer.positions[h+4]=s,this._buffer.positions[h+5]=0,this._buffer.normals[h+3]=0,this._buffer.normals[h+4]=0,this._buffer.normals[h+5]=-1,this._buffer.uvs[p+2]=a,this._buffer.uvs[p+3]=l,this.vertexCache[o]=d,d}buildBevelVert(e,r,o,i=1){let s=`${r.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=r.boundary.vertexIndices[o],c,h,p,d;a!==l?(h=a,c=l,d=!1,p=e.continuous[h]&&e.continuous[c]):(c=a,h=(c-1+e.count)%e.count,d=e.concave[c]&&r.bevelI>0,p=e.continuous[c]||d);let u=Math.cos(r.angle),f=Math.sin(r.angle),g=o*2,w=c*2,y=h*2,b=r.boundary.vertices[g+0],A=r.boundary.vertices[g+1],N=(1-f)*this._bevelSize,v=(b-this._minX)/this._width,k=(A-this._minY)/this._height,L=e.normals[w+0],m=e.normals[w+1],I=e.normals[y+0],x=e.normals[y+1];if(d){let J=I-L,ie=x-m;L=L+J*(1-i),m=m+ie*(1-i);let de=Math.sqrt(L*L+m*m);L/=de,m/=de}let C=this._buffer.get(p?2:4),T=C*3,O=C*2,$={i:o,fi:c,topP:C+0,topN:C+0,bottomP:C+1,bottomN:C+1};return this._buffer.positions[T+0]=b,this._buffer.positions[T+1]=A,this._buffer.positions[T+2]=this._depth-N,this._buffer.normals[T+0]=L*u,this._buffer.normals[T+1]=m*u,this._buffer.normals[T+2]=f,this._buffer.uvs[O+0]=v,this._buffer.uvs[O+1]=k,this._buffer.positions[T+3]=b,this._buffer.positions[T+4]=A,this._buffer.positions[T+5]=N,this._buffer.normals[T+3]=L*u,this._buffer.normals[T+4]=m*u,this._buffer.normals[T+5]=-f,this._buffer.uvs[O+2]=k,this._buffer.uvs[O+3]=v,p||(C+=2,T+=6,O+=4,$.topP=C+0,$.bottomP=C+1,this._buffer.positions[T+0]=b,this._buffer.positions[T+1]=A,this._buffer.positions[T+2]=this._depth-N,this._buffer.normals[T+0]=I*u,this._buffer.normals[T+1]=x*u,this._buffer.normals[T+2]=f,this._buffer.uvs[O+0]=v,this._buffer.uvs[O+1]=k,this._buffer.positions[T+3]=b,this._buffer.positions[T+4]=A,this._buffer.positions[T+5]=N,this._buffer.normals[T+3]=I*u,this._buffer.normals[T+4]=x*u,this._buffer.normals[T+5]=-f,this._buffer.uvs[O+2]=k,this._buffer.uvs[O+3]=v),this.vertexCache[s]=$,$}clone(){let e=new si(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ri(this.userData),e}};var dt=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var c,h,p,d,u,f,g;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters),r=Math.abs(e.width),o=Math.abs((h=e.height)!=null?h:e.width),i=Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(p=e.depth)!=null?p:0),s=(d=n.shape)!=null?d:t==null?void 0:t.shape,a=(u=s==null?void 0:s.roundness)!=null?u:e.roundness;s!==void 0&&(s instanceof Oe?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Oe(r,o).fromJSON(s),((f=n.parameters)==null?void 0:f.roundness)!==void 0&&((g=n.parameters)==null?void 0:g.roundness)>0&&s.update(!1));let l=s!=null?s:new Oe(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:i,extrudeDepth:i,roundness:a}),shape:l}}static build(n){let{extrudeDepth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:i}=n.parameters;n.shape.roundness=i;let s;return t<=0?s=new ni(n.shape,o):s=new si(n.shape,t,e,o,r),Object.assign(s,{userData:H(P({},n),{type:"VectorGeometry"})})}};import{MathUtils as Ed,Vector2 as _d}from"three";var Gd=Math.PI*2,zd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,spikes:r,angle:o,innerRadius:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c=n.shape,h=t*.5,p=e*.5,d=lv(c,h,p,o*Math.PI/180,r,i);c.isClosed=!0,c.update();let u=dt.create({shape:c,parameters:{subdivisions:d,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(u,{userData:H(P({},n),{type:"EllipseGeometry"})})}};function lv(n,t,e,r,o,i){if(r>=Gd)return o>30||o%4===0?(hv(n,t,e,i),Math.round(o/4)):Bd(n,r,o,t,e,i);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=Od({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?cv(n,s.x,s.y,c,o,t,e,i):Bd(n,r,o,t,e,i)}function cv(n,t,e,r,o,i,s,a){let l=Math.round(o/r.length);n.addPoint(ai(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],d=n.points[c],u=ai(p.x,p.y);d.controls[1].position.set(p.x1,p.y1),u.controls[0].position.set(p.x2,p.y2),n.addPoint(u)}return a>0?Rd(n,i,s,a):n.addPoint(ai(0,0)),l}function Bd(n,t,e,r,o,i){let s=-t/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*r,h=Math.cos(l)*o;n.addPoint(ai(c,h))}return t<Gd?i>0?Rd(n,r,o,i):n.addPoint(ai(0,0)):(n.removePoint(n.points[n.points.length-1]),i>0&&Fd(n,r,o,i)),1}function hv(n,t,e,r=0,o=0,i=0){let s=.5522847498,a=t*s,l=e*s;n.addPoint(Js(o-t,i,o-t,i-l,o-t,i+l)),n.addPoint(Js(o,i+e,o-a,i+e,o+a,i+e)),n.addPoint(Js(o+t,i,o+t,i+l,o+t,i-l)),n.addPoint(Js(o,i-e,o+a,i-e,o-a,i-e)),r>0&&Fd(n,t,e,r)}function ai(n,t){return new tr(Ed.generateUUID(),new _d(n,t))}function Js(n,t,e,r,o,i){let s=ai(n,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,i),s}function Rd(n,t,e,r){Vd(n,t,e,r).forEach(i=>n.addPoint(i))}function Fd(n,t,e,r){let o=Vd(n,t,e,r),i=new Oe;o.forEach(s=>i.addPoint(s)),i.isClosed=!0,n.shapeHoles.push(i)}function Vd(n,t,e,r){let o=r*t/100,i=o*(Math.abs(e)/Math.abs(t)),s=new _d(o/t,i/e),a=n.points.map(l=>{let c=l.clone();return c.uuid=Ed.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),h=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(h),l.controls[1].position.copy(c)}),a}import{BufferGeometry as pv,Float32BufferAttribute as Nl,Vector3 as jd}from"three";var Ud=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var a,l,c;let e=Object.assign({},(a=t==null?void 0:t.parameters)!=null?a:{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((l=e.height)!=null?l:r),i=Math.abs((c=e.depth)!=null?c:r),s=Math.abs(Math.min(r,i))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:i,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(n){let{width:t,height:e,depth:r,radius:o,revolutions:i,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:h,cornerSegments:p}=n.parameters,d=new rn(!1,t,e,r,o,i,s,a,l,c,h,p);return Object.assign(d,{userData:H(P({},n),{type:"HelixGeometry"})})}},rn=class extends pv{constructor(t=!0,e=1,r=1,o=1,i=1,s=1,a=1,l=1,c=1,h=1,p=1,d=1){super();let u=t&&s===1;u&&(d=0),p>100&&(p=100);let f=()=>new jd,g=new jd,w=f(),y=f(),b=f(),A,N,v,k,L,m,I,x,C=f(),T=f(),O=f(),$=f(),J=f(),ie=f(),de=f(),ce=f(),ve=r-2*l+.001,F=ve/s,G=Math.ceil(a*s),B=G+1,z=ve/G,D=-ve/2,R=h+1,K=2*Math.PI/h,Z=Math.PI/2/d,j=.01,V=Math.min((1-p/100)*l,l-j),E=l-V,U=0,ne=2,q=d*ne+ne,W=R*q/ne,Y=W+R*B,X=R*(B+q),[Q,se,oe]=[3,3,2].map(ke=>Array(X*ke).fill(0)),he=[],Ge=i-l;function ge(ke,gt){let _t=Math.PI/2;m=gt*z,x=2*Math.PI*(m%F)/F+_t,m+=D,I=Math.sin(x)*Ge,L=Math.cos(x)*Ge,t?ke.set(L,I,m):ke.set(L,m,I)}ge(g,-1e-10),ge(w,0),C.copy(g),ge(g,1);let $e=g.distanceTo(w),Te=E+V,ht=$e*G+2*Te,Lt=V,Lr=ht-Te;for(let ke=0;ke<=G;ke++){ge(y,ke),ce.subVectors(y,C).normalize(),C.copy(y),ie.copy(y).setComponent(+t+1,0).normalize(),de.crossVectors(ce,ie).normalize();let gt=ke===0,_t=ke===G,An=gt?3*Math.PI/2:Z,Dn=gt?Lt:Lr,Bn=gt?R:Y,En=gt?0:X-R,_n=ce.clone().multiplyScalar(gt?-E:E).add(y),Gn=ce.clone().multiplyScalar(gt?-1:1).normalize();for(let Ut=0;Ut<R;Ut++){let Ei=Ut*K;if(T.addVectors(g.copy(ie).multiplyScalar(l*Math.cos(Ei)),w.copy(de).multiplyScalar(l*Math.sin(Ei))),O.copy(T).normalize(),gt||_t){u||(U=En+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=_n.getComponent(pt),se[U*3+pt]=Gn.getComponent(pt)}),oe[U*2]=+_t,oe[U*2+1]=Ut/h),w.copy(O).multiplyScalar(V),b.addVectors(y,w);for(let pt=0;pt<d;pt++){let Oo=pt*Z+An;$.addVectors(g.copy(ce).multiplyScalar(E*Math.sin(Oo)),w.copy(O).multiplyScalar(E*Math.cos(Oo))),J.copy($).normalize(),w.addVectors(b,$),$.normalize(),U=Bn+pt*R+Ut,[0,1,2].forEach(co=>{Q[U*3+co]=w.getComponent(co),se[U*3+co]=J.getComponent(co)});let zn=+gt+Math.sin(Oo);oe[U*2]=(Dn+E*zn)/ht,oe[U*2+1]=Ut/h}}w.addVectors(y,T),U=W+ke*R+Ut,[0,1,2].forEach(pt=>{Q[U*3+pt]=w.getComponent(pt),se[U*3+pt]=O.getComponent(pt)}),oe[U*2]=(Te+ke*$e)/ht,oe[U*2+1]=Ut/h}}let yt=B+2*d+ne,Cr=1,[ao,lo]=u?[Cr,Cr+B-1]:[0,yt-1];for(let ke=ao;ke<=lo-1;ke++){let gt=u&&ke===lo-1;for(let _t=0;_t<R-1;_t++)A=ke*R+_t,N=A+1,v=(gt?_t:A)+R,k=(gt?_t+1:N)+R,ke===0?he.push(N,k,v):ke===yt-2?he.push(A,N,v):he.push(A,N,v,N,k,v)}this.setIndex(he),this.setAttribute("position",new Nl(Q,3)),this.setAttribute("normal",new Nl(se,3)),this.setAttribute("uv",new Nl(oe,2))}};import{IcosahedronBufferGeometry as dv}from"three";var kd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,detail:o,corner:i,cornerSides:s}=n.parameters,a=o===0&&i!==0?new on(t*.5,i,s):new dv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(P({},n),{type:"IcosahedronGeometry"})})}},on=class extends Xr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,i=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],a="IcosahedronGeometry";super(i,s,a,t,e,r),this.type=a}static fromJSON(t){return new on(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as uv,Shape as mv}from"three";var Hd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i,s,a;((o=(r=n.parameters)==null?void 0:r.points)!=null?o:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{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((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(n){let{points:t,segments:e,verticalSegments:r}=n.parameters,o=new mv;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 uv(o.extractPoints(r).shape,e);return i.rotateZ(Math.PI),Object.assign(i,{userData:H(P({},n),{type:"LatheGeometry"})})}};import{BufferGeometry as Wd,BufferGeometryLoader as Sv,Vector3 as wv,BoxBufferGeometry as $d}from"three";import{BufferGeometry as fv,Vector2 as Ml,Vector3 as qd}from"three";import{Geometry as yv,Face3 as gv}from"three/examples/jsm/deprecated/Geometry.js";var xv=["a","b","c"];function bv(n,t){switch(t){case"c":return n.c;case"b":return n.b;case"a":default:return n.a}}function Ol(n,t,e){let r=Math.min(n,t),o=Math.max(n,t),i=r+"_"+o;return e.get(i)}function Pl(n,t,e,r,o,i){let s=Math.min(n,t),a=Math.max(n,t),l=s+"_"+a,c;if(r.has(l))c=r.get(l);else{let h=e[s],p=e[a];c={a:h,b:p,newEdge:null,faces:[]},r.set(l,c)}c.faces.push(o),i[n].edges.push(c),i[t].edges.push(c)}function vv(n,t,e,r){let o,i,s;for(o=0,i=n.length;o<i;o++)e[o]={edges:[]};for(o=0,i=t.length;o<i;o++)s=t[o],Pl(s.a,s.b,n,r,s,e),Pl(s.b,s.c,n,r,s,e),Pl(s.c,s.a,n,r,s,e)}function Ks(n,t,e,r,o){n.push(new gv(t,e,r,void 0,void 0,o))}function li(n,t){return Math.abs(t-n)/2+Math.min(n,t)}function Ys(n,t,e,r){n.push([t.clone(),e.clone(),r.clone()])}var Xs=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof fv?t=new yv().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 qd,r,o,i,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,d=[],u=new Map;vv(l,c,d,u);let f=[],g,w,y,b,A,N,v;for(let j of Array.from(u.keys())){for(w=u.get(j),y=new qd,A=3/8,N=1/8,v=w.faces.length,v!=2&&(A=.5,N=0,v!=1),y.addVectors(w.a,w.b).multiplyScalar(A),e.set(0,0,0),s=0;s<v;s++){for(b=w.faces[s],a=0;a<3&&(g=l[bv(b,xv[a])],!(g!==w.a&&g!==w.b));a++);g&&e.add(g)}e.multiplyScalar(N),y.add(e),w.newEdge=f.length,f.push(y)}let k,L,m,I,x,C,T,O=[];for(o=0,i=l.length;o<i;o++){for(C=l[o],x=d[o].edges,r=x.length,r==3?k=3/16:r>3&&(k=3/(8*r)),L=1-r*Number(k),m=k,r<=2&&(r==2?(L=3/4,m=1/8):r==1||r==0),T=C.clone().multiplyScalar(L),e.set(0,0,0),s=0;s<r;s++)I=x[s],g=I.a!==C?I.a:I.b,e.add(g);e.multiplyScalar(Number(m)),T.add(e),O.push(T)}let $=O.concat(f),J=O.length,ie,de,ce,ve=[],F=[],G,B,z,D,R=new Ml,K=new Ml,Z=new Ml;for(o=0,i=c.length;o<i;o++)b=c[o],ie=Number(Ol(b.a,b.b,u).newEdge)+J,de=Number(Ol(b.b,b.c,u).newEdge)+J,ce=Number(Ol(b.c,b.a,u).newEdge)+J,Ks(ve,ie,de,ce,b.materialIndex),Ks(ve,b.a,ie,ce,b.materialIndex),Ks(ve,b.b,de,ie,b.materialIndex),Ks(ve,b.c,ce,de,b.materialIndex),p&&(G=h[o],B=G[0],z=G[1],D=G[2],R.set(li(B.x,z.x),li(B.y,z.y)),K.set(li(z.x,D.x),li(z.y,D.y)),Z.set(li(B.x,D.x),li(B.y,D.y)),Ys(F,R,K,Z),Ys(F,B,R,Z),Ys(F,z,K,R),Ys(F,D,Z,K));t.vertices=$,t.faces=ve,p&&(t.faceVertexUvs[0]=F)}};var it=new wv,Jd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,s;let e=(s=(i=n.geometry)!=null?i:t==null?void 0:t.geometry)!=null?s:new Wd().copy(new $d(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(it),r={width:it.x,height:it.y,depth:it.z,subdivisions:0}):r=t.parameters;let o=P(P({},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){var l;let{width:t,height:e,depth:r,subdivisions:o}=n.parameters,i=(l=n.geometry)!=null?l:new Wd().copy(new $d(100,100,100)),s=i.userData.parameters;s===void 0?(i.computeBoundingBox(),i.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(t!==it.x||e!==it.y||r!==it.z)&&i.scale(it.x===0?1:t/it.x,it.y===0?1:e/it.y,it.z===0?1:r/it.z);let a=i.originalGeometry;return o>0?(a===void 0||(s==null?void 0:s.subdivisions)!==o)&&(a===void 0&&(a=i),i=new Xs(o).modify(a).toBufferGeometry()):(a!==void 0&&(i=a),a=void 0,i.getAttribute("normal")===void 0&&i.computeVertexNormals()),a!==void 0&&Object.assign(i,{originalGeometry:a}),delete n.geometry,Object.assign(i,{userData:H(P({},n),{type:"NonParametricGeometry"})})}static loadFromUrl(n,t,e){new Sv(e).load(n,o=>{let i=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(i.parameters,{width:100,height:it.y*s,depth:it.z*s}),t(this.build(i))})}};var Kd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:3},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,spikes:r,cornerRadius:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}=n.parameters,l=n.shape,c=t*.5,h=e*.5,p=0,d=0,u=2*Math.PI/r;for(let g=0;g<r;g++){let w=u*g,y=p+Math.sin(w)*c,b=d+Math.cos(w)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,w=l.points.length;g<w;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=dt.create({shape:l,parameters:{roundness:o,depth:i,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:H(P({},n),{type:"PolygonGeometry"})})}};import{BufferGeometry as Lv,Float32BufferAttribute as Il,Vector2 as fr,Vector3 as lt}from"three";var Yd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:i,openEnded:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=new Dl(t*.5,e,o,i,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:H(P({},n),{type:"PyramidGeometry"})})}};function nn(n,t,e){e.x=n.x*t.x,e.y=n.y,e.z=n.x*t.y}function Al(n,t,e,r,o,i){let s=t.clone().sub(n),a=e.clone().sub(n),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let c=s.add(a).normalize();i.copy(n).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);i.copy(n),i.addScaledVector(s,o/Math.sin(c)),i.addScaledVector(a,r/Math.sin(c))}}function Cv(n,t,e){let r=n.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Dl=class extends Lv{constructor(t=.5,e=1,r=4,o=1,i=!1,s=0,a=4){super(),r=Math.floor(Math.max(3,r)),o=Math.floor(o),a=Math.floor(a);let l=[],c=[],h=[],p=[],d=0,u=e/2,f=Math.PI/r,g=t*Math.cos(Math.PI/r),w=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,A=new lt(0,-u,0),N=new lt(0,u,0),v=new fr(t,-u),k=new fr(g,-u),L=new fr(0,N.y).sub(k),m=new fr(0,N.y).sub(v),I=new fr(L.y,-L.x).normalize(),x=new fr(m.y,-m.x).normalize(),T=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-L.angle())/2)-1e-8;s=Math.min(s,T);let O;{let F=new lt(I.x,I.y,0),G=new lt(Math.cos(w)*F.x,F.y,Math.sin(w)*F.x);O=F.angleTo(G)}let $=s/Math.tan((Math.PI-L.angle())/2),J=s/Math.tan((Math.PI-O)/2),ie=new lt;if(!i){c.push(A.x,A.y,A.z),h.push(0,-1,0),p.push(0,0);let F=d++,G=[],B=v.clone(),z=$/Math.cos(Math.PI/r);B.x-=z;for(let D=0;D<r;D++){let R=D/r*Math.PI*2+f,K=new fr(Math.sin(R),Math.cos(R));nn(B,K,ie),c.push(ie.x,ie.y,ie.z),h.push(0,-1,0),p.push(0,0),G.push(d++)}for(let D=0;D<G.length;D++)l.push(G[D],F,G[(D+1)%G.length])}let de=[];{let F=new lt,G=new lt,B=new lt,z=new lt,D=new lt,R=new lt;for(let K=0;K<r;K++){let Z=K/r*Math.PI*2+f,j=(K+.5)/r*Math.PI*2+f,V=(K+1)/r*Math.PI*2+f,E=new fr(Math.sin(Z),Math.cos(Z)),U=new fr(Math.sin(j),Math.cos(j)),ne=new fr(Math.sin(V),Math.cos(V));nn(v,E,G),nn(v,ne,B),nn(I,U,F),Al(N,G,B,J,J,z),c.push(z.x,z.y,z.z),Al(G,N,B,J,$,D),c.push(D.x,D.y,D.z),Al(B,G,N,$,J,R),c.push(R.x,R.y,R.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),h.push(F.x,F.y,F.z),p.push(0,0),p.push(0,0),p.push(0,0);let q=d++,W=d++,Y=d++;if(l.push(q,W,Y),s>0){{let se=G.clone().add(B).multiplyScalar(.5),oe=N.clone().sub(se).normalize(),Ge=A.clone().sub(se).normalize().add(oe).normalize().multiplyScalar(-1),ge=R.clone().sub(D);ce(se,ge,Ge,L.angle())}let X,Q;{let se=new lt;nn(x,ne,se);let oe=R.clone().add(z).multiplyScalar(.5);oe=Cv(oe,B,N);let he=R.clone().sub(z);[X,Q]=ce(oe,he,se,O,z.y)}{let se=X,oe=se.clone().setY(0).normalize(),he=new lt(0,-1,0),Ge=oe.clone().cross(he);ve(se,oe,he,Ge)}de.concat(Q);{let se=L.angle(),oe=Math.PI-se,he=N.clone();he.y-=s/Math.sin(se-Math.PI/2);let Ge=new lt,ge=[];for(let Te=0;Te<a;Te++){let ht=[],Lt=Math.PI/2-oe*Te/a,Lr=Math.cos(Lt),yt=Math.sin(Lt),Cr=j;for(let ao=0;ao<=Te;ao++){let lo=Math.cos(Cr),ke=Math.sin(Cr);F.x=Lr*ke,F.y=yt,F.z=Lr*lo,Ge.copy(he).addScaledVector(F,s),c.push(Ge.x,Ge.y,Ge.z),h.push(F.x,F.y,F.z),p.push(0,0),ht.push(d++),Cr+=Math.PI*2/Te/r}ge.push(ht)}Q.reverse(),ge.push(Q);let $e=ge.length-1;for(let Te=0;Te<$e;Te++){let ht=ge[Te],Lt=ge[Te+1],Lr=ht.length-1;l.push(Lt[1],ht[0],Lt[0]);for(let yt=1;yt<=Lr;yt++)l.push(ht[yt],ht[yt-1],Lt[yt]),l.push(Lt[yt+1],ht[yt],Lt[yt])}}}}}this.setIndex(l),this.setAttribute("position",new Il(c,3)),this.setAttribute("normal",new Il(h,3)),this.setAttribute("uv",new Il(p,2));function ce(F,G,B,z,D){let R=-z/2,K=(Math.PI-z)/2,Z=G.clone().normalize().cross(B);F.addScaledVector(B,-s/Math.sin(K));let j=new lt,V=new lt,E=1,U=d,ne=[];for(let q=0;q<=a;q++){let W=R+q/a*z;V.set(0,0,0),V.addScaledVector(Z,Math.sin(W)),V.addScaledVector(B,Math.cos(W));for(let Y=0;Y<=E;Y++){let X=Y/E-.5;if(j.copy(F),j.addScaledVector(G,X),j.addScaledVector(V,s),D!=null){let Q=Math.max(0,j.y-D);j.addScaledVector(G,-Q/G.y)}c.push(j.x,j.y,j.z),h.push(V.x,V.y,V.z),p.push(0,0),Y===0&&ne.push(d),d++}}for(let q=0;q<a;q++)for(let W=0;W<E;W++){let Y=U+W+(E+1)*q,X=Y+(E+1),Q=X+1,se=Y+1;l.push(Y,X,se),l.push(X,Q,se)}return[F.clone().addScaledVector(G,.5),ne]}function ve(F,G,B,z){let D=Math.PI/2,R=m.angle()-D,K=[],Z=new lt,j=new lt;for(let E=0;E<=a;E++){let U=[],ne=E/a;for(let q=0;q<=E;q++){let Y=((E?q/E:0)-.5)*b,X=Math.cos(Y),Q=Math.sin(Y),se=Math.atan(Math.tan(R)*X),oe=(D+se)*ne,he=Math.cos(oe),Ge=Math.sin(oe);Z.set(0,0,0),Z.addScaledVector(G,Ge*X),Z.addScaledVector(B,he),Z.addScaledVector(z,Ge*Q),j.copy(F).addScaledVector(Z,s),c.push(j.x,j.y,j.z),h.push(Z.x,Z.y,Z.z),p.push(0,0),U.push(d++)}K.push(U)}let V=K.length-1;for(let E=0;E<V;E++){let U=K[E],ne=K[E+1],q=U.length-1;l.push(U[0],ne[1],ne[0]);for(let W=1;W<=q;W++)l.push(U[W-1],U[W],ne[W]),l.push(U[W],ne[W+1],ne[W])}}}};var Zs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var i,s,a,l;let e=Object.assign({},(i=t==null?void 0:t.parameters)!=null?i:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},n.ui);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(l=e.depth)!=null?l:0)}),ui:r}}static build(n){let t=n.shape,{width:e,height:r,cornerRadius:o,cornerType:i,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=n.parameters,c={x:e*.5,y:r*.5},h={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function d(N,v,k){return v>e&&k>r?Math.min(N*e/v,N*r/k):v>e?N*e/v:k>r?N*r/k:N}let u=[];u[0]=o[0]===0?0:d(o[0],o[0]+o[3],o[0]+o[1]),u[1]=o[1]===0?0:d(o[1],o[1]+o[2],o[1]+o[0]),u[2]=o[2]===0?0:d(o[2],o[2]+o[1],o[2]+o[3]),u[3]=o[3]===0?0:d(o[3],o[3]+o[0],o[3]+o[2]);let f=h.x,g=p.x,w=p.y,y=h.y;t.addPoint(t.createPoint(f,w)),t.addPoint(t.createPoint(g,w)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let b=!0;for(let N=0,v=t.points.length;N<v;N++)t.points[N].roundness=u[N],N>0&&u[N]!==u[N-1]&&(b=!1);b&&(t.roundness=u[0]),t.useCubicForRoundedCorners=i!==1,t.update();let A=dt.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:H(P({},n),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as Tv}from"three";var Xd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width)})}}static build(n){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:i=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=n.parameters,h=new Tv(.5*t,o,i,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:H(P({},n),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as Nv}from"three";var Zd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0,widthSegments:8,heightSegments:8},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:0})}}static build(n){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=n.parameters,i=new Nv(t,e,r,o);return i.scale(1,1,1),Object.assign(i,{userData:H(P({},n),{type:"PlaneGeometry"})})}};var Qd=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:i,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=n.parameters,h=n.shape,p=t*.5,d=e*.5,u=0,f=0,g=s*Math.PI/360/o,w=Math.PI/2*3*-1,y=p*r/100,b=d*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let N=0;N<o;N++){let v=g*N,k=u+Math.sin(v)*p,L=f+Math.cos(v)*d;h.addPoint(h.createPoint(k,L))}}else for(let N=0;N<o;N++){let v=u+Math.cos(w)*p,k=f+Math.sin(w)*d;h.addPoint(h.createPoint(v,k)),w+=g,v=u+Math.cos(w)*y,k=f+Math.sin(w)*b,N<=o,h.addPoint(h.createPoint(v,k)),w+=g}h.isClosed=!0;for(let N=0,v=h.points.length;N<v;N++)h.points[N].roundness=i;h.roundness=i,h.update();let A=dt.create({shape:h,parameters:{roundness:i,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:H(P({},n),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as Mv}from"three";var Qs=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},n.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:0)})}}static build(n){let{width:t,height:e}=n.parameters,r=new Mv(t,e);return Object.assign(r,{userData:H(P({},n),{type:"TextFrameGeometry"})})}};var eu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var s,a,l;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},n.parameters),r=Math.abs(e.width),o=Math.abs((a=e.height)!=null?a:e.width),i=Math.abs((l=e.depth)!=null?l:e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:i})}}static build(n){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:i,arc:s,cornerRadius:a,cornerSegments:l}=n.parameters,c=Ov(t,e,r,t*.5,s,i,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:H(P({},n),{type:"TorusGeometry"})})}};function Ov(n,t,e,r,o,i,s,a,l,c,h){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new rn(!0,n,t,e,r,o,i,s,a,l,c,h)}import{TorusKnotBufferGeometry as Pv}from"three";var tu=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var r,o,i,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((i=e.depth)!=null?i:e.width),tube:(s=e.tube)!=null?s:e.width*.125})}}static build(n){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:i,q:s}=n.parameters,a=t*.5;a!==e&&(a-=e);let l=new Pv(a,e,r,o,i,s);return Object.assign(l,{userData:H(P({},n),{type:"TorusKnotGeometry"})})}};var ru=class{static create(n){return this.build(this.normalizeInputs(n))}static normalizeInputs(n,t){var o,i,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeDepth:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},n.parameters);return{shape:n.shape&&n.shape instanceof Oe?n.shape:new Oe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((i=e.height)!=null?i:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth!==void 0&&e.depth===0&&e.extrudeDepth>0?e.extrudeDepth:(s=e.depth)!=null?s:0)})}}static build(n){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s,isRect:a}=n.parameters,l=n.shape,c=t*.5,h=e*.5;a?(l.addPoint(l.createPoint(-c,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))):(l.addPoint(l.createPoint(0,h)),l.addPoint(l.createPoint(c,-h)),l.addPoint(l.createPoint(-c,-h))),l.isClosed=!0;for(let d=0,u=l.points.length;d<u;d++)l.points[d].roundness=r;l.roundness=r,l.update();let p=dt.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:i,extrudeBevelSegments:s}});return Object.assign(p,{userData:H(P({},n),{type:"TriangleGeometry"})})}};var sn={};xc(sn,{addBarycentricAttribute:()=>Ev,fixUvs:()=>Gv,loadFromUrl:()=>_v,resizeGeometry:()=>Bv,roundShapePolygon:()=>Dv});import{BufferGeometryLoader as Iv,Float32BufferAttribute as Av,Vector3 as Bl}from"three";var ou=function(n,t){let e=t.x-n.x,r=t.y-n.y,o=Math.sqrt(e*e+r*r),i=e/o,s=r/o,a=Math.atan2(s,i);return{x:e,y:r,len:o,nx:i,ny:s,ang:a}},Dv=(n,t,e)=>{let r,o,i,s,a,l,c,h,p,d,u,f,g,w,y=t.length;for(s=t[y-2],n.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let b=ou(a,s),A=ou(a,l);c=b.nx*A.ny-b.ny*A.nx,h=b.nx*A.nx-b.ny*-A.ny,u=Math.asin(c),p=1,d=!1,h<0?u<0?u=Math.PI+u:(u=Math.PI-u,p=-1,d=!0):u>0&&(p=-1,d=!0),f=u/2,w=Math.abs(Math.cos(f)*e/Math.sin(f)),w>Math.min(b.len/2,A.len/2)?(w=Math.min(b.len/2,A.len/2),g=Math.abs(w*Math.sin(f)/Math.cos(f))):g=e,o=a.x+A.nx*w,i=a.y+A.ny*w,o+=-A.ny*g*p,i+=A.nx*g*p,n.absarc(o,i,g,b.ang+Math.PI/2*p,A.ang-Math.PI/2*p,d),s=a,a=l}n.closePath()},Bv=(n,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=n.userData.parameters,i,s,a;t===0?(t=o.width,i=1):i=t/o.width,e===0?(e=o.height,s=1):s=e/o.height,r===0?(r=o.depth,a=1):a=r/o.depth,n.scale(i,s,a),o.width=t,o.height=e,o.depth=r},Ev=(n,t)=>{let e=[new Bl(1,0,0),new Bl(0,1,0),new Bl(0,0,1)],r=n.attributes.position,o=new Float32Array(r.count*3);for(let i=0,s=r.count;i<s;i++)e[i%3].toArray(o,i*3);n.setAttribute(t,new Av(o,3))},_v=n=>new Promise(t=>{new Iv().load(n,r=>t(r))}),Gv=(n,t,e)=>{let r=n.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let i=r.getX(o),s=r.getY(o);r.setXY(o,(i+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as Gu,BufferAttribute as zu,Uint32BufferAttribute as Ql,Float32BufferAttribute as ec,Matrix4 as qS,Vector3 as ba}from"three";var zv,ea=new Promise(n=>{zv=n});import{BufferGeometryLoader as kS}from"three";import{DoubleSide as FS,EventDispatcher as VS,Matrix3 as jS,Vector3 as Zl}from"three";import{NormalBlending as nS,ShaderMaterial as sS,FrontSide as aS}from"three";import{CubeReflectionMapping as Yv,CubeRefractionMapping as Xv,CubeUVReflectionMapping as Zv,LinearEncoding as lu,sRGBEncoding as Qv}from"three";var an=class{constructor(t){t=t!=null?t:{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as Rv}from"three";var pe=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=Rv.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e!=null?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!=null?r:{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r!=null?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!=null?e:this.getType(t,e);let o=t.getNodeData(r!=null?r:this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,i,s){return""}generate(t,e,r,o,i){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getJSONNode(t){if((t==null?void 0:t.materials)&&(t==null?void 0:t.materials[this.uuid])!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof pe&&(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}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){var e;return(e=this.getJSONNode(t))!=null?e:this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),this}};var El=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}},nt=new El;import{Vector2 as iu}from"three";import{MathUtils as Fv}from"three";var me=class extends pe{constructor(e,r){super(e);this.scope="";r=r!=null?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!=null?r:this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=Fv.generateUUID()),o=e.getUUID(o!=null?o:this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,a.output,i);let h=this.generate(e,l,o);return e.addNodeCode(c+" = "+h+";"),e.format(c,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,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o!=null?o:this.uuid,e.getTempVar(o,i!=null?i:this.getType(e),s,this.getLabel()).name}};var Fe=class extends me{constructor(e,r){r=r!=null?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}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,o,i,s,a){o=e.getUUID(o!=null?o:this.getUUID()),i=i!=null?i:this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var vt=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof iu?e:new iu(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,i,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Vector3 as nu}from"three";var St=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof nu?e:new nu(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};import{Color as Vv}from"three";var Dt=class extends Vv{constructor(e,r,o,i){super(e,r,o);this.isColorA=!0;this.a=i}setRGBA(e,r,o,i){super.setRGB(e,r,o),this.a=i}copy(e){return super.copy(e),this.a="a"in e?e.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(e){this.r=e}set y(e){this.g=e}set z(e){this.b=e}set w(e){this.a=e}};var Br=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Dt?e:new Dt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,i,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var jv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,su=/[a-z_0-9]+/gi,re=class extends me{constructor(e,r,o,i,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,r,o,i)}getShared(e,r){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}}getIncludeByName(e){if(this.includes){let r=this.includes.length;for(;r--;)if(this.includes[r].name===e)return this.includes[r]}}generate(e,r,o,i,s){let a,l=0,c=this.src;if(this.includes)for(let p=0;p<this.includes.length;p++)e.include(this.includes[p],this);for(let p in this.extensions)e.extensions[p]=!0;let h=[];for(;a=su.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let d=h[p],u=d[0],f=this.isMethod?!this.getInputByName(u):!0,g=u;if(this.keywords[u]||this.useKeywords&&f&&nt.containsKeyword(u)){let w=this.keywords[u];if(!w){let y=nt.getKeywordData(u);y.cache&&(w=e.keywords[u]),w=w||nt.getKeyword(u,e),y.cache&&(e.keywords[u]=w)}g=w.build(e)}u!==g&&(c=c.substring(0,d.index+l)+g+c.substring(d.index+u.length+l),l+=g.length-u.length),this.getIncludeByName(g)===void 0&&nt.contains(g)&&e.include(nt.get(g))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,i){if(this.src=e||"",this.includes=r!=null?r:[],this.extensions=o!=null?o:{},this.keywords=i!=null?i:{},this.isMethod){let s=jv.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(su);if(a){let l=0;for(;l<a.length;){let c=a[l++],h;c==="in"||c==="out"||c==="inout"?h=a[l++]:(h=c,c="");let p=a[l++];this.inputs.push({name:p,type:h,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let i={};for(let s in this.keywords)i[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=i,(o=this.includes)!=null&&o.length){let s=[];for(let a=0;a<this.includes.length;a++)s.push(this.includes[a].toJSON(e).uuid);r.includes=s}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let o in e.keywords)this.keywords[o]=r.getNode(e.keywords[o])}return e.includes&&r&&(this.includes=e.includes.map(o=>r.getNode(o))),this}};var Uv=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,_l=class extends me{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||_l.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,i,s){this.src=e||"";let a,l,c="",h=Uv.exec(e);this.useDefine=s!=null?s:this.src.charAt(0)==="#",h&&h.length>1?(l=h[1],a=h[2],c=h[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,i,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},Ne=_l;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var kv=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
+
)*?)}`,"gim"),Hv=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),ci=class extends me{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,i,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=kv.exec(e);if(r){let o=r[2],i;for(;i=Hv.exec(o);)this.inputs.push({type:i[1],name:i[2]});this.name=r[1]}else this.name="";this.type=this.name}};var hi=class extends me{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e!=null?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)}copy(e){return super.copy(e),this.index=e.index,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.index=this.index),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.index&&(this.index=e.index),this}};nt.addKeyword("uv",function(){return new hi});nt.addKeyword("uv2",function(){return new hi(1)});import{LinearEncoding as qv,sRGBEncoding as Wv}from"three";var vo=class extends me{constructor(e=new pe,r){super("v4");this.nodeType="ColorSpace";this.factor=new pe;this.input=e,this.method=r!=null?r:vo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case qv:return["Linear"];case Wv:return["sRGB"];default:return[]}}generate(e,r){var l;let o=this.input.build(e,"v4"),i=this.getType(e),s=vo.Nodes[this.method],a=e.include(s);if(a===vo.LINEAR_TO_LINEAR)return e.format(o,i,r);if(((l=s.inputs)==null?void 0:l.length)===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",i,r)}else return e.format(a+"( "+o+" )",i,r)}fromEncoding(e){let r=vo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=vo.getEncodingComponents(e);this.method=r[0]+"ToLinear",this.factor=r[1]}copy(e){return super.copy(e),this.input.copy(e.input),this.method=e.method,this.factor.copy(e.factor),this}},Nt=vo;Nt.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
3
3
|
`)),sRGBToLinear:new re(["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(`
|
|
4
4
|
`)),LinearTosRGB:new re(["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(`
|
|
5
|
-
`))},Nt.LINEAR_TO_LINEAR="LinearToLinear",Nt.SRGB_TO_LINEAR="sRGBToLinear",Nt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends re{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as $v}from"three";var yr=class extends $v{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let o=this.image;if(Array.isArray(o)){t.images[o.uuid].url=[];for(let i=0;i<o.length;i++)t.images[o.uuid].url[i]=ad(o[i])}else t.images[o.uuid].url=ad(o)}return e}};function ad(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?Jv(n):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var pi;function Jv(n){if(/^data:/i.test(n.src))return n.src;let t;if(n instanceof HTMLCanvasElement)t=n;else{pi===void 0&&(pi=document.createElement("canvas")),pi.width=n.width,pi.height=n.height;let r=pi.getContext("2d");n instanceof ImageData?r.putImageData(n,0,0):r.drawImage(n,0,0,n.width,n.height),t=pi}let e=n.src.startsWith("blob:")?n.fileName:n.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var Mt=class extends Fe{constructor(e=new yr,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r!=null?r:new hi,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){var p;if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,l;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?l=a+"( "+o+", "+i+", "+s+" )":l=a+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},h=this.getType(e);return e.addContext(c),this.colorSpace=(p=this.colorSpace)!=null?p:new Nt(new Ee("",h)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,h),e.removeContext(),e.format(l,h,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};var te=class extends Fe{constructor(e){super("f");this.nodeType="Float";this.value=e!=null?e:0}generateReadonly(e,r,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,r)}copy(e){return super.copy(e),this.value=e.value,this}};var ln=class extends me{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r!=null?r:[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,s){i=this.getType(e);let a=this.value,l=a.build(e,r)+"( ",c=[];if(a.inputs){for(let h=0;h<a.inputs.length;h++){let p=a.inputs[h],u=this.inputs[h]||this.inputs[p.name];c.push(u.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this.inputs=e.inputs.map(r=>r.clone()),this}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){let i=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,(o=i.inputs)!=null&&o.length){r.inputs={};for(let s=0;s<i.inputs.length;s++){let a=i.inputs[s],l=this.inputs[s];r.inputs[a.name]=l.toJSON(e).uuid}}}return r}};var Gl=class extends me{constructor(e=new pe,r=new pe,o=Gl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},Bt=Gl;Bt.ADD="+",Bt.SUB="-",Bt.MUL="*",Bt.DIV="/";var Ae=class extends me{constructor(e=new pe,r=Ae.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 Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let 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 Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,h=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,a===1?"f":h),i=this.b.build(e,h);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,h),i=this.b.build(e,l===1?"f":h);break;case Ae.REFRACT:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,c===1?"f":h);break;default:o=this.a.build(e,h),this.b&&(i=this.b.build(e,h)),this.c&&(s=this.c.build(e,h));break}let u=[];u.push(o),i&&u.push(i),s&&u.push(s);let d=this.getNumInputs(e);if(u.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${u.length}.`);return e.format(this.method+"( "+u.join(", ")+" )",p,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof pe?e.b.clone():e.b,this.c=e.c instanceof pe?e.c.clone():e.c,this.method=e.method,this}},ye=Ae;ye.RAD="radians",ye.DEG="degrees",ye.EXP="exp",ye.EXP2="exp2",ye.LOG="log",ye.LOG2="log2",ye.SQRT="sqrt",ye.INV_SQRT="inversesqrt",ye.FLOOR="floor",ye.CEIL="ceil",ye.NORMALIZE="normalize",ye.FRACT="fract",ye.SATURATE="saturate",ye.SIN="sin",ye.COS="cos",ye.TAN="tan",ye.ASIN="asin",ye.ACOS="acos",ye.ARCTAN="atan",ye.ABS="abs",ye.SIGN="sign",ye.LENGTH="length",ye.NEGATE="negate",ye.INVERT="invert",ye.MIN="min",ye.MAX="max",ye.MOD="mod",ye.STEP="step",ye.REFLECT="reflect",ye.DISTANCE="distance",ye.DOT="dot",ye.CROSS="cross",ye.POW="pow",ye.MIX="mix",ye.CLAMP="clamp",ye.REFRACT="refract",ye.SMOOTHSTEP="smoothstep",ye.FACEFORWARD="faceforward";var ui=class extends me{constructor(e=new pe,r=new pe,o=new pe){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){var c,h,p,u;let s=new ln(ui.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=(c=this.colorSpaceTL)!=null?c:new Nt(new Ee("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=(h=this.colorSpaceTR)!=null?h:new Nt(new Ee("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=(p=this.colorSpaceBL)!=null?p:new Nt(new Ee("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=(u=this.colorSpaceBR)!=null?u:new Nt(new Ee("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ee(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ee(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ee(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ee(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ee("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=s,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ln(ui.Nodes.roughnessToMip,[i]),a=new ye(s,ui.Nodes.m0,ui.Nodes.cubeUV_maxMipLevel,ye.CLAMP),l=new ye(a,ye.FLOOR),c=new ye(a,ye.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Bt(l,new te(1).setReadonly(!0),Bt.ADD)),u=new ye(h,p,c,ye.MIX);return e.format(u.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)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},di=ui;di.Nodes=function(){let e=new ci(`struct TextureCubeUVData {
|
|
5
|
+
`))},Nt.LINEAR_TO_LINEAR="LinearToLinear",Nt.SRGB_TO_LINEAR="sRGBToLinear",Nt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends re{constructor(e="",r,o,i,s){super(e,s,i,o,r);this.nodeType="Expression"}};import{Texture as $v}from"three";var yr=class extends $v{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let o=this.image;if(Array.isArray(o)){t.images[o.uuid].url=[];for(let i=0;i<o.length;i++)t.images[o.uuid].url[i]=au(o[i])}else t.images[o.uuid].url=au(o)}return e}};function au(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?Jv(n):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var pi;function Jv(n){if(/^data:/i.test(n.src))return n.src;let t;if(n instanceof HTMLCanvasElement)t=n;else{pi===void 0&&(pi=document.createElement("canvas")),pi.width=n.width,pi.height=n.height;let r=pi.getContext("2d");n instanceof ImageData?r.putImageData(n,0,0):r.drawImage(n,0,0,n.width,n.height),t=pi}let e=n.src.startsWith("blob:")?n.fileName:n.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var Mt=class extends Fe{constructor(e=new yr,r,o,i){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r!=null?r:new hi,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){var p;if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),i=this.uv.build(e,this.project?"v4":"v2"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a,l;this.project?a="texture2DProj":a=s?"tex2DBias":"tex2D",s?l=a+"( "+o+", "+i+", "+s+" )":l=a+"( "+o+", "+i+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},h=this.getType(e);return e.addContext(c),this.colorSpace=(p=this.colorSpace)!=null?p:new Nt(new Ee("",h)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,h),e.removeContext(),e.format(l,h,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};var te=class extends Fe{constructor(e){super("f");this.nodeType="Float";this.value=e!=null?e:0}generateReadonly(e,r,o,i,s,a){return e.format(this.value+(this.value%1?"":".0"),i,r)}copy(e){return super.copy(e),this.value=e.value,this}};var ln=class extends me{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r!=null?r:[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,i,s){i=this.getType(e);let a=this.value,l=a.build(e,r)+"( ",c=[];if(a.inputs){for(let h=0;h<a.inputs.length;h++){let p=a.inputs[h],d=this.inputs[h]||this.inputs[p.name];c.push(d.build(e,e.getTypeByFormat(p.type)))}l+=c.join(", ")+" )"}return e.format(l,i,r)}copy(e){return super.copy(e),this.value.copy(e.value),this.inputs=e.inputs.map(r=>r.clone()),this}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){let i=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,(o=i.inputs)!=null&&o.length){r.inputs={};for(let s=0;s<i.inputs.length;s++){let a=i.inputs[s],l=this.inputs[s];r.inputs[a.name]=l.toJSON(e).uuid}}}return r}};var Gl=class extends me{constructor(e=new pe,r=new pe,o=Gl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let i=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+i+" "+this.op+" "+s+" )",o,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},Bt=Gl;Bt.ADD="+",Bt.SUB="-",Bt.MUL="*",Bt.DIV="/";var Ae=class extends me{constructor(e=new pe,r=Ae.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 Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let 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 Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,r){let o,i,s,a=this.a?e.getTypeLength(this.a.getType(e)):0,l=this.b?e.getTypeLength(this.b.getType(e)):0,c=this.c?e.getTypeLength(this.c.getType(e)):0,h=this.getInputType(e),p=this.getType(e);switch(this.type=p,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case Ae.CROSS:o=this.a.build(e,"v3"),i=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,a===1?"f":h),i=this.b.build(e,h);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,h),i=this.b.build(e,l===1?"f":h);break;case Ae.REFRACT:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,h),i=this.b.build(e,h),s=this.c.build(e,c===1?"f":h);break;default:o=this.a.build(e,h),this.b&&(i=this.b.build(e,h)),this.c&&(s=this.c.build(e,h));break}let d=[];d.push(o),i&&d.push(i),s&&d.push(s);let u=this.getNumInputs(e);if(d.length!==u)throw Error(`Arguments not match used in "${this.method}". Require ${u}, currently ${d.length}.`);return e.format(this.method+"( "+d.join(", ")+" )",p,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b=e.b instanceof pe?e.b.clone():e.b,this.c=e.c instanceof pe?e.c.clone():e.c,this.method=e.method,this}},ye=Ae;ye.RAD="radians",ye.DEG="degrees",ye.EXP="exp",ye.EXP2="exp2",ye.LOG="log",ye.LOG2="log2",ye.SQRT="sqrt",ye.INV_SQRT="inversesqrt",ye.FLOOR="floor",ye.CEIL="ceil",ye.NORMALIZE="normalize",ye.FRACT="fract",ye.SATURATE="saturate",ye.SIN="sin",ye.COS="cos",ye.TAN="tan",ye.ASIN="asin",ye.ACOS="acos",ye.ARCTAN="atan",ye.ABS="abs",ye.SIGN="sign",ye.LENGTH="length",ye.NEGATE="negate",ye.INVERT="invert",ye.MIN="min",ye.MAX="max",ye.MOD="mod",ye.STEP="step",ye.REFLECT="reflect",ye.DISTANCE="distance",ye.DOT="dot",ye.CROSS="cross",ye.POW="pow",ye.MIX="mix",ye.CLAMP="clamp",ye.REFRACT="refract",ye.SMOOTHSTEP="smoothstep",ye.FACEFORWARD="faceforward";var di=class extends me{constructor(e=new pe,r=new pe,o=new pe){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,i){var c,h,p,d;let s=new ln(di.Nodes.bilinearCubeUV,[r,o,i]);this.colorSpaceTL=(c=this.colorSpaceTL)!=null?c:new Nt(new Ee("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=(h=this.colorSpaceTR)!=null?h:new Nt(new Ee("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=(p=this.colorSpaceBL)!=null?p:new Nt(new Ee("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=(d=this.colorSpaceBR)!=null?d:new Nt(new Ee("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ee(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ee(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ee(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ee(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ee("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=s,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,i=this.bias||e.context.roughness,s=new ln(di.Nodes.roughnessToMip,[i]),a=new ye(s,di.Nodes.m0,di.Nodes.cubeUV_maxMipLevel,ye.CLAMP),l=new ye(a,ye.FLOOR),c=new ye(a,ye.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Bt(l,new te(1).setReadonly(!0),Bt.ADD)),d=new ye(h,p,c,ye.MIX);return e.format(d.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},ui=di;ui.Nodes=function(){let e=new ci(`struct TextureCubeUVData {
|
|
6
6
|
vec4 tl;
|
|
7
7
|
vec4 tr;
|
|
8
8
|
vec4 br;
|
|
@@ -67,7 +67,7 @@ var Om=Object.create;var Rn=Object.defineProperty,Pm=Object.defineProperties,Im=
|
|
|
67
67
|
uv.x -= texelSize;
|
|
68
68
|
vec4 bl = texture2D(envMap, uv);
|
|
69
69
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
70
|
-
}`,[e,a,l,r,o,i,s]);c.useKeywords=!1;let h=new Ne("float r0 1.0",!0),p=new Ne("float v0 0.339",!0),
|
|
70
|
+
}`,[e,a,l,r,o,i,s]);c.useKeywords=!1;let h=new Ne("float r0 1.0",!0),p=new Ne("float v0 0.339",!0),d=new Ne("float m0 -2.0",!0),u=new Ne("float r1 0.8",!0),f=new Ne("float v1 0.276",!0),g=new Ne("float m1 -1.0",!0),w=new Ne("float r4 0.4",!0),y=new Ne("float v4 0.046",!0),b=new Ne("float m4 2.0",!0),A=new Ne("float r5 0.305",!0),N=new Ne("float v5 0.016",!0),v=new Ne("float m5 3.0",!0),k=new Ne("float r6 0.21",!0),L=new Ne("float v6 0.0038",!0),m=new Ne("float m6 4.0",!0),I=[h,p,d,u,f,g,w,y,b,A,N,v,k,L,m],x=new re(`float roughnessToMip(float roughness) {
|
|
71
71
|
float mip = 0.0;
|
|
72
72
|
if (roughness >= r1) {
|
|
73
73
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -81,7 +81,7 @@ var Om=Object.create;var Rn=Object.defineProperty,Pm=Object.defineProperties,Im=
|
|
|
81
81
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
82
82
|
}
|
|
83
83
|
return mip;
|
|
84
|
-
}`,I);return{bilinearCubeUV:c,roughnessToMip:x,m0:
|
|
84
|
+
}`,I);return{bilinearCubeUV:c,roughnessToMip:x,m0:d,cubeUV_maxMipLevel:r}}();var So=class extends me{constructor(e){super("v3");this.nodeType="Normal";this.scope=e!=null?e:So.VIEW}getShared(){return this.scope===So.WORLD}build(e,r,o,i){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,i):super.build(e,r,o)}generate(e,r,o,i,s){let a;switch(this.scope){case So.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case So.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case So.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},ct=So;ct.LOCAL="local",ct.WORLD="world",ct.VIEW="view",ct.NORMAL="normal";nt.addKeyword("viewNormal",function(){return new ct(ct.VIEW)});nt.addKeyword("localNormal",function(){return new ct(ct.NORMAL)});nt.addKeyword("worldNormal",function(){return new ct(ct.WORLD)});var gr=class extends me{constructor(e){super("v3");this.nodeType="Position";this.scope=e!=null?e:gr.LOCAL}getType(){switch(this.scope){case gr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case gr.LOCAL:case gr.WORLD:return!1}return!0}generate(e,r,o,i,s){let a;switch(this.scope){case gr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case gr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case gr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case gr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},ut=gr;ut.LOCAL="local",ut.WORLD="world",ut.VIEW="view",ut.PROJECTION="projection";nt.addKeyword("position",function(){return new ut});nt.addKeyword("worldPosition",function(){return new ut(ut.WORLD)});nt.addKeyword("viewPosition",function(){return new ut(ut.VIEW)});var rr=class extends me{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e!=null?e:rr.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case rr.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let i;switch(this.scope){case rr.VECTOR:{let s=new ct(ct.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new ut(ut.VIEW).build(e,"v3"),h=a?a.build(e,"f"):void 0,p=`reflect( -normalize( ${c} ), ${l} )`;h&&(p=`normalize( mix( ${p}, ${l}, ${h} * ${h} ) )`);let d=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${d};`),i="reflectVec"):i=d;break}case rr.CUBE:{let s=new rr(rr.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),i="reflectCubeVec"):i=a;break}case rr.SPHERE:{let s=new rr(rr.VECTOR).build(e,"v3"),a="normalize( ( viewMatrix * vec4( "+s+", 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ).xy * 0.5 + 0.5";o?(e.addNodeCode(`vec2 reflectSphereVec = ${a};`),i="reflectSphereVec"):i=a;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)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},xr=rr;xr.CUBE="cube",xr.SPHERE="sphere",xr.VECTOR="vector";var ta=class extends me{constructor(e=new Mt,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new ui(this.value,r!=null?r:new xr(xr.VECTOR),o),this.irradianceNode=new ui(this.value,new ct(ct.WORLD),new te(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))}copy(e){return super.copy(e),this.value.copy(e.value),this.radianceNode.copy(e.radianceNode),this.irradianceNode.copy(e.irradianceNode),this}};import{CubeTexture as Kv}from"three";var ra=class extends Fe{constructor(e=new Kv,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r!=null?r:new xr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){var h,p;if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),i=(h=this.uv)==null?void 0:h.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+i+", "+s+" )":a="texCube( "+o+", "+i+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=(p=this.colorSpace)!=null?p:new Nt(new Ee("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,c),e.removeContext(),e.format(a,c,r)}copy(e){return super.copy(e),this.value.copy(e.value),e.uv?this.uv?this.uv.copy(e.uv):this.uv=e.uv.clone():this.uv=void 0,e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,this}};var cu=["x","y","z","w"],eS=["float","vec2","vec3","vec4"],tS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},rS={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[]"},oa=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function t(e,r){return e.deps.length-r.deps.length}return function(r,o){let i=this.getIncludes(r,o);if(!i)return"";let s="";i=i.sort(t);for(let a=0;a<i.length;a++)i[a].src&&(s+=i[a].src+`
|
|
85
85
|
`);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.requires={uv:[],color:[],lights:!1,fog:!1,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",`
|
|
86
86
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
87
87
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -126,8 +126,8 @@ var Om=Object.create;var Rn=Object.defineProperty,Pm=Object.defineProperties,Im=
|
|
|
126
126
|
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",i="V",s=""){let a=this.getVars(o),l=a[t];if(!l){let c=a.length;l={name:r||"node"+i+c+(s?"_"+s:""),type:e},a.push(l),a[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(`
|
|
127
127
|
`)}getVarListCode(t,e){e=e!=null?e:"";let r="";for(let o=0,i=t.length;o<i;++o){let s=t[o],a=s.type,l=s.name,c=s.size,h=this.getFormatByType(a);if(h===void 0)throw new Error("Node pars "+h+" not found.");h.includes("[]")?r+=e+" "+h.substring(0,h.length-2)+" "+l+`[${c}];
|
|
128
128
|
`:r+=e+" "+h+" "+l+`;
|
|
129
|
-
`}return r}getVars(t){return this.inputs.vars[t!=null?t:this.shader]}getNodeData(t){let e=t instanceof pe?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new an({type:e,size:r.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new an({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}}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){var s;let o;if(t=typeof t=="string"?nt.get(t):t,this.context.include===!1)return t.name;t instanceof re?o=this.includes.functions:t instanceof Ne?o=this.includes.consts:t instanceof ci&&(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 re&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),(s=t.includes)!=null&&s.length)){let l=0;do this.include(t.includes[l++],e);while(l<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 eS[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!=null&&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 Yv:case Xv:return new ra(r);case Zv:return new ta(new Mt(r));default:return new Mt(r)}else{if(r.isVector2)return new vt(r);if(r.isVector3)return new St(r);if(r.isVector4)return new Br(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 tS[t]||t}getFormatByType(t){return rS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return
|
|
130
|
-
`;return e.isShader("vertex")?o+="gl_Position = "+r.result+";":o+="gl_FragColor = "+r.result+";",o}copy(e){return super.copy(e),this.value.copy(e.value),this}};var _e=class extends Fe{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Dt?e:new Dt(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,a){o=e.getUUID(o!=null?o:this.getUUID()),i=i!=null?i:this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let h=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${h};`)}return c?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};import{MathUtils as Er,Vector2 as
|
|
129
|
+
`}return r}getVars(t){return this.inputs.vars[t!=null?t:this.shader]}getNodeData(t){let e=t instanceof pe?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,i,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new an({type:e,size:r.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new an({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:i});return a.list.push(c),a[t].push(c),a[t][c.name]=c,this.uniforms[c.name]=c,c}}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){var s;let o;if(t=typeof t=="string"?nt.get(t):t,this.context.include===!1)return t.name;t instanceof re?o=this.includes.functions:t instanceof Ne?o=this.includes.consts:t instanceof ci&&(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 re&&e&&i[e.name]&&i[e.name].deps.indexOf(t)===-1&&(i[e.name].deps.push(t),(s=t.includes)!=null&&s.length)){let l=0;do this.include(t.includes[l++],e);while(l<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 eS[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!=null&&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 Yv:case Xv:return new ra(r);case Zv:return new ta(new Mt(r));default:return new Mt(r)}else{if(r.isVector2)return new vt(r);if(r.isVector3)return new St(r);if(r.isVector4)return new Br(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 tS[t]||t}getFormatByType(t){return rS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return cu[t]}getIndexByElement(t){return cu.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=lu,e===lu&&this.context.gamma&&(e=Qv),e}};var cn=class extends pe{constructor(e=new pe){super("v4");this.nodeType="Raw";this.value=e}generate(e){let r=this.value.analyzeAndFlow(e,this.type),o=r.code+`
|
|
130
|
+
`;return e.isShader("vertex")?o+="gl_Position = "+r.result+";":o+="gl_FragColor = "+r.result+";",o}copy(e){return super.copy(e),this.value.copy(e.value),this}};var _e=class extends Fe{constructor(e=0,r,o,i){super("c");this.nodeType="Color";this.value=e instanceof Dt?e:new Dt(e||0,r,o,i)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,i,s,a){o=e.getUUID(o!=null?o:this.getUUID()),i=i!=null?i:this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let h=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${h};`)}return c?this.generateReadonly(e,r,o,i,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(i,this,s,a,this.getLabel())),e.format(l.vertex.name,i,r)):(l.fragment||(l.fragment=e.createFragmentUniform(i,this,s,a,this.getLabel())),e.format(l.fragment.name,i,r))}generateReadonly(e,r,o,i,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",i,r)}};import{MathUtils as Er,Vector2 as Qr,Vector3 as eo,Vector4 as ia}from"three";import{Texture as oS}from"three";var be=class extends Fe{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e!=null?e:0)}generateReadonly(e,r,o,i,s,a){return e.format(this.value.toString(),i,r)}copy(e){return super.copy(e),this.value=e.value,this}};var We=class{constructor(t,e,r,o){this.next=void 0;this.uniforms={};this.textures={};this.defines={};if(this.id=t,this.uuid=e,r){this.type=r.type;for(let i in r)i!=="type"&&i!=="calpha"&&(this.uniforms[`f${this.id}_${i}`]=r[i]);for(let i in o)this.defines[i]=o[i]}}copy(t){this.id=t.id,this.type=t.type,this.defines=P({},t.defines);for(let e in t.uniforms)this.getName(e)==="transmissionSamplerMap"||this.getName(e)==="transmissionDepthMap"||(this.uniforms[e]?this.uniforms[e].copy(t.uniforms[e]):this.uniforms[e]=t.uniforms[e].clone());return this}clone(){return new We(this.id).copy(this)}fromJSON(t,e){this.id=t.id,this.defines=P({},t.defines);for(let r in t.uniforms)this.uniforms[r]=e.getNode(t.uniforms[r]);if(t.type==="texture"){if(!(`f${this.id}_textureSize`in this.uniforms)){let r=this.uniforms[`f${this.id}_texture`].value.image;this.uniforms[`f${t.id}_textureSize`]=new St(r.width,r.height)}`f${this.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new vt(200,200)),`f${t.id}_axis`in this.uniforms||(this.uniforms[`f${t.id}_axis`]=new be(0)),`f${t.id}_side`in this.uniforms||(this.uniforms[`f${t.id}_side`]=new be(0)),`f${t.id}_projection`in this.uniforms||(this.uniforms[`f${t.id}_projection`]=new be(0))}else t.type==="noise"?(`f${t.id}_noiseType`in this.uniforms||(this.uniforms[`f${t.id}_noiseType`]=new be(0)),`f${t.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new St(-1,-1,-1))):t.type==="depth"&&(`f${t.id}_isWorldSpace`in this.uniforms||(this.uniforms[`f${t.id}_isWorldSpace`]=new te(1)));return this}toJSON(t){let e={};for(let o in this.uniforms)e[o]=this.uniforms[o].toJSON(t).uuid;return{id:this.id,type:this.type,defines:JSON.parse(JSON.stringify(this.defines)),uniforms:e,next:this.next==null?void 0:this.next.toJSON(t)}}copyUniforms(t){for(let e in this.uniforms){let r=this.getName(e);r!==void 0&&t.uniforms[`f${t.id}_${r}`]&&r!=="transmissionDepthMap"&&r!=="transmissionSamplerMap"&&this.uniforms[e].copy(t.uniforms[`f${t.id}_${r}`])}return this}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)}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getValues(){let t={type:this.type};for(let e in this.uniforms){let r=this.getName(e);if(r===void 0)continue;let i=this.uniforms[`f${this.id}_${r}`].value;i!==void 0&&(Array.isArray(i)?t[r]=i.map(s=>s.clone?s.clone():s):t[r]=i.clone?i.clone():i)}return t}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}isEqual(t){for(let e in t.uniforms){let r=t.getName(e);if(!r)return!1;let o=this.getValue(r),i=t.uniforms[e].value;if(i.value instanceof oS){if(o.image!==i.image)return!1}else if(Array.isArray(i)){let s=o;for(let a=0,l=s.length;a<l;++a)if(s[a]!==i[a])return!1}else{let s=o;if(s.equals){if(!s.equals(i))return!1}else if(o!==i)return!1}}return!0}dispose(){}};function hu(n){let t=n instanceof We?n.type:n;return t==="texture"||t==="displace_map"||t==="matcap"}var hn=class extends Fe{constructor(e){super("b");this.nodeType="Bool";this.value=e!=null?e:!1}generateReadonly(e,r,o,i){return e.format(this.value?"true":"false",i,r)}copy(e){return super.copy(e),this.value=e.value,this}};import{Vector4 as pu}from"three";var wo=class extends Fe{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof pu?new Array(e).fill(r):new Array(e).fill(new pu(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var Lo=class extends Fe{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)}copy(e){return super.copy(e),this.size=e.size,this.value=[...e.value],this}};import{Matrix3 as iS}from"three";var mi=class extends Fe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e!=null?e:new iS}generateReadonly(e,r,o,i,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",i,r)}copy(e){return super.copy(e),this.elements=e.elements,this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var dn=class extends me{constructor(e=new Mt,r,o,i,s,a,l,c,h){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=i,this.axis=s,this.side=a,this.size=l,this.mat=new mi(this.texture.value.matrix),this.alpha=c,this.mode=h,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(dn.Nodes.cylindrical);break;case 2:i=e.include(dn.Nodes.spherical);break;case 1:let a=["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=new re(`
|
|
131
131
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
132
132
|
|
|
133
133
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -146,7 +146,7 @@ var Om=Object.create;var Rn=Object.defineProperty,Pm=Object.defineProperties,Im=
|
|
|
146
146
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
147
147
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
148
148
|
return col;
|
|
149
|
-
}`);i=e.include(l);break;default:i=e.include(
|
|
149
|
+
}`);i=e.include(l);break;default:i=e.include(dn.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.getTexture(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(i+"("+s.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.texture.copy(e.texture),this.textureSize=e.textureSize.clone(),this.crop=e.crop.clone(),this.projection=e.projection.clone(),this.axis=e.axis.clone(),this.size=e.size.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this}},pn=dn;pn.Nodes=function(){let e=new re(`
|
|
150
150
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
151
151
|
vec3 posN = normalize(position);
|
|
152
152
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -220,7 +220,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
220
220
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
221
221
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
222
222
|
return col;
|
|
223
|
-
}`);return{cylindrical:e,spherical:r,uv:o}}();var zl=class extends me{constructor(e,r,o,i,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=s,this.alpha=a,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=e.include(zl.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.color=e.color.clone(),this.bias=e.bias.clone(),this.scale=e.scale.clone(),this.intensity=e.intensity.clone(),this.factor=e.factor.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},
|
|
223
|
+
}`);return{cylindrical:e,spherical:r,uv:o}}();var zl=class extends me{constructor(e,r,o,i,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=i,this.factor=s,this.alpha=a,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=e.include(zl.Nodes.fresnel),i=[];return i.push(this.color.build(e,"c")),i.push(this.bias.build(e,"f")),i.push(this.scale.build(e,"f")),i.push(this.intensity.build(e,"f")),i.push(this.factor.build(e,"f")),i.push(this.alpha.build(e,"f")),i.push(this.mode.build(e,"i")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.color=e.color.clone(),this.bias=e.bias.clone(),this.scale=e.scale.clone(),this.intensity=e.intensity.clone(),this.factor=e.factor.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},un=zl;un.Nodes=function(){return{fresnel:new re(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
224
224
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
225
225
|
|
|
226
226
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
@@ -345,7 +345,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
345
345
|
a *= 0.5;
|
|
346
346
|
}
|
|
347
347
|
return v;
|
|
348
|
-
}`,[c]);h.keywords.NUM_OCTAVES=new Ne(`int NUM_OCTAVES ${5}`);let p=new re("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),
|
|
348
|
+
}`,[c]);h.keywords.NUM_OCTAVES=new Ne(`int NUM_OCTAVES ${5}`);let p=new re("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),d=new re(`float perlin(vec3 P){
|
|
349
349
|
vec3 Pi0 = floor(P);
|
|
350
350
|
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
351
351
|
Pi0 = mod(Pi0, 289.0);
|
|
@@ -404,7 +404,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
404
404
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
405
405
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
406
406
|
return 2.2 * n_xyz;
|
|
407
|
-
}`,[o,i,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:
|
|
407
|
+
}`,[o,i,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:d}}();var Rl=class extends me{constructor(e,r,o,i,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=i,this.noiseScale=s,this.offset=a,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(Rl.Nodes.rainbow),i=[];return i.push(this.filmThickness.build(e,"f")),i.push(this.movement.build(e,"f")),i.push(this.wavelengths.build(e,"v3")),i.push(this.noiseStrength.build(e,"f")),i.push(this.noiseScale.build(e,"f")),i.push(this.offset.build(e,"v3")),i.push(this.alpha.build(e,"f")),i.push(this.calpha),e.format(o+"("+i.join(",")+")",this.getType(e),r)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.filmThickness=e.filmThickness.clone(),this.movement=e.movement.clone(),this.wavelengths=e.wavelengths.clone(),this.noiseStrength=e.noiseStrength.clone(),this.noiseScale=e.noiseScale.clone(),this.offset=e.offset.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},fn=Rl;fn.Nodes=function(){let e=new re(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
408
408
|
vec3 st = position / noiseScale;
|
|
409
409
|
vec3 q = vec3(simplex3d(st),
|
|
410
410
|
simplex3d(st + vec3(1.0)),
|
|
@@ -604,7 +604,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
604
604
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
605
605
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
606
606
|
return displaced_position;
|
|
607
|
-
}`,[e,r])}}();var bn=class extends me{constructor(e=new pe,r=new pe,o=new pe,i=new pe,s=new pe,a=new pe,l=new pe,c=new pe,h=new pe,p=new pe,
|
|
607
|
+
}`,[e,r])}}();var bn=class extends me{constructor(e=new pe,r=new pe,o=new pe,i=new pe,s=new pe,a=new pe,l=new pe,c=new pe,h=new pe,p=new pe,d=new pe,u=new pe){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=i,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=h,this.colorD=p,this.alpha=d,this.noiseType=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,i,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(mn)[this.noiseType.value],l=new re(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
|
|
608
608
|
vec3 st = position / size;
|
|
609
609
|
st /= scale;
|
|
610
610
|
vec3 q = vec3(${a}(st),
|
|
@@ -624,7 +624,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
624
624
|
|
|
625
625
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
626
626
|
return clamp(color, 0.0, 1.0).rgb;
|
|
627
|
-
}`,[Et.simplex,Et.simplexFractal,Et.simplexAshima,Et.fbm,Et.perlin]),c=e.include(l),h=[];return h.push(this.scale.build(e,"f")),h.push(this.size.build(e,"v3")),h.push(this.move.build(e,"f")),h.push(this.fA.build(e,"v2")),h.push(this.fB.build(e,"v2")),h.push(this.distortion.build(e,"v2")),h.push(this.colorA.build(e,"v4")),h.push(this.colorB.build(e,"v4")),h.push(this.colorC.build(e,"v4")),h.push(this.colorD.build(e,"v4")),h.push(this.alpha.build(e,"f")),h.push(this.calpha),e.format(c+"("+h.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.scale.copy(e.scale),this.size.copy(e.size),this.move.copy(e.move),this.fA.copy(e.fA),this.fB.copy(e.fB),this.distortion.copy(e.distortion),this.colorA.copy(e.colorA),this.colorB.copy(e.colorB),this.colorC.copy(e.colorC),this.colorD.copy(e.colorD),this.alpha.copy(e.alpha),this.calpha=e.calpha,this.noiseType.copy(e.noiseType),this}};bn.numOctaves=5;var vn=class extends me{constructor(e=new pe,r=new pe,o=new pe,i=new pe){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)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.alpha.copy(e.alpha),this.mode.copy(e.mode),this}};var yi=class extends me{constructor(e,r,o,i,s,a,l,c,h,p,u
|
|
627
|
+
}`,[Et.simplex,Et.simplexFractal,Et.simplexAshima,Et.fbm,Et.perlin]),c=e.include(l),h=[];return h.push(this.scale.build(e,"f")),h.push(this.size.build(e,"v3")),h.push(this.move.build(e,"f")),h.push(this.fA.build(e,"v2")),h.push(this.fB.build(e,"v2")),h.push(this.distortion.build(e,"v2")),h.push(this.colorA.build(e,"v4")),h.push(this.colorB.build(e,"v4")),h.push(this.colorC.build(e,"v4")),h.push(this.colorD.build(e,"v4")),h.push(this.alpha.build(e,"f")),h.push(this.calpha),e.format(c+"("+h.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.scale.copy(e.scale),this.size.copy(e.size),this.move.copy(e.move),this.fA.copy(e.fA),this.fB.copy(e.fB),this.distortion.copy(e.distortion),this.colorA.copy(e.colorA),this.colorB.copy(e.colorB),this.colorC.copy(e.colorC),this.colorD.copy(e.colorD),this.alpha.copy(e.alpha),this.calpha=e.calpha,this.noiseType.copy(e.noiseType),this}};bn.numOctaves=5;var vn=class extends me{constructor(e=new pe,r=new pe,o=new pe,i=new pe){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)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.alpha.copy(e.alpha),this.mode.copy(e.mode),this}};var yi=class extends me{constructor(e,r,o,i,s,a,l,c,h,p,d,u){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=i,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=h,this.steps=p,this.num=d,this.alpha=u,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,i=new re(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[10], float alpha, out float calpha) {
|
|
628
628
|
vec4 color = colors[0];
|
|
629
629
|
#ifdef ${o}_IS_VECTOR
|
|
630
630
|
#ifdef ${o}_LINEAR
|
|
@@ -690,7 +690,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
690
690
|
|
|
691
691
|
return matcapColor.rgb;
|
|
692
692
|
}
|
|
693
|
-
`)}}();var wt=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=Er.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new te(1));let r=new te(1),o=new be(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=o),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:o}),this.head=e.layer,this.head.next=new We(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){var i;this._material=t;let e,r,o=this.head;for(;o!==void 0;){if(o.type==="light"){e=o.uniforms[`f${o.id}_alpha`],r=o.uniforms[`f${o.id}_mode`];break}o=o.next}"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=e,this._material.shadingBlend=r),this.attachLightNodes((i=t.userData.layers)==null?void 0:i.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){var o;if(t.id=(o=t.id)!=null?o:++this.id,this.layerCount++,t.type==="light"){let i=this.createLightLayer(t);return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let i=this.head;for(;i.next!=null;)i=i.next;i.next=r}return e.color&&this._layerNodes.push({id:r.id,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),e.position&&this._layerNodes.push({id:r.id,type:"position",position:e.position}),this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){var a;let r=this.head;t.id=(a=t.id)!=null?a:++this.id,this.layerCount++;let o=this._createLayer(t),i=o.layer;i.next=e;let s=0;if(r===e)this.head=i,o.color&&this._layerNodes.splice(0,0,{id:i.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(0,0,{id:i.id,type:"position",position:o.position});else{for(s=1;(r==null?void 0:r.next)!==e;)r=r==null?void 0:r.next,s++;r.next=i,o.color&&this._layerNodes.splice(s,0,{id:i.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(s,0,{id:i.id,type:"position",position:o.position})}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}addLayerAt(t,e){var i;e.id=(i=e.id)!=null?i:++this.id,this.layerCount++;let r=this._createLayer(e),o=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:o.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:o.id,type:"position",position:r.position}),t==0)o.next=this.head,this.head=o;else{let s=this.head,a=this.head.next;for(let l=0;l<t-1;l++)s=a,a=a.next;o.next=a,s.next=o}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if((e==null?void 0:e.id)==t)this.head=e.next;else for(o=1,r=e,e=e==null?void 0:e.next;e!=null;){if(e.id==t){r.next=e.next;break}o++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=Er.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,i;if((o==null?void 0:o.id)==t){let s=this._createLayer(P({id:t,uuid:o.uuid},e));i=s.layer,i.next=o.next,this.head=i,s.color&&(this._layerNodes[0]={id:i.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:i.id,type:"position",position:s.position}),i.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,i.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value}else{r=o,o=o.next;let s=1;for(;o!=null;){if(o.id==t){let a=this._createLayer(P({id:t,uuid:o.uuid},e));i=a.layer,r.next=i,i.next=o.next,a.color&&(this._layerNodes[s]={id:t,type:"color",color:a.color,alpha:a.alpha,mode:a.mode}),a.position&&(this._layerNodes[s]={id:t,type:"position",position:a.position}),i.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,i.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value;break}r=o,o=o.next,s++}}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}getLayer(t){let e=this.head;for(;e!=null&&e.id!=t;)e=e.next;return e}getLayerByUuid(t){let e=this.head;for(;e!==void 0;){if(e.uuid===t)return e;e=e.next}}getLayers(){let t=[],e=this.head;for(;e!=null;)t.push(e),e=e.next;return t}getLayerPosition(t){let e=this.head,r=0;for(;e!==void 0&&e.id!=t;)r++,e=e.next;return r}getDefines(){}getBeforeProgram(){}getLightingProgram(){}getAfterProgram(){}getVarPrograms(){}getUniforms(){}moveLayer(t,e){let r,o=this.head,i;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)i=o,o=o.next;i.next=o.next,r=o}if(o=this.head,i=void 0,e==0)r.next=this.head,this.head=r;else{for(let a=0;a<e-1;a++)o=o.next;r.next=o==null?void 0:o.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new te(t.alpha),r=new be(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let o=new We(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let i=this.head;for(;i.next!=null;)i=i.next;i.next=o}return this.attachLightNodes(this.getLightLayer()),o}rebuildLayerNodes(t,e,r=!1){if(e.type==="light"){let o=r?e.uniforms[`f${e.id}_alpha`]:new te(e.uniforms[`f${e.id}_alpha`].value),i=r?e.uniforms[`f${e.id}_mode`]:new be(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=o,this._material.shadingBlend=i,this._layerNodes.push({id:e.id,type:"light",alpha:o,mode:i}),this.head===void 0?this.head=new We(e.id,e.uuid,{type:"light",alpha:o,mode:i}):t&&(t.next=new We(e.id,e.uuid,{type:"light",alpha:o,mode:i})),this.attachLightNodes(e)}else{let o={type:e.type,id:e.id};for(let i in e.uniforms){let s=e.getName(i);if(!s)continue;let a=`f${e.id}_${s}`;if(Array.isArray(e.uniforms[a].value))o[s]=e.uniforms[a].value.map(l=>l.clone&&!r?l.clone():l);else{let l=e.uniforms[a].value;if(s==="transmissionDepthMap"){o[s]=l;continue}l!=null&&(o[s]=l.clone&&!r&&!l.isRenderTargetTexture?l.clone():l)}}this.addLayer(o)}}attachLightNodes(t){var o,i,s,a,l,c,h,p,u,d,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new _e((i=(o=t==null?void 0:t.getValue("emissive"))==null?void 0:o.clone())!=null?i:0);break;case"Phong":e.shininess=new te((s=t==null?void 0:t.getValue("shininess"))!=null?s:30),e.specular=new _e((l=(a=t==null?void 0:t.getValue("specular"))==null?void 0:a.clone())!=null?l:1118481);break;case"Toon":e.shininess=new te((c=t==null?void 0:t.getValue("shininess"))!=null?c:30),e.specular=new _e((p=(h=t==null?void 0:t.getValue("specular"))==null?void 0:h.clone())!=null?p:1118481);break;case"Physical":e.roughness=new te((u=t==null?void 0:t.getValue("roughness"))!=null?u:.3),e.metalness=new te((d=t==null?void 0:t.getValue("metalness"))!=null?d:0),e.reflectivity=new te((f=t==null?void 0:t.getValue("reflectivity"))!=null?f:.5);break;default:break}Object.keys(e).forEach(g=>{this._material[g]=e[g],r.uniforms[`f${r.id}_${g}`]=e[g]})}clone(t){return new wt(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new We(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),i=t.head.next,s=o;for(;i!=null;)s.next=new We(i.id,void 0,{type:i.type}).fromJSON(i,e),i=i.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,o,!0);let a=o;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){var e;let t=this.head;for(;t!==void 0&&t.type!=="light";)t=(e=t.next)!=null?e:t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){var r,o,i,s,a,l,c,h,p,u,d,f,g,w,y,b,A,N,v,k,L,m,I,x,C,T,O,$,J,ie,ue,ce,ve,F,G,B,z,D,R,K,Z,j,V,E,U,ne,q,W,Y,X,Q,se,oe,he,Ge,ge,$e,Te,ht,Lt,Lr,yt,Cr,so,ao,ke,gt,_t,An,Dn,Bn,En,_n,Gn,Ut,Ei,pt,Oo,zn,lo;let e=t.type;switch(e){case"color":{let xe=new _e((r=t.color)!=null?r:5855577),Le=new te((o=t.alpha)!=null?o:1),Se=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Le;let we=new be((i=t.mode)!=null?i:0);return xe.alpha=Le,{layer:new We(t.id,t.uuid,{type:e,color:xe,alpha:Le,calpha:Se,mode:we}),color:xe,alpha:Se,mode:we}}case"texture":{let xe=(s=t.texture)!=null?s:new yr,Le=xe.matrix;t.mat&&Le.copy(t.mat),xe.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new be((l=t.projection)!=null?l:0),Me=new be((c=t.axis)!=null?c:0),Be=new be((h=t.side)!=null?h:0),ze=new vt(t.size?new Zr(t.size[0],t.size[1]):new Zr(100,100)),je=new te((p=t.alpha)!=null?p:1),De=new be((u=t.mode)!=null?u:0),He=new Mt(xe),st=new St((d=t.textureSize)!=null?d:new Qr(xe.image?xe.image.width:0,xe.image?xe.image.height:0)),Gt=new pn(He,st,Se,we,Me,Be,ze,je,De),Zt=new Ee(Gt.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:He,textureSize:st,crop:Se,projection:we,axis:Me,side:Be,size:ze,mat:Gt.mat,alpha:je,calpha:Zt,mode:De}),color:Gt,alpha:Zt,mode:De}}case"matcap":{let xe=(f=t.texture)!=null?f:new yr;xe.needsUpdate=!0;let Le=new te((g=t.alpha)!=null?g:1),Se=new Mt(xe),we=new be((w=t.mode)!=null?w:0),Me=new wn(Se,Le,we),Be=new Ee(Me.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:Se,alpha:Le,calpha:Be,mode:we}),color:Me,alpha:Be,mode:we}}case"fresnel":{let xe=new _e((y=t.color)!=null?y:16777215),Le=new te((b=t.bias)!=null?b:.1),Se=new te((A=t.scale)!=null?A:1),we=new te((N=t.intensity)!=null?N:2),Me=new te((v=t.factor)!=null?v:1),Be=new te((k=t.alpha)!=null?k:1),ze=new be((L=t.mode)!=null?L:0),je=new dn(xe,Le,Se,we,Me,Be,ze),De=new Ee(je.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,color:xe,bias:Le,scale:Se,intensity:we,factor:Me,alpha:Be,calpha:De,mode:ze}),color:je,alpha:De,mode:ze}}case"rainbow":{let xe=new te((m=t.filmThickness)!=null?m:30),Le=new te((I=t.movement)!=null?I:0),Se=new St((x=t.wavelengths)!=null?x:new Qr(0,0,0)),we=new te((C=t.noiseStrength)!=null?C:0),Me=new te((T=t.noiseScale)!=null?T:1),Be=new St((O=t.offset)!=null?O:new Qr(0,0,0)),ze=new te(($=t.alpha)!=null?$:1),je=new fn(xe,Le,Se,we,Me,Be,ze),De=new Ee(je.calpha,"f"),He=new be((J=t.mode)!=null?J:0);return{layer:new We(t.id,t.uuid,{type:e,filmThickness:xe,movement:Le,wavelengths:Se,noiseStrength:we,noiseScale:Me,offset:Be,alpha:ze,calpha:De,mode:He}),color:je,alpha:De,mode:He}}case"transmission":{let xe=new te((ie=t.thickness)!=null?ie:10),Le=new te((ue=t.ior)!=null?ue:1.5),Se=new te((ce=t.roughness)!=null?ce:.5),we=new vt((ve=t.transmissionSamplerSize)!=null?ve:new Zr(2048,2048)),Me=(F=t.transmissionSamplerMap)!=null?F:new yr,Be=(G=t.transmissionDepthMap)!=null?G:new yr,ze=new Mt(Me),je=new Mt(Be),De=window.innerWidth,He=window.innerHeight,st=De>=He?new vt(He/De,1):new vt(1,De/He),Gt=new te((B=t.alpha)!=null?B:1),Zt=new yn(xe,Le,Se,we,ze,je,st,Gt),Tr=new Ee(Zt.calpha,"f"),Fr=new be((z=t.mode)!=null?z:0);return{layer:new We(t.id,t.uuid,{type:e,thickness:xe,ior:Le,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:ze,transmissionDepthMap:je,aspectRatio:st,alpha:Gt,calpha:Tr,mode:Fr}),color:Zt,alpha:Tr,mode:Fr}}case"depth":{let xe=new be((D=t.gradientType)!=null?D:0),Le=new hn((R=t.smooth)!=null?R:!1),Se=new te((K=t.near)!=null?K:50),we=new te((Z=t.far)!=null?Z:200),Me=new te((j=t.isVector)!=null?j:1),Be=new te((V=t.isWorldSpace)!=null?V:0),ze=new St((E=t.origin)!=null?E:new Qr),je=new St((U=t.direction)!=null?U:new Qr),De=new be((ne=t.num)!=null?ne:0),He;t.colors?He=new So(De.value+1,t.colors):(He=new So(De.value+1,new ia(0,0,0,1)),He.value[1]=new ia(1,1,1,1));let st;t.steps?st=new wo(t.steps.length,t.steps):(st=new wo(10,1),st.value[0]=0);let Gt=new te((q=t.alpha)!=null?q:1),Zt=new be((W=t.mode)!=null?W:0),Tr=new Sn(xe,Le,Se,we,Me,Be,ze,je,He,st,De,Gt),Fr=new Ee(Tr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:xe,smooth:Le,near:Se,far:we,isVector:Me,isWorldSpace:Be,origin:ze,direction:je,colors:He,steps:st,num:De,alpha:Gt,calpha:Fr,mode:Zt}),color:Tr,alpha:Fr,mode:Zt}}case"noise":{let xe=new te((Y=t.scale)!=null?Y:1),Le=new St((X=t.size)!=null?X:new Qr(100,100,100)),Se=new te((Q=t.move)!=null?Q:1),we=new vt((se=t.fA)!=null?se:new Zr(1.7,9.2)),Me=new vt((oe=t.fB)!=null?oe:new Zr(8.3,2.8)),Be=new vt((he=t.distortion)!=null?he:new Zr(1,1)),ze=new Br(t.colorA),je=new Br(t.colorB),De=new Br(t.colorC),He=new Br(t.colorD),st=new te((Ge=t.alpha)!=null?Ge:1),Gt=new be((ge=t.mode)!=null?ge:0),Zt=new be(($e=t.noiseType)!=null?$e:0),Tr=new bn(xe,Le,Se,we,Me,Be,ze,je,De,He,st,Zt),Fr=new Ee(Tr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,scale:xe,size:Le,move:Se,fA:we,fB:Me,distortion:Be,colorA:ze,colorB:je,colorC:De,colorD:He,alpha:st,calpha:Fr,mode:Gt,noiseType:Zt}),color:Tr,alpha:Fr,mode:Gt}}case"normal":{let xe=new St((Te=t.cnormal)!=null?Te:new Qr(1,1,1)),Le=new te((ht=t.alpha)!=null?ht:1),Se=new be((Lt=t.mode)!=null?Lt:0),we=new gn(xe,Le),Me=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Me.keywords.alpha=Le,{layer:new We(t.id,t.uuid,{type:e,cnormal:xe,alpha:Le,calpha:Me,mode:Se}),color:we,alpha:Me,mode:Se}}case"gradient":{let xe=new be((Lr=t.gradientType)!=null?Lr:0),Le=new hn((yt=t.smooth)!=null?yt:!1),Se;t.colors?Se=new So(t.colors.length,t.colors):(Se=new So(10,new ia(0,0,0,1)),Se.value[1]=new ia(1,1,1,1));let we;t.steps?we=new wo(t.steps.length,t.steps):(we=new wo(10,1),we.value[0]=0);let Me=new vt((Cr=t.offset)!=null?Cr:new Zr(0,0)),Be=new vt((so=t.morph)!=null?so:new Zr(0,0)),ze=new te((ao=t.angle)!=null?ao:0),je=new te((ke=t.alpha)!=null?ke:1),De=new be((gt=t.mode)!=null?gt:0),He=new xn(xe,Le,Se,we,Me,Be,ze,je),st=new Ee(He.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:xe,smooth:Le,colors:Se,steps:we,offset:Me,morph:Be,angle:ze,alpha:je,calpha:st,mode:De}),color:He,alpha:st,mode:De}}case"displace":{let xe=new be((_t=t.displacementType)!=null?_t:0);if(xe.value===0){let Le=new St((An=t.offset)!=null?An:new Qr(0,0,0)),Se=new te((Dn=t.scale)!=null?Dn:10),we=new te((Bn=t.intensity)!=null?Bn:8),Me=new te((En=t.movement)!=null?En:1),Be=new te((_n=t.alpha)!=null?_n:1),ze=new be((Gn=t.mode)!=null?Gn:0),je=new be((Ut=t.noiseType)!=null?Ut:0),De=new fi(xe,we,Me,Le,Se,je);return{layer:new We(t.id,t.uuid,{displacementType:xe,type:e,offset:Le,scale:Se,intensity:we,movement:Me,alpha:Be,mode:ze,noiseType:je}),position:De}}else if(xe.value===1){let Le=(Ei=t.texture)!=null?Ei:new yr,Se=Le.matrix;t.mat&&Se.copy(t.mat),Le.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Me=new Mt(Le),Be=new te((Oo=t.crop)!=null?Oo:0),ze=new te((zn=t.alpha)!=null?zn:1),je=new be((lo=t.mode)!=null?lo:0),De=new fi(xe,we,Me,Be);return{layer:new We(t.id,t.uuid,{displacementType:xe,type:e,intensity:we,texture:Me,crop:Be,mat:De.mat,alpha:ze,mode:je}),position:De}}return{}}}return{}}blendColors(){let t=this._layerNodes.findIndex(r=>r.type==="color"),e=this._layerNodes.findIndex(r=>r.type==="light");if(t!==-1&&t<e){let r=this._layerNodes[t].color;for(let o=t+1;o<e;++o){let i=this._layerNodes[o];i.type==="color"&&(r=new vn(r,i.color,i.alpha,i.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Ee("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let o=this._layerNodes[r];o.type==="color"&&(t=new vn(t,o.color,o.alpha,o.mode))}"afterColor"in this._material&&(this._material.afterColor=t)}else"afterColor"in this._material&&(this._material.afterColor=void 0)}blendPositions(){let t=this._layerNodes.filter(e=>e.type==="position");if(t.length>0){let e=t[0].position;for(let r=1;r<t.length;++r)t[r]&&(e=new Bt(e,t[r].position,Bt.ADD),e=new Bt(e,new te(.5).setReadonly(!0),Bt.MUL));this._material.position=e}else this._material.position=void 0}cleanupChangedLayer(t){switch(this._layerNodes=this._layerNodes.filter(e=>e.id!==t.id),t.type){case"displace":{this.blendPositions();break}default:{this.blendColors(),this.blendAfterColors();break}}}};var Vt=class extends sS{constructor(e,r,o){super(o);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e!=null?e:new cn(new dt(dt.PROJECTION)),this.fragment=r!=null?r:new cn(new _e(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}_getLayerStack(e){let r=new wt(this);return e&&(async()=>{for(;e.image===void 0;)await new Promise(o=>requestAnimationFrame(o));r.addLayerAt(1,{type:"texture",texture:e}),this.dispose()})(),r}clampUniformsForPreview(e,r){let o=(i,s,a)=>Math.min(Math.max(i,s),a);if(this.userData.layers){for(let i of this.userData.layers.getLayers())if(i.type=="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}}restoreClampedUniforms(){if(this.userData.layers)for(let e of this.userData.layers.getLayers())e.type=="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){var o;e=e!=null?e:{};let r=(o=e.builder)!=null?o:new oa;return r.setMaterial(this,e.renderer),r.build(this.vertex,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.fog=r.requires.fog,this.lights=r.requires.lights,this.transparent=r.requires.transparent||this.blending>nS,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let o in e)this[o]=e[o];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let o=super.toJSON(e);return o.type="ShaderMaterial",o.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},o.vertex=this.vertex.toJSON(e).uuid,o.fragment=this.fragment.toJSON(e).uuid,delete o.vertexShader,delete o.fragmentShader,delete o.color,delete o.shininess,delete o.specular,delete o.roughness,delete o.metalness,delete o.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=o),this.userData.layers=r,o}fromJSON(e,r){var o;this.defines=(o=e.defines)!=null?o:{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:aS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}};Object.defineProperties(Vt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{UniformsLib as lS,UniformsUtils as cS}from"three";var na=class extends pe{constructor(){super("basic");this.nodeType="Basic";this.color=new _e(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(cS.merge([lS.fog])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
693
|
+
`)}}();var wt=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=Er.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new te(1));let r=new te(1),o=new be(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=o),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:o}),this.head=e.layer,this.head.next=new We(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){var i;this._material=t;let e,r,o=this.head;for(;o!==void 0;){if(o.type==="light"){e=o.uniforms[`f${o.id}_alpha`],r=o.uniforms[`f${o.id}_mode`];break}o=o.next}"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=e,this._material.shadingBlend=r),this.attachLightNodes((i=t.userData.layers)==null?void 0:i.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){var o;if(t.id=(o=t.id)!=null?o:++this.id,this.layerCount++,t.type==="light"){let i=this.createLightLayer(t);return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let i=this.head;for(;i.next!=null;)i=i.next;i.next=r}return e.color&&this._layerNodes.push({id:r.id,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),e.position&&this._layerNodes.push({id:r.id,type:"position",position:e.position}),this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){var a;let r=this.head;t.id=(a=t.id)!=null?a:++this.id,this.layerCount++;let o=this._createLayer(t),i=o.layer;i.next=e;let s=0;if(r===e)this.head=i,o.color&&this._layerNodes.splice(0,0,{id:i.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(0,0,{id:i.id,type:"position",position:o.position});else{for(s=1;(r==null?void 0:r.next)!==e;)r=r==null?void 0:r.next,s++;r.next=i,o.color&&this._layerNodes.splice(s,0,{id:i.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(s,0,{id:i.id,type:"position",position:o.position})}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}addLayerAt(t,e){var i;e.id=(i=e.id)!=null?i:++this.id,this.layerCount++;let r=this._createLayer(e),o=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:o.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:o.id,type:"position",position:r.position}),t==0)o.next=this.head,this.head=o;else{let s=this.head,a=this.head.next;for(let l=0;l<t-1;l++)s=a,a=a.next;o.next=a,s.next=o}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if((e==null?void 0:e.id)==t)this.head=e.next;else for(o=1,r=e,e=e==null?void 0:e.next;e!=null;){if(e.id==t){r.next=e.next;break}o++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=Er.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,i;if((o==null?void 0:o.id)==t){let s=this._createLayer(P({id:t,uuid:o.uuid},e));i=s.layer,i.next=o.next,this.head=i,s.color&&(this._layerNodes[0]={id:i.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:i.id,type:"position",position:s.position}),i.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,i.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value}else{r=o,o=o.next;let s=1;for(;o!=null;){if(o.id==t){let a=this._createLayer(P({id:t,uuid:o.uuid},e));i=a.layer,r.next=i,i.next=o.next,a.color&&(this._layerNodes[s]={id:t,type:"color",color:a.color,alpha:a.alpha,mode:a.mode}),a.position&&(this._layerNodes[s]={id:t,type:"position",position:a.position}),i.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,i.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value;break}r=o,o=o.next,s++}}return this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),i}getLayer(t){let e=this.head;for(;e!=null&&e.id!=t;)e=e.next;return e}getLayerByUuid(t){let e=this.head;for(;e!==void 0;){if(e.uuid===t)return e;e=e.next}}getLayers(){let t=[],e=this.head;for(;e!=null;)t.push(e),e=e.next;return t}getLayerPosition(t){let e=this.head,r=0;for(;e!==void 0&&e.id!=t;)r++,e=e.next;return r}getDefines(){}getBeforeProgram(){}getLightingProgram(){}getAfterProgram(){}getVarPrograms(){}getUniforms(){}moveLayer(t,e){let r,o=this.head,i;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)i=o,o=o.next;i.next=o.next,r=o}if(o=this.head,i=void 0,e==0)r.next=this.head,this.head=r;else{for(let a=0;a<e-1;a++)o=o.next;r.next=o==null?void 0:o.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=Er.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new te(t.alpha),r=new be(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let o=new We(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let i=this.head;for(;i.next!=null;)i=i.next;i.next=o}return this.attachLightNodes(this.getLightLayer()),o}rebuildLayerNodes(t,e,r=!1){if(e.type==="light"){let o=r?e.uniforms[`f${e.id}_alpha`]:new te(e.uniforms[`f${e.id}_alpha`].value),i=r?e.uniforms[`f${e.id}_mode`]:new be(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=o,this._material.shadingBlend=i,this._layerNodes.push({id:e.id,type:"light",alpha:o,mode:i}),this.head===void 0?this.head=new We(e.id,e.uuid,{type:"light",alpha:o,mode:i}):t&&(t.next=new We(e.id,e.uuid,{type:"light",alpha:o,mode:i})),this.attachLightNodes(e)}else{let o={type:e.type,id:e.id};for(let i in e.uniforms){let s=e.getName(i);if(!s)continue;let a=`f${e.id}_${s}`;if(Array.isArray(e.uniforms[a].value))o[s]=e.uniforms[a].value.map(l=>l.clone&&!r?l.clone():l);else{let l=e.uniforms[a].value;if(s==="transmissionDepthMap"){o[s]=l;continue}l!=null&&(o[s]=l.clone&&!r&&!l.isRenderTargetTexture?l.clone():l)}}this.addLayer(o)}}attachLightNodes(t){var o,i,s,a,l,c,h,p,d,u,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new _e((i=(o=t==null?void 0:t.getValue("emissive"))==null?void 0:o.clone())!=null?i:0);break;case"Phong":e.shininess=new te((s=t==null?void 0:t.getValue("shininess"))!=null?s:30),e.specular=new _e((l=(a=t==null?void 0:t.getValue("specular"))==null?void 0:a.clone())!=null?l:1118481);break;case"Toon":e.shininess=new te((c=t==null?void 0:t.getValue("shininess"))!=null?c:30),e.specular=new _e((p=(h=t==null?void 0:t.getValue("specular"))==null?void 0:h.clone())!=null?p:1118481);break;case"Physical":e.roughness=new te((d=t==null?void 0:t.getValue("roughness"))!=null?d:.3),e.metalness=new te((u=t==null?void 0:t.getValue("metalness"))!=null?u:0),e.reflectivity=new te((f=t==null?void 0:t.getValue("reflectivity"))!=null?f:.5);break;default:break}Object.keys(e).forEach(g=>{this._material[g]=e[g],r.uniforms[`f${r.id}_${g}`]=e[g]})}clone(t){return new wt(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new We(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),i=t.head.next,s=o;for(;i!=null;)s.next=new We(i.id,void 0,{type:i.type}).fromJSON(i,e),i=i.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,o,!0);let a=o;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){var e;let t=this.head;for(;t!==void 0&&t.type!=="light";)t=(e=t.next)!=null?e:t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){var r,o,i,s,a,l,c,h,p,d,u,f,g,w,y,b,A,N,v,k,L,m,I,x,C,T,O,$,J,ie,de,ce,ve,F,G,B,z,D,R,K,Z,j,V,E,U,ne,q,W,Y,X,Q,se,oe,he,Ge,ge,$e,Te,ht,Lt,Lr,yt,Cr,ao,lo,ke,gt,_t,An,Dn,Bn,En,_n,Gn,Ut,Ei,pt,Oo,zn,co;let e=t.type;switch(e){case"color":{let xe=new _e((r=t.color)!=null?r:5855577),Le=new te((o=t.alpha)!=null?o:1),Se=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Le;let we=new be((i=t.mode)!=null?i:0);return xe.alpha=Le,{layer:new We(t.id,t.uuid,{type:e,color:xe,alpha:Le,calpha:Se,mode:we}),color:xe,alpha:Se,mode:we}}case"texture":{let xe=(s=t.texture)!=null?s:new yr,Le=xe.matrix;t.mat&&Le.copy(t.mat),xe.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new be((l=t.projection)!=null?l:0),Me=new be((c=t.axis)!=null?c:0),Be=new be((h=t.side)!=null?h:0),ze=new vt(t.size?new Qr(t.size[0],t.size[1]):new Qr(100,100)),je=new te((p=t.alpha)!=null?p:1),De=new be((d=t.mode)!=null?d:0),He=new Mt(xe),st=new St((u=t.textureSize)!=null?u:new eo(xe.image?xe.image.width:0,xe.image?xe.image.height:0)),Gt=new pn(He,st,Se,we,Me,Be,ze,je,De),Zt=new Ee(Gt.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:He,textureSize:st,crop:Se,projection:we,axis:Me,side:Be,size:ze,mat:Gt.mat,alpha:je,calpha:Zt,mode:De}),color:Gt,alpha:Zt,mode:De}}case"matcap":{let xe=(f=t.texture)!=null?f:new yr;xe.needsUpdate=!0;let Le=new te((g=t.alpha)!=null?g:1),Se=new Mt(xe),we=new be((w=t.mode)!=null?w:0),Me=new wn(Se,Le,we),Be=new Ee(Me.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:Se,alpha:Le,calpha:Be,mode:we}),color:Me,alpha:Be,mode:we}}case"fresnel":{let xe=new _e((y=t.color)!=null?y:16777215),Le=new te((b=t.bias)!=null?b:.1),Se=new te((A=t.scale)!=null?A:1),we=new te((N=t.intensity)!=null?N:2),Me=new te((v=t.factor)!=null?v:1),Be=new te((k=t.alpha)!=null?k:1),ze=new be((L=t.mode)!=null?L:0),je=new un(xe,Le,Se,we,Me,Be,ze),De=new Ee(je.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,color:xe,bias:Le,scale:Se,intensity:we,factor:Me,alpha:Be,calpha:De,mode:ze}),color:je,alpha:De,mode:ze}}case"rainbow":{let xe=new te((m=t.filmThickness)!=null?m:30),Le=new te((I=t.movement)!=null?I:0),Se=new St((x=t.wavelengths)!=null?x:new eo(0,0,0)),we=new te((C=t.noiseStrength)!=null?C:0),Me=new te((T=t.noiseScale)!=null?T:1),Be=new St((O=t.offset)!=null?O:new eo(0,0,0)),ze=new te(($=t.alpha)!=null?$:1),je=new fn(xe,Le,Se,we,Me,Be,ze),De=new Ee(je.calpha,"f"),He=new be((J=t.mode)!=null?J:0);return{layer:new We(t.id,t.uuid,{type:e,filmThickness:xe,movement:Le,wavelengths:Se,noiseStrength:we,noiseScale:Me,offset:Be,alpha:ze,calpha:De,mode:He}),color:je,alpha:De,mode:He}}case"transmission":{let xe=new te((ie=t.thickness)!=null?ie:10),Le=new te((de=t.ior)!=null?de:1.5),Se=new te((ce=t.roughness)!=null?ce:.5),we=new vt((ve=t.transmissionSamplerSize)!=null?ve:new Qr(2048,2048)),Me=(F=t.transmissionSamplerMap)!=null?F:new yr,Be=(G=t.transmissionDepthMap)!=null?G:new yr,ze=new Mt(Me),je=new Mt(Be),De=window.innerWidth,He=window.innerHeight,st=De>=He?new vt(He/De,1):new vt(1,De/He),Gt=new te((B=t.alpha)!=null?B:1),Zt=new yn(xe,Le,Se,we,ze,je,st,Gt),Tr=new Ee(Zt.calpha,"f"),Vr=new be((z=t.mode)!=null?z:0);return{layer:new We(t.id,t.uuid,{type:e,thickness:xe,ior:Le,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:ze,transmissionDepthMap:je,aspectRatio:st,alpha:Gt,calpha:Tr,mode:Vr}),color:Zt,alpha:Tr,mode:Vr}}case"depth":{let xe=new be((D=t.gradientType)!=null?D:0),Le=new hn((R=t.smooth)!=null?R:!1),Se=new te((K=t.near)!=null?K:50),we=new te((Z=t.far)!=null?Z:200),Me=new te((j=t.isVector)!=null?j:1),Be=new te((V=t.isWorldSpace)!=null?V:0),ze=new St((E=t.origin)!=null?E:new eo),je=new St((U=t.direction)!=null?U:new eo),De=new be((ne=t.num)!=null?ne:0),He;t.colors?He=new wo(De.value+1,t.colors):(He=new wo(De.value+1,new ia(0,0,0,1)),He.value[1]=new ia(1,1,1,1));let st;t.steps?st=new Lo(t.steps.length,t.steps):(st=new Lo(10,1),st.value[0]=0);let Gt=new te((q=t.alpha)!=null?q:1),Zt=new be((W=t.mode)!=null?W:0),Tr=new Sn(xe,Le,Se,we,Me,Be,ze,je,He,st,De,Gt),Vr=new Ee(Tr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:xe,smooth:Le,near:Se,far:we,isVector:Me,isWorldSpace:Be,origin:ze,direction:je,colors:He,steps:st,num:De,alpha:Gt,calpha:Vr,mode:Zt}),color:Tr,alpha:Vr,mode:Zt}}case"noise":{let xe=new te((Y=t.scale)!=null?Y:1),Le=new St((X=t.size)!=null?X:new eo(100,100,100)),Se=new te((Q=t.move)!=null?Q:1),we=new vt((se=t.fA)!=null?se:new Qr(1.7,9.2)),Me=new vt((oe=t.fB)!=null?oe:new Qr(8.3,2.8)),Be=new vt((he=t.distortion)!=null?he:new Qr(1,1)),ze=new Br(t.colorA),je=new Br(t.colorB),De=new Br(t.colorC),He=new Br(t.colorD),st=new te((Ge=t.alpha)!=null?Ge:1),Gt=new be((ge=t.mode)!=null?ge:0),Zt=new be(($e=t.noiseType)!=null?$e:0),Tr=new bn(xe,Le,Se,we,Me,Be,ze,je,De,He,st,Zt),Vr=new Ee(Tr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,scale:xe,size:Le,move:Se,fA:we,fB:Me,distortion:Be,colorA:ze,colorB:je,colorC:De,colorD:He,alpha:st,calpha:Vr,mode:Gt,noiseType:Zt}),color:Tr,alpha:Vr,mode:Gt}}case"normal":{let xe=new St((Te=t.cnormal)!=null?Te:new eo(1,1,1)),Le=new te((ht=t.alpha)!=null?ht:1),Se=new be((Lt=t.mode)!=null?Lt:0),we=new gn(xe,Le),Me=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Me.keywords.alpha=Le,{layer:new We(t.id,t.uuid,{type:e,cnormal:xe,alpha:Le,calpha:Me,mode:Se}),color:we,alpha:Me,mode:Se}}case"gradient":{let xe=new be((Lr=t.gradientType)!=null?Lr:0),Le=new hn((yt=t.smooth)!=null?yt:!1),Se;t.colors?Se=new wo(t.colors.length,t.colors):(Se=new wo(10,new ia(0,0,0,1)),Se.value[1]=new ia(1,1,1,1));let we;t.steps?we=new Lo(t.steps.length,t.steps):(we=new Lo(10,1),we.value[0]=0);let Me=new vt((Cr=t.offset)!=null?Cr:new Qr(0,0)),Be=new vt((ao=t.morph)!=null?ao:new Qr(0,0)),ze=new te((lo=t.angle)!=null?lo:0),je=new te((ke=t.alpha)!=null?ke:1),De=new be((gt=t.mode)!=null?gt:0),He=new xn(xe,Le,Se,we,Me,Be,ze,je),st=new Ee(He.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:xe,smooth:Le,colors:Se,steps:we,offset:Me,morph:Be,angle:ze,alpha:je,calpha:st,mode:De}),color:He,alpha:st,mode:De}}case"displace":{let xe=new be((_t=t.displacementType)!=null?_t:0);if(xe.value===0){let Le=new St((An=t.offset)!=null?An:new eo(0,0,0)),Se=new te((Dn=t.scale)!=null?Dn:10),we=new te((Bn=t.intensity)!=null?Bn:8),Me=new te((En=t.movement)!=null?En:1),Be=new te((_n=t.alpha)!=null?_n:1),ze=new be((Gn=t.mode)!=null?Gn:0),je=new be((Ut=t.noiseType)!=null?Ut:0),De=new fi(xe,we,Me,Le,Se,je);return{layer:new We(t.id,t.uuid,{displacementType:xe,type:e,offset:Le,scale:Se,intensity:we,movement:Me,alpha:Be,mode:ze,noiseType:je}),position:De}}else if(xe.value===1){let Le=(Ei=t.texture)!=null?Ei:new yr,Se=Le.matrix;t.mat&&Se.copy(t.mat),Le.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Me=new Mt(Le),Be=new te((Oo=t.crop)!=null?Oo:0),ze=new te((zn=t.alpha)!=null?zn:1),je=new be((co=t.mode)!=null?co:0),De=new fi(xe,we,Me,Be);return{layer:new We(t.id,t.uuid,{displacementType:xe,type:e,intensity:we,texture:Me,crop:Be,mat:De.mat,alpha:ze,mode:je}),position:De}}return{}}}return{}}blendColors(){let t=this._layerNodes.findIndex(r=>r.type==="color"),e=this._layerNodes.findIndex(r=>r.type==="light");if(t!==-1&&t<e){let r=this._layerNodes[t].color;for(let o=t+1;o<e;++o){let i=this._layerNodes[o];i.type==="color"&&(r=new vn(r,i.color,i.alpha,i.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Ee("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let o=this._layerNodes[r];o.type==="color"&&(t=new vn(t,o.color,o.alpha,o.mode))}"afterColor"in this._material&&(this._material.afterColor=t)}else"afterColor"in this._material&&(this._material.afterColor=void 0)}blendPositions(){let t=this._layerNodes.filter(e=>e.type==="position");if(t.length>0){let e=t[0].position;for(let r=1;r<t.length;++r)t[r]&&(e=new Bt(e,t[r].position,Bt.ADD),e=new Bt(e,new te(.5).setReadonly(!0),Bt.MUL));this._material.position=e}else this._material.position=void 0}cleanupChangedLayer(t){switch(this._layerNodes=this._layerNodes.filter(e=>e.id!==t.id),t.type){case"displace":{this.blendPositions();break}default:{this.blendColors(),this.blendAfterColors();break}}}};var Vt=class extends sS{constructor(e,r,o){super(o);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e!=null?e:new cn(new ut(ut.PROJECTION)),this.fragment=r!=null?r:new cn(new _e(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}_getLayerStack(e){let r=new wt(this);return e&&(async()=>{for(;e.image===void 0;)await new Promise(o=>requestAnimationFrame(o));r.addLayerAt(1,{type:"texture",texture:e}),this.dispose()})(),r}clampUniformsForPreview(e,r){let o=(i,s,a)=>Math.min(Math.max(i,s),a);if(this.userData.layers){for(let i of this.userData.layers.getLayers())if(i.type=="displace"){this.uniformsBackup[`f${i.id}_intensity`]=i.uniforms[`f${i.id}_intensity`].value;let s=o(i.uniforms[`f${i.id}_intensity`].value,e,r);i.uniforms[`f${i.id}_intensity`].value=s}}}restoreClampedUniforms(){if(this.userData.layers)for(let e of this.userData.layers.getLayers())e.type=="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let r=0;r<this.updaters.length;++r)e.updateNode(this.updaters[r])}build(e){var o;e=e!=null?e:{};let r=(o=e.builder)!=null?o:new oa;return r.setMaterial(this,e.renderer),r.build(this.vertex,this.fragment),this.vertexShader=r.getCode("vertex"),this.fragmentShader=r.getCode("fragment"),this.defines=r.defines,this.uniforms=r.uniforms,this.extensions=r.extensions,this.updaters=r.updaters,this.fog=r.requires.fog,this.lights=r.requires.lights,this.transparent=r.requires.transparent||this.blending>nS,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let o in e)this[o]=e[o];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let o=super.toJSON(e);return o.type="ShaderMaterial",o.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},o.vertex=this.vertex.toJSON(e).uuid,o.fragment=this.fragment.toJSON(e).uuid,delete o.vertexShader,delete o.fragmentShader,delete o.color,delete o.shininess,delete o.specular,delete o.roughness,delete o.metalness,delete o.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=o),this.userData.layers=r,o}fromJSON(e,r){var o;this.defines=(o=e.defines)!=null?o:{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:aS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}};Object.defineProperties(Vt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(n){n===!0&&this.version++,this.needsCompile=n},get:function(){return this.needsCompile}}});import{UniformsLib as lS,UniformsUtils as cS}from"three";var na=class extends pe{constructor(){super("basic");this.nodeType="Basic";this.color=new _e(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(cS.merge([lS.fog])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
694
694
|
`));let i=["#include <beginnormal_vertex>",`
|
|
695
695
|
#if !defined( USE_LAYER_DISPLACE )
|
|
696
696
|
#include <defaultnormal_vertex>
|
|
@@ -710,7 +710,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
710
710
|
`];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>"),r=i.join(`
|
|
711
711
|
`)}else{this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),i=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=i!==void 0,e.addParsCode(["#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
712
712
|
`));let a=["#include <normal_fragment_begin>",o.code];i&&a.push(i.code,"#ifdef ALPHATEST"," if ( "+i.result+" <= ALPHATEST ) discard;","#endif"),s?a.push(s.code,`vec3 outgoingLight = ${o.result};`,`vec3 finalColor = spe_blend(outgoingLight, ${s.result}, 1.0, SPE_BLENDING_NORMAL);`):a.push(`vec3 finalColor = ${o.result};`),i?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${i.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),r=a.join(`
|
|
713
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var sa=class extends Vt{constructor(e=new na,r){super(e,e,r);this.type="BasicNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}};var mt=class extends sa{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new mt(void 0,o);return i.fromJSON(e,r),i}static fromMaterial(t){let e=new mt(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as
|
|
713
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var sa=class extends Vt{constructor(e=new na,r){super(e,e,r);this.type="BasicNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}};var mt=class extends sa{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new mt(void 0,o);return i.fromJSON(e,r),i}static fromMaterial(t){let e=new mt(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as uu,UniformsUtils as hS}from"three";var aa=class extends pe{constructor(){super("phong");this.nodeType="Phong";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new te(30),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(hS.merge([uu.fog,uu.lights])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
714
714
|
`));let i=["#include <beginnormal_vertex>",`
|
|
715
715
|
#ifndef USE_LAYER_DISPLACE
|
|
716
716
|
#include <defaultnormal_vertex>
|
|
@@ -744,7 +744,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
744
744
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
745
745
|
}
|
|
746
746
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
747
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var la=class extends Vt{constructor(e=new aa,r){super(e,e,r);this.type="PhongNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var Ot=class extends la{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new Ot(void 0,o);return i.fromJSON(e,r),i}static fromMaterial(t){let e=new Ot(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as
|
|
747
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var la=class extends Vt{constructor(e=new aa,r){super(e,e,r);this.type="PhongNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var Ot=class extends la{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new Ot(void 0,o);return i.fromJSON(e,r),i}static fromMaterial(t){let e=new Ot(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as mu,UniformsUtils as pS}from"three";var ca=class extends pe{constructor(){super("lambert");this.nodeType="Lambert";this.color=new _e(5855577),this.emissive=new _e(0),this.emissiveIntensity=new te(1),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(pS.merge([mu.fog,mu.lights])),e.addParsCode(["varying vec3 vViewPosition;","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(`
|
|
748
748
|
`));let i=["#include <beginnormal_vertex>",`
|
|
749
749
|
#ifndef USE_LAYER_DISPLACE
|
|
750
750
|
#include <defaultnormal_vertex>
|
|
@@ -850,7 +850,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
850
850
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
851
851
|
}
|
|
852
852
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
853
|
-
`)}return r}copy(e){return super.copy(e),this.emissiveIntensity=e.emissiveIntensity.clone(),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),e.emissive&&(this.emissive=e.emissive.clone()),this}};var ha=class extends Vt{constructor(e=new ca,r){super(e,e,r);this.type="LambertNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get emissive(){return this.fragment.emissive}set emissive(e){this.fragment.emissive=e}get emissiveIntensity(){return this.fragment.emissiveIntensity}set emissiveIntensity(e){this.fragment.emissiveIntensity=e}};var gi=class extends ha{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new gi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{UniformsLib as
|
|
853
|
+
`)}return r}copy(e){return super.copy(e),this.emissiveIntensity=e.emissiveIntensity.clone(),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),e.emissive&&(this.emissive=e.emissive.clone()),this}};var ha=class extends Vt{constructor(e=new ca,r){super(e,e,r);this.type="LambertNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get emissive(){return this.fragment.emissive}set emissive(e){this.fragment.emissive=e}get emissiveIntensity(){return this.fragment.emissiveIntensity}set emissiveIntensity(e){this.fragment.emissiveIntensity=e}};var gi=class extends ha{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new gi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{UniformsLib as fu,UniformsUtils as dS}from"three";var pa=class extends pe{constructor(){super("toon");this.nodeType="Toon";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new te(30),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(dS.merge([fu.fog,fu.lights])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
854
854
|
`));let i=["#include <beginnormal_vertex>",`
|
|
855
855
|
#ifndef USE_LAYER_DISPLACE
|
|
856
856
|
#include <defaultnormal_vertex>
|
|
@@ -904,7 +904,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
904
904
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
905
905
|
}
|
|
906
906
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
907
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var
|
|
907
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var da=class extends Vt{constructor(e=new pa,r){super(e,e,r);this.type="ToonNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get specular(){return this.fragment.specular}set specular(e){this.fragment.specular=e}get shininess(){return this.fragment.shininess}set shininess(e){this.fragment.shininess=e}};var xi=class extends da{constructor(t,e,r){super(e,t),this.userData.type="ToonMaterial",this.userData.category="Toon",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new xi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{UniformsLib as ql,UniformsUtils as uS}from"three";var ua=class extends pe{constructor(){super("standard");this.nodeType="Standard";this.color=new _e(5855577),this.roughness=new te(.3),this.metalness=new te(0),this.reflectivity=new te(.5),this.shadingAlpha=new te(1),this.shadingBlend=new be(0)}build(e){let r;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(uS.merge([ql.fog,ql.lights])),ql.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
908
908
|
`));let i=["#include <beginnormal_vertex>",`
|
|
909
909
|
#if !defined( USE_LAYER_DISPLACE )
|
|
910
910
|
#include <defaultnormal_vertex>
|
|
@@ -922,8 +922,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
922
922
|
#include <begin_vertex>
|
|
923
923
|
#endif /* !USE_LAYER_DISPLACE */
|
|
924
924
|
`];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>"),r=i.join(`
|
|
925
|
-
`)}else{let o={gamma:!0};this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),h=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,
|
|
926
|
-
`));let
|
|
925
|
+
`)}else{let o={gamma:!0};this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let i=this.color.flow(e,"c",{slot:"color",context:o}),s=this.roughness.flow(e,"f"),a=this.metalness.flow(e,"f"),l=this.shadingAlpha.flow(e,"f"),c=this.shadingBlend.flow(e,"i"),h=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,p=this.alpha?this.alpha.flow(e,"f"):void 0,d=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","#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(`
|
|
926
|
+
`));let u=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
927
927
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
928
928
|
vec3 viewdx = dFdx(vViewPosition);
|
|
929
929
|
vec3 viewdy = dFdy(vViewPosition);
|
|
@@ -931,12 +931,12 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
931
931
|
if (dot(normal, faceNormal) < 0.0) {
|
|
932
932
|
normal *= -1.0;
|
|
933
933
|
}
|
|
934
|
-
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];
|
|
934
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];u.push(i.code," vec3 diffuseColor = "+i.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",s.code," float roughnessFactor = "+s.result+";",a.code," float metalnessFactor = "+a.result+";"),p&&u.push(p.code,"#ifdef ALPHATEST"," if ( "+p.result+" <= ALPHATEST ) discard;","#endif"),u.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),u.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),d?u.push(d.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+d.result+" ) ), diffuseColor, metalnessFactor );"):u.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),u.push("#include <lights_fragment_begin>"),u.push("#include <lights_fragment_end>"),u.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),u.push(`
|
|
935
935
|
if (outgoingLight != diffuseColor) {
|
|
936
936
|
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
937
937
|
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
938
938
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
939
939
|
}
|
|
940
|
-
`),h&&
|
|
941
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ma=class extends Vt{constructor(e=new da,r){super(e,e,r);this.type="StandardNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}};var bi=class extends ma{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new bi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{Color as $l}from"three";function Xe(n,t){let e;if(typeof n=="string"){let r=t==null?void 0:t.getColor(n);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 Dt(0,0,0,0))}else return"a"in n?new Dt(n.r,n.g,n.b,n.a):new Dt(n.r,n.g,n.b,1);return e}import{Matrix3 as yd,Texture as Wl,Vector2 as Ln,Vector3 as eo,Vector4 as gd}from"three";function xd(n,t){switch(n.data.type){case"light":return ir(n);case"fresnel":return fS(n,t);case"gradient":return yS(n);case"depth":return gS(n);case"normal":return xS(n);case"noise":return bS(n,t);case"texture":return vS(n,t);case"rainbow":return SS(n);case"transmission":return wS(n,t);case"matcap":return LS(n,t);case"displace":return CS(n);case"color":default:return mS(n,t)}}function bd(n){return{type:n.data.type}}function ir(n){let{alpha:t,mode:e}=n.data;return H(P({},bd(n)),{alpha:t,mode:e})}function mS(n,t){return H(P({},ir(n)),{color:Xe(n.data.color,t)})}function fS(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n.data;return H(P({},ir(n)),{color:Xe(s,t),bias:e,scale:r,intensity:o,factor:i})}function yS(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n.data;return H(P({},ir(n)),{gradientType:t,smooth:e,colors:r.map(l=>new gd(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Ln(...s),morph:new Ln(...a),angle:i})}function gS(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:l,steps:c,smooth:h,num:p}=n.data;return H(P({},ir(n)),{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new eo(...s),direction:a?new eo(...a):new eo(1,0,0),num:p,colors:l.map(u=>new gd(u[0],u[1],u[2],u[3])),steps:c,smooth:h})}function xS(n){let{cnormal:t}=n.data;return H(P({},ir(n)),{cnormal:new eo(t[0],t[1],t[2])})}function bS(n,t){let{data:e}=n;return H(P({},ir(n)),{scale:e.scale,move:e.move,fA:new Ln(...e.fA),fB:new Ln(...e.fB),size:new eo(...e.size),distortion:new Ln(...e.distortion),colorA:Xe(e.colorA,t),colorB:Xe(e.colorB,t),colorC:Xe(e.colorC,t),colorD:Xe(e.colorD,t),noiseType:e.noiseType})}function vS(n,t){let{projection:e,axis:r,side:o,crop:i,size:s}=n.data,{image:a,wrapping:l,repeat:c,offset:h}=n.data.texture,p=new Wl,u;if(typeof a=="string")u=t==null?void 0:t.getImage(a);else{let d=new Image;d.src=a.data,d.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad(a.data))},u=d}return p.image=u,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,H(P({},ir(n)),{texture:p,mat:new yd().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:i,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(o),size:s})}function SS(n){let{data:t}=n;return H(P({},ir(n)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new eo(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new eo(...t.offset)})}function wS(n,t){let{data:e}=n;return H(P({},ir(n)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function LS(n,t){let e=new Wl,{image:r}=n.data.texture,o;if(typeof r=="string")o=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=r.data,s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad(r.data))},o=s}e.image=o;let i=16777215;return H(P({},ir(n)),{color:i,texture:e})}function CS(n){let{data:t}=n,e=H(P({},bd(n)),{intensity:t.intensity});if(t.displacementType==="noise")return H(P({},e),{offset:new eo(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new Wl,o=new yd().setUvTransform(0,0,1,1,0,0,0);return H(P({},e),{texture:r,mat:o,crop:t.crop})}}function vd(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as Ld,Vector4 as TS}from"three";var vi;(t=>{function n(e){return new Ld(e.x,e.y,e.z).getHex()}t.getHex=n})(vi||(vi={}));var Sd;(t=>{function n(e){return new TS(e.r,e.g,e.b,e.a)}t.getThreeVector4=n})(Sd||(Sd={}));var wd;(e=>{function n(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=n;function t(r){return new Ld(r.r,r.g,r.b).getHex()}e.getHex=t})(wd||(wd={}));function Cn(n,t){return typeof n=="string"?t.getMaterialOrDeletedPlaceholder(n):Jl(n,t)}function Cd(n,t){return n.map(e=>Cn(e,t))}function Jl(n,t){var s,a;let e=(s=n.layers)!=null?s:go.defaultTwoLayerData("phong").layers,r=NS(e),o;switch(r.category){case"basic":o=new mt;break;case"lambert":{o=new gi;break}case"toon":{o=new xi;break}case"physical":o=new bi;break;case"phong":default:{o=new Ot;break}}o.name=(a=n.name)!=null?a:"Untitled Material";let i=o.userData.layers;MS(i);for(let l=e.length-1;l>=0;l--)OS(i,e[l],t);switch(r.category){case"basic":break;case"lambert":{let h=o,u=Xe(r.emissive,t);u instanceof $l?h.emissive.value=u:h.emissive.value.setHex(vi.getHex(u));break}case"toon":{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof $l?h.specular.value=u:h.specular.value.setHex(vi.getHex(u));break}case"physical":let l=o,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof $l?h.specular.value=u:h.specular.value.setHex(vi.getHex(u));break}}return i.blendColors(),i.blendAfterColors(),i.blendPositions(),o}function NS(n){for(let t of n)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function MS(n){for(let t of n.getLayers())n.removeLayer(t.id)}function OS(n,t,e){let r=xd(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let o=n.addLayer(r);o.uuid=t.id;for(let i in t.data)vd(i,o,t.data)}import{Mesh as zS,Matrix4 as RS}from"three";import{Matrix4 as Yl}from"three";import{Box3 as Id,Line3 as $t,Matrix4 as Kl,Vector3 as Ve}from"three";import{HemisphereLight as Td}from"three";var fa=n=>"isEntity"in n,br=n=>"isAbstractMesh"in n,Nd=n=>n.objectType==="CombinedCamera";var _r=n=>"objectHelper"in n;function PS(n,t){var r;let e=!1;if(t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray((r=t.hiddenMatrix)!=null?r:Wr.identity)),e&&(n.updateMatrix(),br(n))){let o=n.invalidateDownstreamBooleanData();o.isBooleanMesh&&o.recomputeBoolean()}t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function IS(n,t){PS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.isEntity?n.visibility=t.visible:n.visible=t.visible)}function Md(n,t,e){IS(n,t),t.color!==void 0&&(n.color=Xe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Td)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Td)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0),t.helper!==void 0&&_r(n)&&(n.enableHelper=t.helper,n.gizmos.shadowmap.visible=t.helper)}function Od(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 Si=new Id,ft=new Ve,le=new Ve,tt=new Kl;function AS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=e;h<r;h++){let p=t.getX(h),u=t.getY(h),d=t.getZ(h);p<o&&(o=p),u<i&&(i=u),d<s&&(s=d),p>a&&(a=p),u>l&&(l=u),d>c&&(c=d)}return n.min.set(o,i,s),n.max.set(a,l,c),n}var Pd=(n,t,e,r)=>{var o;if(br(n)){let i=n.geometry.userData.parameters,s=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?ft.copy(n.originalGeometry.boundingSphere.center):s!==void 0&&(AS(Si,s,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:s.count),Si.getCenter(ft)),n.forceComputeSize?Si.getSize(le).multiplyScalar(.5):le.set(i.width,i.height,(o=i.depth)!=null?o:0).multiplyScalar(.5)}else if(_r(n)&&r===!0){let i=n.geometryHelper.getAttribute("position");Si.setFromArray(i.array),Si.getCenter(ft),Si.getSize(le).multiplyScalar(.5)}else ft.setScalar(0),le.setScalar(0);tt.copy(t).multiply(n.matrixWorld),le.x===0&&le.y===0&&le.z===0?e.push(new Ve(ft.x,ft.y,ft.z).applyMatrix4(tt)):e.push(new Ve(-le.x,le.y,le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,-le.y,le.z).add(ft).applyMatrix4(tt),new Ve(le.x,-le.y,le.z).add(ft).applyMatrix4(tt),new Ve(le.x,le.y,le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,-le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(le.x,-le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(le.x,le.y,-le.z).add(ft).applyMatrix4(tt))},Tn=class extends Id{constructor(){super(...arguments);this.matrix=new Kl;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 Kl().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Pd(s,r,i,e.enableHelper===!0)}):Pd(e,r,i,e.enableHelper===!0),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(tt.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(le).multiplyScalar(.5),this.getCenter(ft),tt.copy(this.matrix).setPosition(ft),this.vertices=[new Ve(-le.x,le.y,le.z).applyMatrix4(tt),new Ve(-le.x,-le.y,le.z).applyMatrix4(tt),new Ve(le.x,-le.y,le.z).applyMatrix4(tt),new Ve(le.x,le.y,le.z).applyMatrix4(tt),new Ve(-le.x,le.y,-le.z).applyMatrix4(tt),new Ve(-le.x,-le.y,-le.z).applyMatrix4(tt),new Ve(le.x,-le.y,-le.z).applyMatrix4(tt),new Ve(le.x,le.y,-le.z).applyMatrix4(tt)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new $t(this.vertices[0],this.vertices[3]),new $t(this.vertices[1],this.vertices[2]),new $t(this.vertices[5],this.vertices[6]),new $t(this.vertices[4],this.vertices[7]),new $t(this.vertices[0],this.vertices[1]),new $t(this.vertices[3],this.vertices[2]),new $t(this.vertices[7],this.vertices[6]),new $t(this.vertices[4],this.vertices[5]),new $t(this.vertices[0],this.vertices[4]),new $t(this.vertices[1],this.vertices[5]),new $t(this.vertices[2],this.vertices[6]),new $t(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new Ve))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new Ve().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new Ve().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new Ve().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new Ve().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new Ve().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new Ve().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};import{Object3D as DS,Matrix4 as BS,Light as ES}from"three";function Nn(n){let t=[];for(let e in n){let r=n[e];delete r.metadata,t.push(r)}return t}function _S(n){let t=[];for(let e in n)t.push(n[e]);return t}var ya=n=>class extends n{hasEntityChild(){return this.children.some(e=>fa(e))}isDescendantOf(e){e instanceof DS&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new BS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),fa(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}toJSON(e){let r=e===void 0,o={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},o.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let i={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(i.name=this.name),i.matrix=this.matrix.toArray(),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),i.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(i.userData=this.userData),this.children.length>0){i.children=[];for(let s of this.children)(fa(s)||s instanceof ES)&&i.children.push(s.toJSON(e).object)}if(r){let s=Nn(e.geometries),a=Nn(e.materials),l=Nn(e.textures),c=Nn(e.images),h=Nn(e.interactionStates),p=_S(e.nodes);s.length>0&&(o.geometries=s),a.length>0&&(o.materials=a),l.length>0&&(o.textures=l),c.length>0&&(o.images=c),h.length>0&&(o.interactionStates=h),p.length>0&&(o.nodes=p)}return o.object=i,o}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var Jt=n=>"isEntity"in n,Ad=n=>"isAbstractMesh"in n,Kt=n=>class extends ya(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Yl;this._singleBBox=new Tn;this._recursiveBBox=new Tn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Jt(o)&&o.traverseEntity(i=>{_r(i)&&i.visible&&(i.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{Jt(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)Jt(o)&&o.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)Jt(i)&&this.add(i.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)Jt(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Yl,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)Jt(i)&&i.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),i=o.object;return this.raycastLock===!0&&(i.raycastLock=!0),this.scaleLock===!0&&(i.scaleLock=!0),i.hiddenMatrix=this.hiddenMatrix.toArray(),o}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let o=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new Yl}),this.copy(r),r.children=o,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return $o(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o=P({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return $o(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as GS,Vector3 as Mn,Euler as Dd,MathUtils as to}from"three";var Lo=class extends GS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Mn),i=.1;this.parameters=fs.defaultData(o.toArray(),i),po(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(e){let r=this.object.material.map(o=>o.clone());for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let r=this.object.material.clone();for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=this.object.shallowClone(!1);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*to.DEG2RAD,i=r.end*to.DEG2RAD,s=o-i,a=new Dd(r.rotation[0]*to.DEG2RAD,r.rotation[1]*to.DEG2RAD,r.rotation[2]*to.DEG2RAD),l;switch(r.axis){case"z":l=new Mn(0,0,1);break;case"y":l=new Mn(0,1,0);break;default:case"x":l=new Mn(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let p=s/e.count*c-o;switch(r.axis){case"x":h.rotation.set(0,p,0);break;case"y":h.rotation.set(0,0,p);break;case"z":h.rotation.set(p,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Dd(r.rotation[0]*to.DEG2RAD,r.rotation[1]*to.DEG2RAD,r.rotation[2]*to.DEG2RAD);for(let[i,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Mn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let l=0;l<o.count[1];l++)for(let c=0;c<o.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=o.size[0]*a-s.x,h.position.y=o.size[1]*l-s.y,h.position.z=o.size[2]*c-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*i,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),po(this.parameters,e),this.update(),this}};var Co=n=>n!==null&&n.isBooleanMesh,rt=class extends Kt(zS){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new RS;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=Xl[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),a=r.uuid;if(this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,o){sn.resizeGeometry(this.geometry,{width:e,height:r,depth:o})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=On(r),i=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new Lo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Lo(this)),this.cloner.fromClonerState(e))}fromState(e,r){var o,i,s;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(o=e.castShadow)!=null?o:!0,this.receiveShadow=(i=e.receiveShadow)!=null?i:!0,this.booleanExclude=(s=e.booleanExclude)!=null?s:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Yt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),this.parent&&Co(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)br(e)&&(e.freeBooleanPointer(),Co(e)&&e.invalidateUpstreamBooleanData())}};var US=new Zl(0,0,1),Bd=new Zl,Ed=new Zl,_d=new jS,ro=class extends rt{constructor(e=ut.create({}),r=new mt({side:FS})){var o;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new VS;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){var r,o;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),_d.getNormalMatrix(this.matrixWorld),Bd.copy(US).applyMatrix3(_d).normalize(),Ed.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Bd,Ed)}clone(e){let r=this.shape.clone(),o=this.material.clone(),i=this.geometry.userData,s=ut.create(Object.assign({},i,{shape:r})),a=new ro(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){rt.prototype.raycast.call(this,e,r)}};function ga(n,t){return HS(n)}function HS(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Oe.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>{var o;return r.materialIndex=Math.max((o=r.materialIndex)!=null?o:0,0)}),t.geometry=new kS().parse(n));let e;try{e=On(t)}catch(r){console.error(r)}if(!e){let r=Oe.createFromState(ti.defaultData(),100,100);t.shape=r,e=On(t)}return e}var fe;ea.then(n=>{fe=n});var Rd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Fd=new Uint32Array([0,1,2,3]),Vd=new Uint8Array([4]),nr=class{static build(n,t,e,r){let o,i,s;if((n==null?void 0:n.positionWASM)!==void 0){t&&t!==0&&(fe.free_bvh(t),fe.free_subdivision_surface(t));try{o=nr.allocate(n,r)}catch(a){console.error(a,n),o=nr.allocate({positionWASM:Rd,indexWASM:Fd,verticesPerFaceWASM:Vd},r)}fe.set_destination_refinement_level(o,0),i=nr.buildLevel(o,!0,e)}else o=t;if(n!==void 0&&n.subdivisions!==void 0){let a=WS(n.subdivisions,n.positionWASM.length);fe.set_destination_refinement_level(o,a),a>0?s=nr.buildLevel(o,!1,e):s=null}return{subdivPointer:o,originalGeometry:i,subdividedGeometry:s}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:ga(n),r,o,i,s;return{positions:r,triIndices:s}=ic(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:i}=nc(r,s,e),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){var N;let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=Rd,r=Fd,o=Vd);let a=e.length,l=r.length,c=o.length,h=e.length+i.length+s.length,p=r.length+o.length,u=h*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,d=h*Float32Array.BYTES_PER_ELEMENT,f=p*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(u),w=new Float32Array(fe.HEAPF32.buffer,g,h),y=new Uint32Array(fe.HEAPU32.buffer,g+d,p);w.set(e,0),w.set(i,e.length),w.set(s,e.length+i.length),y.set(r,0),y.set(o,r.length);let b;(N=n==null?void 0:n.scaleBaked)!=null&&N.some(v=>v!==1)&&(b=new qS().makeScale(...n.scaleBaked)),t&&(b?b.premultiply(t):b=t);let A=b?fe.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):fe.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return fe._free(g),A}static buildLevel(n,t,e,r,o){let i=o?fe.get_mesh_data2(n,t?fe.Level.CONTROL:fe.Level.REFINED,e!=null?e:!t,o.elements):fe.get_mesh_data(n,t?fe.Level.CONTROL:fe.Level.REFINED,e!=null?e:!t),s=8,a=fe.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(4,4+4),c=0,h=fe.HEAPU32[a[c]>>2],p=fe.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=fe.HEAPU32[a[c]>>2],d=fe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=fe.HEAPU32[a[c]>>2],g=fe.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let w=fe.HEAPU32[a[c]>>2],y=fe.HEAPU32.subarray(w>>2,(w>>2)+l[c]);if(c++,r===void 0){let b=new Gd;if(b.setIndex(new Ql(y,1)),b.setAttribute("position",new ec(p,3)),b.setAttribute("normal",new ec(d,3)),t){b.setAttribute("faceMap",new Ql(g,1));let A=new Float32Array(d.length/3*4).fill(0);b.setAttribute("color",new zd(A,4))}return fe.free_mesh_data(i),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,fe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=fe.get_wireframe_data_for_base_level(n),o=4,i=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,l=fe.HEAPU32[i[a]>>2],c=fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=fe.HEAPU32[i[a]>>2],p=fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new Gd;u.setAttribute("position",new ec(c,3));let d=new Float32Array(c.length);for(let f=0,g=c.length;f<g;)d[f++]=e.r,d[f++]=e.g,d[f++]=e.b;return u.setAttribute("color",new zd(d,3)),u.setIndex(new Ql(p,1)),fe.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){t||fe.set_destination_refinement_level(n,1);let r=e?fe.get_topological_data2(n,t?fe.Level.CONTROL:fe.Level.REFINED,e.elements):fe.get_topological_data(n,t?fe.Level.CONTROL:fe.Level.REFINED),o=6,i=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,l=fe.HEAPU32[i[a]>>2],c=new Float32Array(fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=fe.HEAPU32[i[a]>>2],p=new Uint32Array(fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=fe.HEAPU32[i[a]>>2],d=new Uint8Array(fe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return fe.free_topological_data(r),{positions:c,indices:p,verticesPerFace:d}}};function WS(n,t){let e=n;return e=Math.min(e,3-Math.ceil(Math.log(t/172e3)/Math.log(4))),Math.max(e,0)}var jd=["getX","getY","getZ"];function ic(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],a=1e4;for(let c=0;c<r;c++){let h=t?t.getX(c):c,p="";for(let u=0;u<3;u++)p+=`${~~(n[jd[u]](h)*a)},`;if(p in e)i.push(e[p]);else{for(let u=0;u<3;u++)s.push(n[jd[u]](h));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:s,triIndices:l}}var xa=new ba,tc=new ba,rc=new ba,oc=new ba;function nc(n,t,e){var i;let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<s.length;c+=2)a+=(s[c]-s[(c===0?s.length:c)-2])*(s[c+1]+s[(c===0?s.length:c)-1]);n.length=0;let l=0;if(a<0)for(let c=0;c<s.length;c+=2)n.push(s[c],s[c+1],0),r.push(l++);else for(let c=s.length-2;c>=0;c-=2)n.push(s[c],s[c+1],0),r.push(l++);return o.push(l),{indices:r,verticesPerFace:o}}for(let s=0,a=(i=e.capStartIndex)!=null?i:t.length;s<a;)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]){xa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),tc.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),rc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),oc.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),tc.sub(xa).normalize(),rc.sub(xa).normalize(),oc.sub(xa).normalize();let l=tc.cross(rc).dot(oc);Math.abs(l)>.005?(r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3):(r.push(t[s],t[s+1],t[s+4],t[s+5]),o.push(4),s+=6)}else r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],l=0;for(let c=0,h=0;c<n.length;c+=3,h++)n[c+2]===0&&(s.push(h),l++),n[c+2]===e.userData.parameters.depth&&a.push(h);if(e.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}s.reverse(),r.push(...s,...a),o.push(l,l)}return{indices:r,verticesPerFace:o}}var Yt={};xc(Yt,{calcBoolean:()=>XS,calcBooleanTopological:()=>YS,freeMeshSet:()=>ew,getMeshSet:()=>ZS,transformMeshSet:()=>QS});var $S,Ud=new Promise(n=>{$S=n});import{Float32BufferAttribute as kd,Sphere as JS}from"three";var Ce,wi;Ud.then(n=>Ce=n);function KS(n,t){let e,{positions:r,triIndices:o}=ic(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:a}=nc(r,o,n);i=a.length,e=[];for(let l=0,c=0;l<i;l++){e.push(a[l]);for(let h=0;h<a[l];h++)e.push(s[c++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let a=0,l=0;l<e.length;)e[l++]=3,i++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:r,faceIndices:e,nFaces:i}}function Hd(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 qd(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 YS(n,t){wi===void 0&&(wi=Ce.init_csg());let e=Ce.compute_csg(wi,Hd(n),n.length,qd(t),!0),r=6,o=Ce.HEAPU32.subarray(e>>2,(e>>2)+r),i=o.subarray(3,3+3),s=0,a=Ce.HEAPU32[o[s]>>2],l=new Float32Array(Ce.HEAPF32.subarray(a>>2,(a>>2)+i[s]));s++;let c=Ce.HEAPU32[o[s]>>2],h=new Uint32Array(Ce.HEAPU32.subarray(c>>2,(c>>2)+i[s]));s++;let p=Ce.HEAPU32[o[s]>>2],u=new Uint8Array(Ce.HEAPU32.subarray(p>>2,(p>>2)+i[s]));return Ce.free_mesh_data(e),{positions:l,indices:h,verticesPerFace:u}}function XS(n,t,e){wi===void 0&&(wi=Ce.init_csg());let r=Ce.compute_csg(wi,Hd(n),n.length,qd(t),!1),o=5,i=Ce.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+3),a=0,l=Ce.HEAPU32[i[a]>>2],c=Ce.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=Ce.HEAPU32[i[a]>>2],p=Ce.HEAPF32.subarray(h>>2,(h>>2)+s[a]);a++;let u=s[a];e.setAttribute("position",new kd(c,3)),e.setAttribute("normal",new kd(p,3));let d=Ce.HEAPF32.subarray((r>>2)+5,(r>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new JS),e.boundingSphere.center.set(d[0],d[1],d[2]),e.boundingSphere.radius=(d[3]**2+d[4]**2+d[5]**2)**.5,e.userData.parameters={width:d[3]*2,height:d[4]*2,depth:d[5]*2},Ce.free_mesh_data(r),u}function ZS(n,t){if(Ce===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let g=n.userData;o=g.verticesPerFace.length,e=g.positions,r=Array(g.verticesPerFace.reduce((w,y)=>w+y,0)+o);for(let w=0,y=0,b=0;w<g.verticesPerFace.length;w++){r[b++]=g.verticesPerFace[w];for(let A=0;A<g.verticesPerFace[w];A++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=KS(n,t));let i=e.length,s=r.length,a=e.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,p=l*Uint32Array.BYTES_PER_ELEMENT,u=Ce._malloc(c),d=new Float32Array(Ce.HEAPF32.buffer,u,a),f=new Uint32Array(Ce.HEAPU32.buffer,u+h,l);return d.set(e,0),f.set(r,0),Ce.get_mesh_set(u,i,u+h,s,o)}function QS(n,t){Ce.transform_mesh_set(n,t.elements)}function ew(n){Ce.free_mesh_set(n)}var Xl={ConeGeometry:pu,CubeGeometry:uu,CylinderGeometry:hu,DodecahedronGeometry:du,EllipseGeometry:zu,HelixGeometry:Uu,IcosahedronGeometry:ku,LatheGeometry:Hu,NonParametricGeometry:Ju,PolygonGeometry:Ku,PyramidGeometry:Yu,RectangleGeometry:Zs,SphereGeometry:Xu,PlaneGeometry:Zu,StarGeometry:Qu,TextFrameGeometry:Qs,TorusGeometry:ed,TorusKnotGeometry:td,TriangleGeometry:rd,VectorGeometry:ut},On=n=>Xl[n.type].create(n);import{VideoTexture as tw}from"three";var Wd=n=>n.tagName==="VIDEO",To=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Wd(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.userData.layers,i=o.getLayers();for(let s=0;s<i.length;s++){let a=i[s];hd(a)&&(To.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),o.updateLayerUniform())}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;Wd(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Li=class extends rt{constructor(e,r=new mt){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,o;if(e instanceof tw){let a=e.image;r=a.videoWidth*.5,o=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,o=a.height*.5}let i=Zs.create({parameters:{width:r,height:o}}),s=new mt;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Li(i,s)}};import{BufferGeometry as $d,Matrix4 as rw}from"three";var ow=new rw;var va=class extends rt{constructor(e=new $d,r=new Ot){super(e,r);this.booleanOp=2;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];Co(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Ad(i)&&i.booleanExclude===!1&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Yt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Yt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else Co(i)&&i.needsTransformForDownstream===!0?(Yt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Yt.transformMeshSet(i.booleanMeshSetAddress,ow.multiplyMatrices(i.matrix,i.booleanMatrixInvOld)),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Yt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new $d,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere,this.booleanMeshSetAddress=Yt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry),this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}updateGeometry(e){var o;this.booleanOp=(o=e.parameters.operation)!=null?o:this.booleanOp,this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as bw,OrthographicCamera as vw,PerspectiveCamera as Sw,Vector3 as jt,Object3D as Yd,Quaternion as ww}from"three";import{BoxBufferGeometry as iw}from"three";var vr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new iw(30,30,30),t};import{Camera as cw,LineSegments as hw,BufferGeometry as pw,LineBasicMaterial as uw,Color as ac,Vector3 as dw,Float32BufferAttribute as Kd}from"three";import{Ray as nw,Sphere as sw,Matrix4 as aw,Vector3 as Gr}from"three";var Sa=new nw,sc=new sw,Jd=new aw,Sr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),sc.copy(i.boundingSphere),sc.applyMatrix4(s),e.ray.intersectsSphere(sc)===!1||(Jd.copy(s).invert(),Sa.copy(e.ray).applyMatrix4(Jd),i.boundingBox!==null&&Sa.intersectsBox(i.boundingBox)===!1))return;let a,l,c,h,p=i.index,u=i.attributes.position,d=i.drawRange,f,g;if(o===!1){let y=Math.max(0,d.start),b=Math.min(p.count,d.start+d.count);for(f=y,g=b;f<g;f+=3)if(l=p.getX(f),c=p.getX(f+1),h=p.getX(f+2),a=w(n,e,Sa,u,l,c,h),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let b=i.attributes.position,A=new Gr,N=new Gr,v=new Gr,k=new Gr,L=2,I=1/((n.scale.x+n.scale.y+n.scale.z)/3),x=I*I,C=Math.max(0,d.start),T=Math.min(b.count,d.start+d.count);for(let O=C,$=T-1;O<$;O+=L){if(A.fromBufferAttribute(b,O),N.fromBufferAttribute(b,O+1),Sa.distanceSqToSegment(A,N,k,v)>x)continue;k.applyMatrix4(n.matrixWorld);let ie=e.ray.origin.distanceTo(k);ie<e.near||ie>e.far||r.push({distance:ie,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function w(y,b,A,N,v,k,L){let m=new Gr,I=new Gr,x=new Gr,C=new Gr,T=new Gr;if(m.fromBufferAttribute(N,v),I.fromBufferAttribute(N,k),x.fromBufferAttribute(N,L),A.intersectTriangle(m,I,x,!1,C)===null)return null;T.copy(C),T.applyMatrix4(y.matrixWorld);let $=b.ray.origin.distanceTo(T);return $<b.near||$>b.far?null:{faceIndex:1,distance:$,point:T.clone(),object:y}}};var wa=new dw,Xt=new cw,lc=class extends hw{constructor(e){let r=new pw,o=new uw({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},l=new ac(15711266),c=new ac(15711266),h=new ac(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",h),p("u2","u3",h),p("u3","u1",h);function p(d,f,g){u(d,g),u(f,g)}function u(d,f){i.push(0,0,0),s.push(f.r,f.g,f.b),a[d]===void 0&&(a[d]=[]),a[d].push(i.length/3-1)}r.setAttribute("position",new Kd(i,3)),r.setAttribute("color",new Kd(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Xt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;sr("n1",r,e,Xt,-i,-s,a),sr("n2",r,e,Xt,i,-s,a),sr("n3",r,e,Xt,-i,s,a),sr("n4",r,e,Xt,i,s,a);let l=a;sr("f1",r,e,Xt,-i,-s,l),sr("f2",r,e,Xt,i,-s,l),sr("f3",r,e,Xt,-i,s,l),sr("f4",r,e,Xt,i,s,l);let c=l,h=.5;sr("u1",r,e,Xt,i*.7*h,s*1.1,c),sr("u2",r,e,Xt,-i*.7*h,s*1.1,c),sr("u3",r,e,Xt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(n,t,e,r,o,i,s){wa.set(o,i,s).unproject(r);let a=t[n];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],wa.x,wa.y,wa.z)}}var La=class extends vr(lc){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){Sr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as mw}from"three";var Ci=class extends vr(mw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ci.geometryHelper,e,r)}};import{AxesHelper as fw}from"three";var Ti=class extends vr(fw){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){Sr(this.object,Ti.geometryHelper,e,r)}update(){}};import{PointLightHelper as yw}from"three";var Ni=class extends vr(yw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ni.geometryHelper,e,r)}};import{SpotLightHelper as gw,Vector3 as xw}from"three";var Ca=class extends vr(gw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ca.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Ca._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Pn=Ca;Pn._vector=new xw;var wr=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this);this.enableHelper=!1}set visibility(o){this.visible=o,this.setHelperVisibility(o),this.setHelperChildrenVisibility(o)}get visibility(){return this.visible}get geometryHelper(){return t.geometryHelper}setHelperVisibility(o){this.objectHelper.visible=o}setHelperChildrenVisibility(o){for(let i of this.children)Jt(i)&&i.traverseEntity(s=>{_r(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,i){this.objectHelper.raycast(o,i)}copy(o,i=!0){return super.copy(o,i),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let i=super.toJSON(o),s=i.object;return s.enableHelper=this.enableHelper,i}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Xe(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows),o.helper!==void 0&&(this.enableHelper=o.helper,s.gizmos.shadowmap.visible=o.helper)}return this}};var Mi=new jt,cc=new jt,zr=class extends wr(Kt(bw),La){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=uo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new vw(e*-.5,e*.5,r*.5,r*-.5,i!=null?i:-5e4,s),this.perspCamera=new Sw(o,e/r,i!=null?i:50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(e,r){let o=new zr().fromState(r);return o.enableHelper=!0,o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(Mi),this.targetOffset=Mi.distanceTo(e)}getTarget(e=new jt){return this.getWorldDirection(cc),this.getWorldPosition(Mi),cc.multiplyScalar(this.targetOffset),e.copy(Mi).add(cc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Mi),Mi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new ww),r=new jt(0,0,1).applyQuaternion(e),o=new jt().copy(Yd.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new jt().copy(Yd.DefaultUp).projectOnPlane(r),s=new jt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new jt),i=e.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new jt),i=this.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(e){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.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){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.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,a):this.orthoCamera.setViewOffset(e,r,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},o={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=o.near,this.perspCamera.far=o.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="CombinedCamera",o.cameraType=this.cameraType,o.targetOffset=this.targetOffset,o.isUpVectorFlipped=this.isUpVectorFlipped,o.angleOffsetFromUp=this.angleOffsetFromUp,o.left=this.left,o.right=this.right,o.top=this.top,o.bottom=this.bottom,this.view!==null&&(o.view=Object.assign({},this.view)),o.zoomOrtho=this.orthoCamera.zoom,o.nearOrtho=this.orthoCamera.near,o.far=this.far,o.aspect=this.aspect,o.fov=this.fov,o.focus=this.focus,o.filmGauge=this.filmGauge,o.filmOffset=this.filmOffset,o.zoomPersp=this.perspCamera.zoom,o.nearPersp=this.perspCamera.near,r}fromJSON(e){var r;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let o=this.getWorldPosition(new jt),i=new jt().fromArray(e.orbitControlsTarget);this.targetOffset=i.distanceTo(o)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=e.angleOffsetFromUp)!=null?r:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),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 $o(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return H(P(P({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as Lw}from"three";var Rr=class extends wr(Kt(Lw),Ti){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Rr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as Cw,CameraHelper as Ta}from"three";var Oi=class extends wr(Kt(Cw),Ci){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=1,o.far=2500;let i=new Ta(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Oi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightDirectional",o.color=this.color.getHex(),o.intensity=this.intensity,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.left=o.left,r.right=o.right,r.top=o.top,r.bottom=o.bottom,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Od(this,e.size),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as Tw,Vector3 as Na,Box3 as Nw,Box3Helper as Ma,Color as Mw}from"three";var Pi=class extends wr(Kt(Tw),Ni){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new Na(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Na(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Nw(i,s),l=new Ma(a,new Mw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let i=new Pi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ma&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ma&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof Ma){let o=this.shadow.camera,i=new Na(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Na(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightPoint",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.decay=this.decay,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as Ow,CameraHelper as Oa,MathUtils as Pw,Vector3 as em,Quaternion as Iw}from"three";var Xd=new em,Zd=new em,Qd=new Iw,Ii=class extends wr(Kt(Ow),Pn){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=Pw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Oa(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Ii().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Zd.setFromMatrixPosition(this.matrixWorld),Qd.setFromRotationMatrix(this.matrixWorld),Xd.copy(this.up).applyQuaternion(Qd).negate().multiplyScalar(this.distance),this.target.position.copy(Zd).add(Xd),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightSpot",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.angle=this.angle,o.decay=this.decay,o.penumbra=this.penumbra,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var Ai=class extends rt{constructor(e,r=new Ot){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var Di=class extends Ai{constructor(e,r=new Ot){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Aw,Mesh as Dw,MeshBasicMaterial as Bw,ShapeBufferGeometry as Ew,Vector2 as _w,Vector3 as Gw}from"three";import{FontLoader as zw}from"three/examples/jsm/loaders/FontLoader.js";var Ze=class extends Dw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},l=new Bw({color:0,opacity:1,visible:!0,transparent:!0,side:Aw})){let c=Ze.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?r:e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new _w,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ze._fontPath}static set FONTS_PATH(e){Ze._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Gw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ze.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ze.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ze.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ze(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ze.fontCache[e]?r(Ze.fontCache[e]):new zw().load(Ze.FONTS_PATH+e+".json",s=>{Ze.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ze.charCache[e]){if(Ze.charCache[e][o]&&Ze.charCache[e][o].fontFamily===r)return Ze.charCache[e][o]}else Ze.charCache[e]={};let i=Ze.fontCache[r],s=i.generateShapes(e,1);return Ze.charCache[e][o]={geometry:new Ew(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ze.charCache[e][o]}},Pt=Ze;Pt.charCache={},Pt.fontCache={},Pt._fontPath="/_assets/_fonts/";import{DoubleSide as Ia,MeshBasicMaterial as rm,Vector3 as om,Object3D as Rw}from"three";import{Vector2 as tm}from"three";var Pa=new tm,oo=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new tm(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){Pa.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(Pa),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),Pa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Pa),e)}clone(){let t=new oo(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var hc=class extends rt{constructor(e,r=new mt({transparent:!0,opacity:1,visible:!1,side:Ia})){super(e,r);this.objectType="TextFrame";this.charContainer=new Rw,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new om(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Qs.create({parameters:{width:r.width,height:r.height}}),s=new hc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Pt.loadFont(o),r.text=e;let i=r.textOrigin,s=new rm({visible:r.visible,transparent:!0,side:Ia}),a=e.split(`
|
|
942
|
-
`),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new oo(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(u=>{let d={char:u,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new Pt(d,f);return p.addChar3D(g,i),this.charContainer.add(g),g}),l+=p.maxCharSize*p.lineHeight,p}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof Pt&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){var h,p,u,d;let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=(p=(h=e.parameters)==null?void 0:h.width)!=null?p:i,l=(d=(u=e.parameters)==null?void 0:u.height)!=null?d:s,c=r.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let h=0;h<a[c].length;h+=1)i[s+1].addChar3D(a[c][h],o,l),l+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let l,c=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let h=0;h<l.length;h+=1)l[h]&&s[a-1].addChar3D(l[h],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new oo(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){var i;let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++){let c=a[l].material;(i=c.color)!=null&&i.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await Pt.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Pt.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}toJSON(e){let r=super.toJSON(e),o=r.object;o.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return o.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await Pt.loadFont(r.fontFamily),r.textOrigin=new om(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new rm({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:Ia});r.textLinesData&&(r.textLines=r.textLinesData.map((i,s)=>{let a=new oo(Number(i.yLinePos),Number(i.lineHeight),Number(i.maxCharSize)),l=i.message.map((c,h)=>{if(c.char===void 0){let d=r.textLines[s].message[h];if("geometries"in d){let f=d.geometries[0].userData.parameters;Object.assign(c,{LOD:f.lod,char:f.char,fontFamily:f.fontFamily,fontSize:f.fontSize,letterSpacing:f.letterSpacing,originalChar:f.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},u=new Pt(p,o.clone());return a.addChar3D(u,r.textOrigin),this.charContainer.add(u),u});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Xe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,o=new Rr;o.name="Text Shape";let i=Pt.fontCache[e];for(let s of this.charContainer.children)s instanceof Pt&&i.generateShapes(s.char,1).forEach(a=>{let l=new Oe().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=ut.create({shape:l}),h=new mt({side:Ia});h.color=r;let p=new ro(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},No=hc;No.VerticalAlign=nl,No.HorizontalAlign=il,No.TextTransform=sl;import{HemisphereLight as Zw,Scene as Qw,Vector3 as e1,Color as ym,Fog as t1,Box3 as r1}from"three";import{Box3 as Fw,Matrix4 as Mo,Sphere as sm,Vector3 as Vw}from"three";var lm=zm(nm());var pc;ea.then(n=>{pc=n});var cm=new Mo,jw=new Mo,Uw=new Mo,ar=new Fw,io=new Vw,kw=new Mo,Hw=new Mo,Bi=class extends rt{constructor(e,r,o,i=new Ot){super(o!=null?o:r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Mo;this.smoothShading=!0;this.matrixWorldRigid=new Mo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=nr.build(r.geometry,void 0,!r.flatShading),l=Cn(r.material,o),c=new Bi(i,s,a||void 0,l);return c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new Di(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e){var s,a,l;let{originalGeometry:r,subdividedGeometry:o,subdivPointer:i}=nr.build(e,this.subdivPointer,this.smoothShading,this.shearScale);if(this.subdivPointer=i,r!==void 0&&((s=this.originalGeometry)==null||s.dispose(),this.originalGeometry=r),o!==void 0&&((a=this.subdividedGeometry)==null||a.dispose(),this.subdividedGeometry=o!=null?o:void 0),this.geometry=(l=this.subdividedGeometry)!=null?l:this.originalGeometry,this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){nr.buildLevel(this.subdivPointer,!0,this.smoothShading,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&nr.buildLevel(this.subdivPointer,!1,this.smoothShading,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=nr.buildLevel(this.subdivPointer,!0,this.smoothShading),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=nr.buildLevel(this.subdivPointer,!1,this.smoothShading)),this.geometry=(e=this.subdividedGeometry)!=null?e:this.originalGeometry}raycast(e,r){var o;this.geometry=this.originalGeometry,rt.prototype.raycast.call(this,e,r),this.geometry=(o=this.subdividedGeometry)!=null?o:this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,lm.SVD)(r),a=cm.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),l=jw.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),c=Uw.copy(l).transpose();this.shearScale=kw.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=Hw.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(h=>Math.abs(s[0]-h)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new sm);let r=e.attributes.position,o=e.boundingSphere.center;ar.setFromBufferAttribute(r),ar.getCenter(o),e.boundingSphere.radius=o.distanceTo(ar.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(io);let i={width:io.x,height:io.y,depth:io.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;ar.min.set(e[0],e[2],e[4]),ar.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(ar.min.applyMatrix4(this.shearScaleInv),ar.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new sm);let o=r.boundingSphere.center;ar.getCenter(o),r.boundingSphere.radius=o.distanceTo(ar.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(io);let i={width:io.x,height:io.y,depth:io.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(pc.free_bvh(this.subdivPointer),pc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,am(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(am(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=P({},e.parameters)}};function am(n,t,e,r){let o=n.position.array,i=n.normal.array,s=cm.makeScale(t,e,r).invert().elements,a,l,c;for(var h=0,p=o.length;h<p;h+=3)o[h]*=t,o[h+1]*=e,o[h+2]*=r,a=i[h],l=i[h+1],c=i[h+2],i[h]=s[0]*a+s[4]*l+s[8]*c,i[h+1]=s[1]*a+s[5]*l+s[9]*c,i[h+2]=s[2]*a+s[6]*l+s[10]*c}import{BackSide as qw,BufferGeometry as Ww,DoubleSide as $w,FrontSide as Jw}from"three";function hm(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=Jw:t.side===1?n.side=qw:n.side=$w)}function Kw(n,t){if(Array.isArray(n.material))for(let e of n.material)hm(e,t);else{let e=n.material;hm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function pm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Bi.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new Ww:ga(t.geometry,e),i="materials"in t?Cd(t.materials,e):Cn(t.material,e);zs.is2DParametricMesh(o.userData.type)?r=new Li(o,i):(o==null?void 0:o.userData.type)==="VectorGeometry"?r=new ro(o,i):t.geometry.type==="NonParametricGeometry"?r=new Di(o,i):t.geometry.type==="BooleanGeometry"?(r=new va(void 0,i),r.booleanOp=t.geometry.operation):r=new Ai(o,i),r.uuid=n,r.fromState(t)}return Kw(r,t),r}function um(n,t,e){return t.type==="Mesh"?pm(n,t,e):t.type==="TextFrame"?No.createFromState(n,t,e):t.type==="Empty"?Rr.createFromState(n,t):t.type==="PointLight"?Pi.createFromState(n,t,e):t.type==="SpotLight"?Ii.createFromState(n,t,e):t.type==="DirectionalLight"?Oi.createFromState(n,t,e):Jo.is(t.type)?zr.createFromState(n,t):(console.error(t),new Rr)}function Yw(n,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=n.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=n.depthTexture}function dm(n,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission");return o.length>0?(t.layers.set(3),r=!0,n!==void 0&&o.forEach(i=>Yw(n,i))):t.layers.set(0),r}function mm(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)dm(n,r,r.material[o])&&(e=!0);else dm(n,r,r.material)&&(e=!0)}),e}function fm(n,t){"material"in n&&Xw(n.material,t),"geometry"in n&&n.geometry.dispose()}function Xw(n,t){bc(n).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var gm=new e1,uc=class extends ya(Qw){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new t1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new ym(1,0,0);this.bgColor=new ym(1,1,1);this.entityByUuid={};this.ambientLight=new Zw(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=mm(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Xe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof zr&&this.switchActiveCamera(o)}}clearScene(e){this.traverseEntity(r=>{fm(r,e)});for(let r of this.children)Jt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=zr.createFromState(uc.PERSONAL_CAMERA_ID,H(P({},Fs.defaultData),{name:"Personal Camera"}));return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)Jt(s)&&!s.raycastLock&&s.visible&&((br(s)||_r(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,r),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)Jt(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Md(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let a=um(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),Co(i)&&br(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:l}=e[i],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let o=new r1;return o.setFromPoints(r),o.getCenter(gm),gm}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){var i;if(e===null){r.identity();return}let o=(i=this.find(e))==null?void 0:i.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)e(r.material[o]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=i})})}},In=uc;In.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as o1}from"three/examples/jsm/loaders/DRACOLoader.js";var no;function i1(){return no||(no=new o1,no.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),no.decoderPending}async function n1(n){if(no){let t={attributeIDs:no.defaultAttributeIDs,attributeTypes:no.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await no.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 xm(n){let[t,e]=Ua(Ds.deserialize(new Uint8Array(n))),r=[];t.scene.objects.traverse((o,i)=>{i.type==="Mesh"&&i.geometry.type==="NonParametricGeometry"&&i.geometry.data.draco!==void 0&&r.push(i)}),r.length&&await i1();for(let o of r){let i=await n1(Ha(o.geometry.data.draco));if(i){i.index&&(o.geometry.data.index={array:i.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};i.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),o.geometry.data.attributes=s,o.geometry.data.draco=void 0}}return e.result().data}import{WebGLRenderTarget as s1,LinearMipmapLinearFilter as a1,LinearFilter as l1,ClampToEdgeWrapping as bm,DepthTexture as c1}from"three";var vm=new mt,Da=class extends Dt{},Ba=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new s1(2048,2048,{generateMipmaps:!0,minFilter:a1,magFilter:l1,wrapS:bm,wrapT:bm}),this.transmissionRenderTarget.depthTexture=new c1(2048,2048),this.reset(t)}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.data);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,Jl(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===vm}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:vm}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad(t)},this.images[t].src=e,!0;{let r=new Image;return r.src=e,r.onload=()=>{this.onImageLoad&&this.onImageLoad(t)},this.images[t]=r,!1}}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Da(e.r,e.g,e.b,e.a):this.colors[t]=new Da(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,o,i,s;if(this.colors[t]){let a=this.colors[t];return this.colors[t].r=(r=e.r)!=null?r:a.r,this.colors[t].g=(o=e.g)!=null?o:a.g,this.colors[t].b=(i=e.b)!=null?i:a.b,this.colors[t].a=(s=e.a)!=null?s:a.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{Mesh as F4}from"three";import{mergeBufferGeometries as U4}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Sm(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as wm,ShaderLib as h1}from"three";function Lm(n){let t=new Set;return n.traverse(e=>{if(br(e))if(et(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);p1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new wm,specularColor:new wm}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(h1.physical.uniforms,o.uniforms),e.userData.layers.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):u1(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function p1(n){return n.userData.layers.getLayersOfType("transmission").length>0}function u1(n){let t=n.userData.layers.head,e=0;for(;t!==void 0;){if(t.type!=="light"&&t.type!=="fresnel"){let r=t.uniforms["f"+t.id+"_alpha"];r&&(e+=(1-e)*r.value)}t=t.next}return e<1}function Cm(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Tm(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as d1}from"three/examples/jsm/utils/BufferGeometryUtils";function Nm(n){let t=[];return n.traverse(e=>{e instanceof Lo&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,i=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&Sm(l),l}),s=d1(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.material=o[0].material,r.remove(e)}),n}var Mm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",dc=class extends f1{load(t,e,r,o=console.error){let i=new m1(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Mm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Mm),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await xm(t),r=new Ba(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new In(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Nd(s)&&Object.assign(s,{makeDefault:!0})}return o=Nm(o),o=Lm(o),o=Cm(o),o=Tm(o),o}};export{dc as default};
|
|
940
|
+
`),h&&u.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),p?u.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):u.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),u.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=u.join(`
|
|
941
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var ma=class extends Vt{constructor(e=new ua,r){super(e,e,r);this.type="StandardNodeMaterial",this.fragment=e}get color(){return this.fragment.color}set color(e){this.fragment.color=e}get afterColor(){return this.fragment.afterColor}set afterColor(e){this.fragment.afterColor=e}get alpha(){return this.fragment.alpha}set alpha(e){this.fragment.alpha=e}get shadingAlpha(){return this.fragment.shadingAlpha}set shadingAlpha(e){this.fragment.shadingAlpha=e}get shadingBlend(){return this.fragment.shadingBlend}set shadingBlend(e){this.fragment.shadingBlend=e}get position(){return this.fragment.position}set position(e){this.fragment.position=e}get roughness(){return this.fragment.roughness}set roughness(e){this.fragment.roughness=e}get metalness(){return this.fragment.metalness}set metalness(e){this.fragment.metalness=e}get reflectivity(){return this.fragment.reflectivity}set reflectivity(e){this.fragment.reflectivity=e}};var bi=class extends ma{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof wt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let i=e.clone(this);this.userData.layers=i,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),i=new bi(void 0,o);return i.fromJSON(e,r),i}dispose(){super.dispose()}};import{Color as $l}from"three";function Xe(n,t){let e;if(typeof n=="string"){let r=t==null?void 0:t.getColor(n);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 Dt(0,0,0,0))}else return"a"in n?new Dt(n.r,n.g,n.b,n.a):new Dt(n.r,n.g,n.b,1);return e}import{Matrix3 as yu,Texture as Wl,Vector2 as Ln,Vector3 as to,Vector4 as gu}from"three";function xu(n,t){switch(n.data.type){case"light":return ir(n);case"fresnel":return fS(n,t);case"gradient":return yS(n);case"depth":return gS(n);case"normal":return xS(n);case"noise":return bS(n,t);case"texture":return vS(n,t);case"rainbow":return SS(n);case"transmission":return wS(n,t);case"matcap":return LS(n,t);case"displace":return CS(n);case"color":default:return mS(n,t)}}function bu(n){return{type:n.data.type}}function ir(n){let{alpha:t,mode:e}=n.data;return H(P({},bu(n)),{alpha:t,mode:e})}function mS(n,t){return H(P({},ir(n)),{color:Xe(n.data.color,t)})}function fS(n,t){let{bias:e,scale:r,intensity:o,factor:i,color:s}=n.data;return H(P({},ir(n)),{color:Xe(s,t),bias:e,scale:r,intensity:o,factor:i})}function yS(n){let{gradientType:t,smooth:e,colors:r,steps:o,angle:i,offset:s,morph:a}=n.data;return H(P({},ir(n)),{gradientType:t,smooth:e,colors:r.map(l=>new gu(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Ln(...s),morph:new Ln(...a),angle:i})}function gS(n){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:s,direction:a,colors:l,steps:c,smooth:h,num:p}=n.data;return H(P({},ir(n)),{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:i,origin:new to(...s),direction:a?new to(...a):new to(1,0,0),num:p,colors:l.map(d=>new gu(d[0],d[1],d[2],d[3])),steps:c,smooth:h})}function xS(n){let{cnormal:t}=n.data;return H(P({},ir(n)),{cnormal:new to(t[0],t[1],t[2])})}function bS(n,t){let{data:e}=n;return H(P({},ir(n)),{scale:e.scale,move:e.move,fA:new Ln(...e.fA),fB:new Ln(...e.fB),size:new to(...e.size),distortion:new Ln(...e.distortion),colorA:Xe(e.colorA,t),colorB:Xe(e.colorB,t),colorC:Xe(e.colorC,t),colorD:Xe(e.colorD,t),noiseType:e.noiseType})}function vS(n,t){let{projection:e,axis:r,side:o,crop:i,size:s}=n.data,{image:a,wrapping:l,repeat:c,offset:h}=n.data.texture,p=new Wl,d;if(typeof a=="string")d=t==null?void 0:t.getImage(a);else{let u=new Image;u.src=a.data,u.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad(a.data))},d=u}return p.image=d,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,H(P({},ir(n)),{texture:p,mat:new yu().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:i,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(o),size:s})}function SS(n){let{data:t}=n;return H(P({},ir(n)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new to(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new to(...t.offset)})}function wS(n,t){let{data:e}=n;return H(P({},ir(n)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function LS(n,t){let e=new Wl,{image:r}=n.data.texture,o;if(typeof r=="string")o=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=r.data,s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad(r.data))},o=s}e.image=o;let i=16777215;return H(P({},ir(n)),{color:i,texture:e})}function CS(n){let{data:t}=n,e=H(P({},bu(n)),{intensity:t.intensity});if(t.displacementType==="noise")return H(P({},e),{offset:new to(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new Wl,o=new yu().setUvTransform(0,0,1,1,0,0,0);return H(P({},e),{texture:r,mat:o,crop:t.crop})}}function vu(n,t,e){if(e.type==="displace"&&(n==="intensity"||n==="visible")){let r=t.uniforms[`f${t.id}_intensity`];return r?(r.value=e.intensity*(e.visible?1:0),r):void 0}if(e.type!=="displace"&&(n==="alpha"||n==="visible")){let r=t.uniforms[`f${t.id}_alpha`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as Lu,Vector4 as TS}from"three";var vi;(t=>{function n(e){return new Lu(e.x,e.y,e.z).getHex()}t.getHex=n})(vi||(vi={}));var Su;(t=>{function n(e){return new TS(e.r,e.g,e.b,e.a)}t.getThreeVector4=n})(Su||(Su={}));var wu;(e=>{function n(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=n;function t(r){return new Lu(r.r,r.g,r.b).getHex()}e.getHex=t})(wu||(wu={}));function Cn(n,t){return typeof n=="string"?t.getMaterialOrDeletedPlaceholder(n):Jl(n,t)}function Cu(n,t){return n.map(e=>Cn(e,t))}function Jl(n,t){var s,a;let e=(s=n.layers)!=null?s:xo.defaultTwoLayerData("phong").layers,r=NS(e),o;switch(r.category){case"basic":o=new mt;break;case"lambert":{o=new gi;break}case"toon":{o=new xi;break}case"physical":o=new bi;break;case"phong":default:{o=new Ot;break}}o.name=(a=n.name)!=null?a:"Untitled Material";let i=o.userData.layers;MS(i);for(let l=e.length-1;l>=0;l--)OS(i,e[l],t);switch(r.category){case"basic":break;case"lambert":{let h=o,d=Xe(r.emissive,t);d instanceof $l?h.emissive.value=d:h.emissive.value.setHex(vi.getHex(d));break}case"toon":{let h=o,p=r;h.shininess.value=p.shininess;let d=Xe(p.specular,t);d instanceof $l?h.specular.value=d:h.specular.value.setHex(vi.getHex(d));break}case"physical":let l=o,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=o,p=r;h.shininess.value=p.shininess;let d=Xe(p.specular,t);d instanceof $l?h.specular.value=d:h.specular.value.setHex(vi.getHex(d));break}}return i.blendColors(),i.blendAfterColors(),i.blendPositions(),o}function NS(n){for(let t of n)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function MS(n){for(let t of n.getLayers())n.removeLayer(t.id)}function OS(n,t,e){let r=xu(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let o=n.addLayer(r);o.uuid=t.id;for(let i in t.data)vu(i,o,t.data)}import{Mesh as zS,Matrix4 as RS}from"three";import{Matrix4 as Yl}from"three";import{Box3 as Iu,Line3 as $t,Matrix4 as Kl,Vector3 as Ve}from"three";import{HemisphereLight as Tu}from"three";var fa=n=>"isEntity"in n,br=n=>"isAbstractMesh"in n,_r=n=>n!==null&&n.isBooleanMesh,Nu=n=>n.objectType==="CombinedCamera";var Gr=n=>"objectHelper"in n;function PS(n,t){var r;let e=!1;t.position&&(n.position.fromArray(t.position),e=!0),t.rotation&&(n.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,n.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in n&&(e=!0,n.hiddenMatrix.fromArray((r=t.hiddenMatrix)!=null?r:$r.identity)),e&&(n.updateMatrix(),_r(n.parent)&&br(n)&&n.invalidateDownstreamBooleanData().recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&n.updateWorldMatrix(!1,!0),n.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=t.isUpVectorFlipped),n.updateUp())}function IS(n,t){PS(n,t),t.name!==void 0&&(n.name=t.name),t.visible!==void 0&&(n.isEntity?n.visibility=t.visible:n.visible=t.visible)}function Mu(n,t,e){IS(n,t),t.color!==void 0&&(n.color=Xe(t.color,e)),t.intensity!==void 0&&(n.intensity=t.intensity),t.shadows!==void 0&&!(n instanceof Tu)&&(n.castShadow=t.shadows),n.shadow&&!(n instanceof Tu)&&t.depth!==void 0&&(n.shadow.camera.far=t.depth,n.shadow.needsUpdate=!0),t.helper!==void 0&&Gr(n)&&(n.enableHelper=t.helper,n.gizmos.shadowmap.visible=t.helper)}function Ou(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 Si=new Iu,ft=new Ve,le=new Ve,tt=new Kl;function AS(n,t,e=0,r=t.count){let o=1/0,i=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let h=e;h<r;h++){let p=t.getX(h),d=t.getY(h),u=t.getZ(h);p<o&&(o=p),d<i&&(i=d),u<s&&(s=u),p>a&&(a=p),d>l&&(l=d),u>c&&(c=u)}return n.min.set(o,i,s),n.max.set(a,l,c),n}var Pu=(n,t,e,r)=>{var o;if(br(n)){let i=n.geometry.userData.parameters,s=n.geometry.getAttribute("position");n.geometry.userData.type==="SubdivGeometry"?ft.copy(n.originalGeometry.boundingSphere.center):s!==void 0&&(AS(Si,s,n.geometry.drawRange.start,n.geometry.drawRange.count<1/0?n.geometry.drawRange.count:s.count),Si.getCenter(ft)),n.forceComputeSize?Si.getSize(le).multiplyScalar(.5):le.set(i.width,i.height,(o=i.depth)!=null?o:0).multiplyScalar(.5)}else if(Gr(n)&&r===!0){let i=n.geometryHelper.getAttribute("position");Si.setFromArray(i.array),Si.getCenter(ft),Si.getSize(le).multiplyScalar(.5)}else ft.setScalar(0),le.setScalar(0);tt.copy(t).multiply(n.matrixWorld),le.x===0&&le.y===0&&le.z===0?e.push(new Ve(ft.x,ft.y,ft.z).applyMatrix4(tt)):e.push(new Ve(-le.x,le.y,le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,-le.y,le.z).add(ft).applyMatrix4(tt),new Ve(le.x,-le.y,le.z).add(ft).applyMatrix4(tt),new Ve(le.x,le.y,le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(-le.x,-le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(le.x,-le.y,-le.z).add(ft).applyMatrix4(tt),new Ve(le.x,le.y,-le.z).add(ft).applyMatrix4(tt))},Tn=class extends Iu{constructor(){super(...arguments);this.matrix=new Kl;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 Kl().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let i=[];return o===!0?e.traverseEntity(s=>{s.visible&&Pu(s,r,i,e.enableHelper===!0)}):Pu(e,r,i,e.enableHelper===!0),this.setFromPoints(i)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(tt.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(le).multiplyScalar(.5),this.getCenter(ft),tt.copy(this.matrix).setPosition(ft),this.vertices=[new Ve(-le.x,le.y,le.z).applyMatrix4(tt),new Ve(-le.x,-le.y,le.z).applyMatrix4(tt),new Ve(le.x,-le.y,le.z).applyMatrix4(tt),new Ve(le.x,le.y,le.z).applyMatrix4(tt),new Ve(-le.x,le.y,-le.z).applyMatrix4(tt),new Ve(-le.x,-le.y,-le.z).applyMatrix4(tt),new Ve(le.x,-le.y,-le.z).applyMatrix4(tt),new Ve(le.x,le.y,-le.z).applyMatrix4(tt)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new $t(this.vertices[0],this.vertices[3]),new $t(this.vertices[1],this.vertices[2]),new $t(this.vertices[5],this.vertices[6]),new $t(this.vertices[4],this.vertices[7]),new $t(this.vertices[0],this.vertices[1]),new $t(this.vertices[3],this.vertices[2]),new $t(this.vertices[7],this.vertices[6]),new $t(this.vertices[4],this.vertices[5]),new $t(this.vertices[0],this.vertices[4]),new $t(this.vertices[1],this.vertices[5]),new $t(this.vertices[2],this.vertices[6]),new $t(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new Ve))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new Ve().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new Ve().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new Ve().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new Ve().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new Ve().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new Ve().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};import{Object3D as DS,Matrix4 as BS,Light as ES}from"three";function Nn(n){let t=[];for(let e in n){let r=n[e];delete r.metadata,t.push(r)}return t}function _S(n){let t=[];for(let e in n)t.push(n[e]);return t}var ya=n=>class extends n{hasEntityChild(){return this.children.some(e=>fa(e))}isDescendantOf(e){e instanceof DS&&(e=e.uuid);let r=this;for(;r.parent;){if(r.parent.uuid===e)return!0;r=r.parent}return!1}attach(e,r){this.updateWorldMatrix(!0,!1);let o=new BS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),fa(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),r!==void 0&&(this.children.pop(),this.children.splice(r,0,e)),this}copy(e,r=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),r===!0)for(let o=0;o<e.children.length;o++){let i=e.children[o];this.add(i.clone())}return this}toJSON(e){let r=e===void 0,o={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},o.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let i={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(i.name=this.name),i.matrix=this.matrix.toArray(),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),i.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(i.userData=this.userData),this.children.length>0){i.children=[];for(let s of this.children)(fa(s)||s instanceof ES)&&i.children.push(s.toJSON(e).object)}if(r){let s=Nn(e.geometries),a=Nn(e.materials),l=Nn(e.textures),c=Nn(e.images),h=Nn(e.interactionStates),p=_S(e.nodes);s.length>0&&(o.geometries=s),a.length>0&&(o.materials=a),l.length>0&&(o.textures=l),c.length>0&&(o.images=c),h.length>0&&(o.interactionStates=h),p.length>0&&(o.nodes=p)}return o.object=i,o}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var Jt=n=>"isEntity"in n,Au=n=>"isAbstractMesh"in n,Kt=n=>class extends ya(n){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Yl;this._singleBBox=new Tn;this._recursiveBBox=new Tn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Jt(o)&&o.traverseEntity(i=>{Gr(i)&&i.visible&&(i.objectHelper.visible=r)})}get visibility(){return this.visible}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}resetBBoxNeedsUpdate(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this.traverseAncestors(r=>{Jt(r)&&(r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(r=>{r.singleBBoxNeedsUpdate=!0,r.recursiveBBoxNeedsUpdate=!0})}traverseEntity(r){r(this);for(let o of this.children)Jt(o)&&o.traverseEntity(r)}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,r=!0);for(let o of this.children)o.updateMatrixWorld(r)}updateWorldMatrix(r,o){let i=this.parent;if(r&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}shallowClone(r){return new this.constructor().shallowCopy(this,r)}shallowCopy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)Jt(i)&&this.add(i.shallowClone());return this}clone(r){return new this.constructor().copy(this,r)}copy(r,o=!0){if(super.copy(r,!1),this.raycastLock=r.raycastLock,this.scaleLock=r.scaleLock,this.hiddenMatrix.copy(r.hiddenMatrix),o===!0)for(let i of r.children)Jt(i)&&this.add(i.clone());return this}keepChildrenMatrixWorld(){let r=new Yl,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let i of this.children)Jt(i)&&i.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),i=o.object;return this.raycastLock===!0&&(i.raycastLock=!0),this.scaleLock===!0&&(i.scaleLock=!0),i.hiddenMatrix=this.hiddenMatrix.toArray(),o}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let o=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new Yl}),this.copy(r),r.children=o,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return $o(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o=P({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return $o(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as GS,Vector3 as Mn,Euler as Du,MathUtils as ro}from"three";var Co=class extends GS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Mn),i=.1;this.parameters=fs.defaultData(o.toArray(),i),uo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(e){let r=this.object.material.map(o=>o.clone());for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let r=this.object.material.clone();for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let i=this.object.shallowClone(!1);i.visible=!0,this.add(i),this.parameters.hideBase&&this.setHideBase(!0)}else for(let r=0,o=this.children.length-e;r<o;++r)this.remove(this.children[0])}_updateRadial(e){let r=e.radial,o=r.start*ro.DEG2RAD,i=r.end*ro.DEG2RAD,s=o-i,a=new Du(r.rotation[0]*ro.DEG2RAD,r.rotation[1]*ro.DEG2RAD,r.rotation[2]*ro.DEG2RAD),l;switch(r.axis){case"z":l=new Mn(0,0,1);break;case"y":l=new Mn(0,1,0);break;default:case"x":l=new Mn(1,0,0);break}for(let[c,h]of this.children.entries()){h.hiddenMatrix.identity(),h.scale.x=r.scale[0],h.scale.y=r.scale[1],h.scale.z=r.scale[2],h.position.setScalar(0);let p=s/e.count*c-o;switch(r.axis){case"x":h.rotation.set(0,p,0);break;case"y":h.rotation.set(0,0,p);break;case"z":h.rotation.set(p,0,0);break}h.translateOnAxis(l,r.radius),h.position.x+=r.position[0],h.position.y+=r.position[1],h.position.z+=r.position[2],r.alignment===!0?(h.rotation.x+=a.x,h.rotation.y+=a.y,h.rotation.z+=a.z):h.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let r=e.linear,o=new Du(r.rotation[0]*ro.DEG2RAD,r.rotation[1]*ro.DEG2RAD,r.rotation[2]*ro.DEG2RAD);for(let[i,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*i,s.scale.y=1+(r.scale[1]-1)*i,s.scale.z=1+(r.scale[2]-1)*i,s.rotation.x=o.x*i,s.rotation.y=o.y*i,s.rotation.z=o.z*i,s.position.x=r.position[0]*i,s.position.y=r.position[1]*i,s.position.z=r.position[2]*i}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let i={x:o.count[0]%2===0?2:1,y:o.count[1]%2===0?2:1,z:o.count[2]%2===0?2:1},s=new Mn(o.size[0]*(o.count[0]-i.x)*.5,o.size[1]*(o.count[1]-i.y)*.5,o.size[2]*(o.count[2]-i.z)*.5);for(let a=0;a<o.count[0];a++)for(let l=0;l<o.count[1];l++)for(let c=0;c<o.count[2];c++){let h=this.children[r++];h.hiddenMatrix.identity(),h.scale.setScalar(1),h.rotation.set(0,0,0),h.position.x=o.size[0]*a-s.x,h.position.y=o.size[1]*l-s.y,h.position.z=o.size[2]*c-s.z}}else for(let i=0;i<o.count[0];i++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let l=this.children[r++];l.hiddenMatrix.identity(),l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*i,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),uo(this.parameters,e),this.update(),this}};var rt=class extends Kt(zS){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new RS;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=Xl[r.userData.type],i=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,i)),a=r.uuid;if(this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,o){sn.resizeGeometry(this.geometry,{width:e,height:r,depth:o})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=On(r),i=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,i).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new Co(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Co(this)),this.cloner.fromClonerState(e))}fromState(e,r){var o,i,s;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(o=e.castShadow)!=null?o:!0,this.receiveShadow=(i=e.receiveShadow)!=null?i:!0,this.booleanExclude=(s=e.booleanExclude)!=null?s:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Yt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),_r(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)br(e)&&(e.freeBooleanPointer(),_r(e)&&e.invalidateUpstreamBooleanData())}};var US=new Zl(0,0,1),Bu=new Zl,Eu=new Zl,_u=new jS,oo=class extends rt{constructor(e=dt.create({}),r=new mt({side:FS})){var o;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new VS;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){var r,o;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),_u.getNormalMatrix(this.matrixWorld),Bu.copy(US).applyMatrix3(_u).normalize(),Eu.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Bu,Eu)}clone(e){let r=this.shape.clone(),o=this.material.clone(),i=this.geometry.userData,s=dt.create(Object.assign({},i,{shape:r})),a=new oo(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){rt.prototype.raycast.call(this,e,r)}};function ga(n,t){return HS(n)}function HS(n){let t={parameters:n,type:n.type};if(n.type==="VectorGeometry"){let r=Oe.createFromState(n.shape,n.width,n.height);t.shape=r}else n.type==="NonParametricGeometry"&&(n.data.groups&&n.data.groups.forEach(r=>{var o;return r.materialIndex=Math.max((o=r.materialIndex)!=null?o:0,0)}),t.geometry=new kS().parse(n));let e;try{e=On(t)}catch(r){console.error(r)}if(!e){let r=Oe.createFromState(ti.defaultData(),100,100);t.shape=r,e=On(t)}return e}var fe;ea.then(n=>{fe=n});var Ru=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Fu=new Uint32Array([0,1,2,3]),Vu=new Uint8Array([4]),nr=class{static build(n,t,e,r){let o,i,s;if((n==null?void 0:n.positionWASM)!==void 0){t&&t!==0&&(fe.free_bvh(t),fe.free_subdivision_surface(t));try{o=nr.allocate(n,r)}catch(a){console.error(a,n),o=nr.allocate({positionWASM:Ru,indexWASM:Fu,verticesPerFaceWASM:Vu},r)}fe.set_destination_refinement_level(o,0),i=nr.buildLevel(o,!0,e)}else o=t;if(n!==void 0&&n.subdivisions!==void 0){let a=WS(n.subdivisions,n.positionWASM.length);fe.set_destination_refinement_level(o,a),a>0?s=nr.buildLevel(o,!1,e):s=null}return{subdivPointer:o,originalGeometry:i,subdividedGeometry:s}}static primitiveToQuads(n,t){n.widthSegments>16&&(n.widthSegments=16),n.heightSegments>16&&(n.heightSegments=16),n.depthSegments>16&&(n.depthSegments=16),n.radialSegments>16&&(n.radialSegments=16),n.type==="DodecahedronGeometry"&&(n.detail=0);let e=n.shape!==void 0?t.geometry:ga(n),r,o,i,s;return{positions:r,triIndices:s}=ic(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:i}=nc(r,s,e),{positions:r,indices:o,verticesPerFace:i}}static allocate(n,t){var N;let e,r,o,i=[],s=[];n.positionWASM&&n.positionWASM.length>0?(e=n.positionWASM,r=n.indexWASM,o=n.verticesPerFaceWASM):(e=Ru,r=Fu,o=Vu);let a=e.length,l=r.length,c=o.length,h=e.length+i.length+s.length,p=r.length+o.length,d=h*Float32Array.BYTES_PER_ELEMENT+p*Uint32Array.BYTES_PER_ELEMENT,u=h*Float32Array.BYTES_PER_ELEMENT,f=p*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(d),w=new Float32Array(fe.HEAPF32.buffer,g,h),y=new Uint32Array(fe.HEAPU32.buffer,g+u,p);w.set(e,0),w.set(i,e.length),w.set(s,e.length+i.length),y.set(r,0),y.set(o,r.length);let b;(N=n==null?void 0:n.scaleBaked)!=null&&N.some(v=>v!==1)&&(b=new qS().makeScale(...n.scaleBaked)),t&&(b?b.premultiply(t):b=t);let A=b?fe.alloc_subdivision_surface2(g,a,g+u,l,g+u+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):fe.alloc_subdivision_surface(g,a,g+u,l,g+u+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return fe._free(g),A}static buildLevel(n,t,e,r,o){let i=o?fe.get_mesh_data2(n,t?fe.Level.CONTROL:fe.Level.REFINED,e!=null?e:!t,o.elements):fe.get_mesh_data(n,t?fe.Level.CONTROL:fe.Level.REFINED,e!=null?e:!t),s=8,a=fe.HEAPU32.subarray(i>>2,(i>>2)+s),l=a.subarray(4,4+4),c=0,h=fe.HEAPU32[a[c]>>2],p=fe.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let d=fe.HEAPU32[a[c]>>2],u=fe.HEAPF32.subarray(d>>2,(d>>2)+l[c]);c++;let f=fe.HEAPU32[a[c]>>2],g=fe.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let w=fe.HEAPU32[a[c]>>2],y=fe.HEAPU32.subarray(w>>2,(w>>2)+l[c]);if(c++,r===void 0){let b=new Gu;if(b.setIndex(new Ql(y,1)),b.setAttribute("position",new ec(p,3)),b.setAttribute("normal",new ec(u,3)),t){b.setAttribute("faceMap",new Ql(g,1));let A=new Float32Array(u.length/3*4).fill(0);b.setAttribute("color",new zu(A,4))}return fe.free_mesh_data(i),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(u),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,fe.free_mesh_data(i)}static buildControlCageWireframe(n,t,e){let r=fe.get_wireframe_data_for_base_level(n),o=4,i=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+2),a=0,l=fe.HEAPU32[i[a]>>2],c=fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=fe.HEAPU32[i[a]>>2],p=fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let d=new Gu;d.setAttribute("position",new ec(c,3));let u=new Float32Array(c.length);for(let f=0,g=c.length;f<g;)u[f++]=e.r,u[f++]=e.g,u[f++]=e.b;return d.setAttribute("color",new zu(u,3)),d.setIndex(new Ql(p,1)),fe.free_wireframe_data_for_base_level(r),d}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(n,t,e){t||fe.set_destination_refinement_level(n,1);let r=e?fe.get_topological_data2(n,t?fe.Level.CONTROL:fe.Level.REFINED,e.elements):fe.get_topological_data(n,t?fe.Level.CONTROL:fe.Level.REFINED),o=6,i=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(3,3+3),a=0,l=fe.HEAPU32[i[a]>>2],c=new Float32Array(fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=fe.HEAPU32[i[a]>>2],p=new Uint32Array(fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let d=fe.HEAPU32[i[a]>>2],u=new Uint8Array(fe.HEAPU32.subarray(d>>2,(d>>2)+s[a]));return fe.free_topological_data(r),{positions:c,indices:p,verticesPerFace:u}}};function WS(n,t){let e=n;return e=Math.min(e,3-Math.ceil(Math.log(t/172e3)/Math.log(4))),Math.max(e,0)}var ju=["getX","getY","getZ"];function ic(n,t){let e={},r=t?t.count:n.count,o=0,i=[],s=[],a=1e4;for(let c=0;c<r;c++){let h=t?t.getX(c):c,p="";for(let d=0;d<3;d++)p+=`${~~(n[ju[d]](h)*a)},`;if(p in e)i.push(e[p]);else{for(let d=0;d<3;d++)s.push(n[ju[d]](h));e[p]=o,i.push(o),o++}}let l=[];for(let c=0;c<i.length;c+=3)i[c]===i[c+1]||i[c]===i[c+2]||i[c+1]===i[c+2]||l.push(i[c],i[c+1],i[c+2]);return{positions:s,triIndices:l}}var xa=new ba,tc=new ba,rc=new ba,oc=new ba;function nc(n,t,e){var i;let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<s.length;c+=2)a+=(s[c]-s[(c===0?s.length:c)-2])*(s[c+1]+s[(c===0?s.length:c)-1]);n.length=0;let l=0;if(a<0)for(let c=0;c<s.length;c+=2)n.push(s[c],s[c+1],0),r.push(l++);else for(let c=s.length-2;c>=0;c-=2)n.push(s[c],s[c+1],0),r.push(l++);return o.push(l),{indices:r,verticesPerFace:o}}for(let s=0,a=(i=e.capStartIndex)!=null?i:t.length;s<a;)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]){xa.set(n[t[s]*3],n[t[s]*3+1],n[t[s]*3+2]),tc.set(n[t[s+1]*3],n[t[s+1]*3+1],n[t[s+1]*3+2]),rc.set(n[t[s+4]*3],n[t[s+4]*3+1],n[t[s+4]*3+2]),oc.set(n[t[s+5]*3],n[t[s+5]*3+1],n[t[s+5]*3+2]),tc.sub(xa).normalize(),rc.sub(xa).normalize(),oc.sub(xa).normalize();let l=tc.cross(rc).dot(oc);Math.abs(l)>.005?(r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3):(r.push(t[s],t[s+1],t[s+4],t[s+5]),o.push(4),s+=6)}else r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],l=0;for(let c=0,h=0;c<n.length;c+=3,h++)n[c+2]===0&&(s.push(h),l++),n[c+2]===e.userData.parameters.depth&&a.push(h);if(e.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}s.reverse(),r.push(...s,...a),o.push(l,l)}return{indices:r,verticesPerFace:o}}var Yt={};xc(Yt,{calcBoolean:()=>XS,calcBooleanTopological:()=>YS,freeMeshSet:()=>ew,getMeshSet:()=>ZS,transformMeshSet:()=>QS});var $S,Uu=new Promise(n=>{$S=n});import{Float32BufferAttribute as ku,Sphere as JS}from"three";var Ce,wi;Uu.then(n=>Ce=n);function KS(n,t){let e,{positions:r,triIndices:o}=ic(n.getAttribute("position"),n.getIndex()),i;if(t){let{indices:s,verticesPerFace:a}=nc(r,o,n);i=a.length,e=[];for(let l=0,c=0;l<i;l++){e.push(a[l]);for(let h=0;h<a[l];h++)e.push(s[c++])}}else{let s=o.length;e=Array(s+s/3),i=0;for(let a=0,l=0;l<e.length;)e[l++]=3,i++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:r,faceIndices:e,nFaces:i}}function Hu(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 qu(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 YS(n,t){wi===void 0&&(wi=Ce.init_csg());let e=Ce.csg_calc(wi,Hu(n),n.length,qu(t),!0),r=6,o=Ce.HEAPU32.subarray(e>>2,(e>>2)+r),i=o.subarray(3,3+3),s=0,a=Ce.HEAPU32[o[s]>>2],l=new Float32Array(Ce.HEAPF32.subarray(a>>2,(a>>2)+i[s]));s++;let c=Ce.HEAPU32[o[s]>>2],h=new Uint32Array(Ce.HEAPU32.subarray(c>>2,(c>>2)+i[s]));s++;let p=Ce.HEAPU32[o[s]>>2],d=new Uint8Array(Ce.HEAPU32.subarray(p>>2,(p>>2)+i[s]));return Ce.free_mesh_data(e),{positions:l,indices:h,verticesPerFace:d}}function XS(n,t,e){wi===void 0&&(wi=Ce.init_csg());let r=Ce.csg_calc(wi,Hu(n),n.length,qu(t),!1),o=5,i=Ce.HEAPU32.subarray(r>>2,(r>>2)+o),s=i.subarray(2,2+3),a=0,l=Ce.HEAPU32[i[a]>>2],c=Ce.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=Ce.HEAPU32[i[a]>>2],p=Ce.HEAPF32.subarray(h>>2,(h>>2)+s[a]);a++;let d=s[a];e.setAttribute("position",new ku(c,3)),e.setAttribute("normal",new ku(p,3));let u=Ce.HEAPF32.subarray((r>>2)+5,(r>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new JS),e.boundingSphere.center.set(u[0],u[1],u[2]),e.boundingSphere.radius=(u[3]**2+u[4]**2+u[5]**2)**.5,e.userData.parameters={width:u[3]*2,height:u[4]*2,depth:u[5]*2},Ce.free_mesh_data(r),d}function ZS(n,t){if(Ce===void 0)return-1;let e,r,o;if(t&&n.userData.positions!==void 0){let g=n.userData;o=g.verticesPerFace.length,e=g.positions,r=Array(g.verticesPerFace.reduce((w,y)=>w+y,0)+o);for(let w=0,y=0,b=0;w<g.verticesPerFace.length;w++){r[b++]=g.verticesPerFace[w];for(let A=0;A<g.verticesPerFace[w];A++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=KS(n,t));let i=e.length,s=r.length,a=e.length,l=r.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,h=a*Float32Array.BYTES_PER_ELEMENT,p=l*Uint32Array.BYTES_PER_ELEMENT,d=Ce._malloc(c),u=new Float32Array(Ce.HEAPF32.buffer,d,a),f=new Uint32Array(Ce.HEAPU32.buffer,d+h,l);return u.set(e,0),f.set(r,0),Ce.get_csg_mesh(d,i,d+h,s,o)}function QS(n,t){Ce.transform_csg_mesh(n,t.elements)}function ew(n){Ce.free_csg_mesh(n)}var Xl={ConeGeometry:pd,CubeGeometry:dd,CylinderGeometry:hd,DodecahedronGeometry:ud,EllipseGeometry:zd,HelixGeometry:Ud,IcosahedronGeometry:kd,LatheGeometry:Hd,NonParametricGeometry:Jd,PolygonGeometry:Kd,PyramidGeometry:Yd,RectangleGeometry:Zs,SphereGeometry:Xd,PlaneGeometry:Zd,StarGeometry:Qd,TextFrameGeometry:Qs,TorusGeometry:eu,TorusKnotGeometry:tu,TriangleGeometry:ru,VectorGeometry:dt},On=n=>Xl[n.type].create(n);import{VideoTexture as tw}from"three";var Wu=n=>n.tagName==="VIDEO",To=class{static resize(t,e,r){let o=t/e,i;if(!r.image)return;let s=r.image;Wu(s)?i=s.videoWidth/s.videoHeight:i=s.width/s.height,o>i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*i/o):r.repeat.set(1,1*i/o)),o<i&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/i*-1,1):r.repeat.set(1*o/i,1)),o==i&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,i=r.image!==void 0?r.image.width/r.image.height:1,s;o>i?s={x:1,y:i/o}:o<i?s={x:o/i,y:1}:s={x:1,y:1},r.repeat.set(s.x,s.y),r.updateMatrix()}static resizeTextureLayers(t,e,r){let o=r.userData.layers,i=o.getLayers();for(let s=0;s<i.length;s++){let a=i[s];hu(a)&&(To.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),o.updateLayerUniform())}}static resizeComplex(t,e,r,o){let i=t/e,s,a=r.image;Wu(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/i):r.repeat.set(1/t,1/e*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*i/s*-1,1/e):r.repeat.set(1/t*i/s,1/e)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(i>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/i):r.repeat.set(1,1*s/i)),i<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*i/s*-1,1):r.repeat.set(1*i/s,1)),i==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Li=class extends rt{constructor(e,r=new mt){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,o;if(e instanceof tw){let a=e.image;r=a.videoWidth*.5,o=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,o=a.height*.5}let i=Zs.create({parameters:{width:r,height:o}}),s=new mt;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Li(i,s)}};import{BufferGeometry as $u,Matrix4 as rw}from"three";var ow=new rw;var va=class extends rt{constructor(e=new $u,r=new Ot){super(e,r);this.booleanOp=2;this.meshSetAddresses=[];this.needsTransformForDownstream=!1;this.isBooleanMesh=!0,this.castShadow=!0,this.receiveShadow=!0,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}reInit(){this.isBooleanMesh=!0,this.meshSetAddresses=[],this.needsTransformForDownstream=!1,this.geometry.userData.parameters={width:0,height:0,depth:0},this.onAfterRender=this.recomputeBoolean.bind(this)}recomputeBoolean(e){if(this.booleanMeshSetAddress!==-1)return;for(let o=0;o<this.children.length;o++){let i=this.children[o];_r(i)&&i.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let i=this.children[o];if(Au(i)&&i.booleanExclude===!1&&i.geometry.drawRange.count>0){if(i.booleanMeshSetAddress===-1){if(i.booleanMeshSetAddress=Yt.getMeshSet(i.geometry,e===!0),i.booleanMeshSetAddress===-1)return;Yt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1}else _r(i)&&i.needsTransformForDownstream===!0?(Yt.transformMeshSet(i.booleanMeshSetAddress,i.matrix),i.needsTransformForDownstream=!1):i.booleanWasTransformed===!0&&(Yt.transformMeshSet(i.booleanMeshSetAddress,ow.multiplyMatrices(i.matrix,i.booleanMatrixInvOld)),i.booleanMatrixInvOld.copy(i.matrix).invert(),i.booleanWasTransformed=!1);this.meshSetAddresses.push(i.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Yt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new $u,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere,this.booleanMeshSetAddress=Yt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry),this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}updateGeometry(e){this.booleanOp=e.parameters.operation,this.invalidateDownstreamBooleanData().recomputeBoolean()}};import{Camera as bw,OrthographicCamera as vw,PerspectiveCamera as Sw,Vector3 as jt,Object3D as Yu,Quaternion as ww}from"three";import{BoxBufferGeometry as iw}from"three";var vr=n=>{var t;return t=class extends n{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new iw(30,30,30),t};import{Camera as cw,LineSegments as hw,BufferGeometry as pw,LineBasicMaterial as dw,Color as ac,Vector3 as uw,Float32BufferAttribute as Ku}from"three";import{Ray as nw,Sphere as sw,Matrix4 as aw,Vector3 as zr}from"three";var Sa=new nw,sc=new sw,Ju=new aw,Sr=(n,t,e,r,o=!1)=>{let i=t,s=n.matrixWorld;if(i.boundingSphere===null&&i.computeBoundingSphere(),sc.copy(i.boundingSphere),sc.applyMatrix4(s),e.ray.intersectsSphere(sc)===!1||(Ju.copy(s).invert(),Sa.copy(e.ray).applyMatrix4(Ju),i.boundingBox!==null&&Sa.intersectsBox(i.boundingBox)===!1))return;let a,l,c,h,p=i.index,d=i.attributes.position,u=i.drawRange,f,g;if(o===!1){let y=Math.max(0,u.start),b=Math.min(p.count,u.start+u.count);for(f=y,g=b;f<g;f+=3)if(l=p.getX(f),c=p.getX(f+1),h=p.getX(f+2),a=w(n,e,Sa,d,l,c,h),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let b=i.attributes.position,A=new zr,N=new zr,v=new zr,k=new zr,L=2,I=1/((n.scale.x+n.scale.y+n.scale.z)/3),x=I*I,C=Math.max(0,u.start),T=Math.min(b.count,u.start+u.count);for(let O=C,$=T-1;O<$;O+=L){if(A.fromBufferAttribute(b,O),N.fromBufferAttribute(b,O+1),Sa.distanceSqToSegment(A,N,k,v)>x)continue;k.applyMatrix4(n.matrixWorld);let ie=e.ray.origin.distanceTo(k);ie<e.near||ie>e.far||r.push({distance:ie,point:v.clone().applyMatrix4(n.matrixWorld),object:n})}}function w(y,b,A,N,v,k,L){let m=new zr,I=new zr,x=new zr,C=new zr,T=new zr;if(m.fromBufferAttribute(N,v),I.fromBufferAttribute(N,k),x.fromBufferAttribute(N,L),A.intersectTriangle(m,I,x,!1,C)===null)return null;T.copy(C),T.applyMatrix4(y.matrixWorld);let $=b.ray.origin.distanceTo(T);return $<b.near||$>b.far?null:{faceIndex:1,distance:$,point:T.clone(),object:y}}};var wa=new uw,Xt=new cw,lc=class extends hw{constructor(e){let r=new pw,o=new dw({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],s=[],a={},l=new ac(15711266),c=new ac(15711266),h=new ac(2857471);p("n1","n2",l),p("n2","n4",l),p("n4","n3",l),p("n3","n1",l),p("f1","f2",l),p("f2","f4",l),p("f4","f3",l),p("f3","f1",l),p("n1","f1",l),p("n2","f2",l),p("n3","f3",l),p("n4","f4",l),p("p","n1",c),p("p","n2",c),p("p","n3",c),p("p","n4",c),p("u1","u2",h),p("u2","u3",h),p("u3","u1",h);function p(u,f,g){d(u,g),d(f,g)}function d(u,f){i.push(0,0,0),s.push(f.r,f.g,f.b),a[u]===void 0&&(a[u]=[]),a[u].push(i.length/3-1)}r.setAttribute("position",new Ku(i,3)),r.setAttribute("color",new Ku(s,3));super(r,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,r=this.pointMap,o=!0;Xt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let i=1,s=1,a=o?.8:1e-4;sr("n1",r,e,Xt,-i,-s,a),sr("n2",r,e,Xt,i,-s,a),sr("n3",r,e,Xt,-i,s,a),sr("n4",r,e,Xt,i,s,a);let l=a;sr("f1",r,e,Xt,-i,-s,l),sr("f2",r,e,Xt,i,-s,l),sr("f3",r,e,Xt,-i,s,l),sr("f4",r,e,Xt,i,s,l);let c=l,h=.5;sr("u1",r,e,Xt,i*.7*h,s*1.1,c),sr("u2",r,e,Xt,-i*.7*h,s*1.1,c),sr("u3",r,e,Xt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(n,t,e,r,o,i,s){wa.set(o,i,s).unproject(r);let a=t[n];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],wa.x,wa.y,wa.z)}}var La=class extends vr(lc){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){Sr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as mw}from"three";var Ci=class extends vr(mw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ci.geometryHelper,e,r)}};import{AxesHelper as fw}from"three";var Ti=class extends vr(fw){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){Sr(this.object,Ti.geometryHelper,e,r)}update(){}};import{PointLightHelper as yw}from"three";var Ni=class extends vr(yw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ni.geometryHelper,e,r)}};import{SpotLightHelper as gw,Vector3 as xw}from"three";var Ca=class extends vr(gw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){Sr(this.object,Ca.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Ca._vector,r=this.object.distance?this.object.distance:1e3,o=r*Math.tan(this.object.angle);this.cone.scale.set(o,o,r),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let i=this.color!==void 0?this.color:this.light.color;if(this.cone.material instanceof Array)for(let s=0,a=this.cone.material.length;s<a;s++)this.cone.material[s].color.set(i);else this.cone.material.color.set(i)}}},Pn=Ca;Pn._vector=new xw;var wr=(n,t)=>class extends n{constructor(){super(...arguments);this.objectHelper=new t(this);this.enableHelper=!1}set visibility(o){this.visible=o,this.setHelperVisibility(o),this.setHelperChildrenVisibility(o)}get visibility(){return this.visible}get geometryHelper(){return t.geometryHelper}setHelperVisibility(o){this.objectHelper.visible=o}setHelperChildrenVisibility(o){for(let i of this.children)Jt(i)&&i.traverseEntity(s=>{Gr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,i){this.objectHelper.raycast(o,i)}copy(o,i=!0){return super.copy(o,i),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let i=super.toJSON(o),s=i.object;return s.enableHelper=this.enableHelper,i}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,i){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Xe(o.color,i)),o.intensity!==void 0&&(s.intensity=o.intensity),o.depth!==void 0&&(s.shadow.camera.far=o.depth,s.shadow.needsUpdate=!0),o.shadows!==void 0&&(this.castShadow=o.shadows),o.helper!==void 0&&(this.enableHelper=o.helper,s.gizmos.shadowmap.visible=o.helper)}return this}};var Mi=new jt,cc=new jt,Rr=class extends wr(Kt(bw),La){constructor(e=window.innerWidth,r=window.innerHeight,o=45,i,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=mo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new vw(e*-.5,e*.5,r*.5,r*-.5,i!=null?i:-5e4,s),this.perspCamera=new Sw(o,e/r,i!=null?i:50,s),this.left=this.orthoCamera.left,this.right=this.orthoCamera.right,this.top=this.orthoCamera.top,this.bottom=this.orthoCamera.bottom,this.far=this.orthoCamera.far,this.view=this.orthoCamera.view,this.aspect=this.perspCamera.aspect,this.fov=this.perspCamera.fov,this.focus=this.perspCamera.focus,this.filmGauge=this.perspCamera.filmGauge,this.filmOffset=this.perspCamera.filmOffset,this.toOrthographic(!0)}static createFromState(e,r){let o=new Rr().fromState(r);return o.enableHelper=!0,o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(Mi),this.targetOffset=Mi.distanceTo(e)}getTarget(e=new jt){return this.getWorldDirection(cc),this.getWorldPosition(Mi),cc.multiplyScalar(this.targetOffset),e.copy(Mi).add(cc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Mi),Mi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new ww),r=new jt(0,0,1).applyQuaternion(e),o=new jt().copy(Yu.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let i=new jt().copy(Yu.DefaultUp).projectOnPlane(r),s=new jt().crossVectors(i,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=i.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new jt),i=e.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().add(i),target:r}}getViewToObject(e){let r=e.getWorldPosition(new jt),i=this.getWorldDirection(new jt).multiplyScalar(this.targetOffset);return{position:r.clone().sub(i),target:r}}setViewplaneSize(e,r){this.left=-e*.5,this.right=e*.5,this.top=r*.5,this.bottom=-r*.5,this.aspect=e/r,this.updateProjectionMatrix()}toOrthographic(e){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.enableHelper===!0||e===!0)&&this.objectHelper.update()}toPerspective(e){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.enableHelper===!0||e===!0)&&this.objectHelper.update()}setFocalLength(e){this.perspCamera.setFocalLength(e),this.toPerspective()}getFocalLength(){return this.perspCamera.getFocalLength()}getEffectiveFOV(){return this.perspCamera.getEffectiveFOV()}getFilmWidth(){return this.perspCamera.getFilmWidth()}getFilmHeight(){return this.perspCamera.getFilmHeight()}setViewOffset(e,r,o,i,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,i,s,a):this.orthoCamera.setViewOffset(e,r,o,i,s,a)}clearViewOffset(){this._cameraType==="PerspectiveCamera"?(this.perspCamera.clearViewOffset(),this.toPerspective()):(this.orthoCamera.clearViewOffset(),this.toOrthographic())}updateProjectionMatrix(e){this._cameraType==="PerspectiveCamera"?this.toPerspective(e):this._cameraType==="OrthographicCamera"&&this.toOrthographic(e)}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,r){return super.copy(e,r),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},o={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=o.near,this.perspCamera.far=o.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="CombinedCamera",o.cameraType=this.cameraType,o.targetOffset=this.targetOffset,o.isUpVectorFlipped=this.isUpVectorFlipped,o.angleOffsetFromUp=this.angleOffsetFromUp,o.left=this.left,o.right=this.right,o.top=this.top,o.bottom=this.bottom,this.view!==null&&(o.view=Object.assign({},this.view)),o.zoomOrtho=this.orthoCamera.zoom,o.nearOrtho=this.orthoCamera.near,o.far=this.far,o.aspect=this.aspect,o.fov=this.fov,o.focus=this.focus,o.filmGauge=this.filmGauge,o.filmOffset=this.filmOffset,o.zoomPersp=this.perspCamera.zoom,o.nearPersp=this.perspCamera.near,r}fromJSON(e){var r;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let o=this.getWorldPosition(new jt),i=new jt().fromArray(e.orbitControlsTarget);this.targetOffset=i.distanceTo(o)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=e.angleOffsetFromUp)!=null?r:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),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 $o(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return H(P(P({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as Lw}from"three";var Fr=class extends wr(Kt(Lw),Ti){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Fr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as Cw,CameraHelper as Ta}from"three";var Oi=class extends wr(Kt(Cw),Ci){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=1,o.far=2500;let i=new Ta(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Oi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ta&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightDirectional",o.color=this.color.getHex(),o.intensity=this.intensity,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.left=o.left,r.right=o.right,r.top=o.top,r.bottom=o.bottom,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Ou(this,e.size),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as Tw,Vector3 as Na,Box3 as Nw,Box3Helper as Ma,Color as Mw}from"three";var Pi=class extends wr(Kt(Tw),Ni){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let i=new Na(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Na(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Nw(i,s),l=new Ma(a,new Mw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let i=new Pi().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ma&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ma&&(r.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let r=this._gizmos[e];if(r instanceof Ma){let o=this.shadow.camera,i=new Na(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Na(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(i,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightPoint",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.decay=this.decay,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as Ow,CameraHelper as Oa,MathUtils as Pw,Vector3 as em,Quaternion as Iw}from"three";var Xu=new em,Zu=new em,Qu=new Iw,Ii=class extends wr(Kt(Ow),Pn){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=Pw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let i=new Oa(this.shadow.camera);i.visible=!1,this._gizmos.shadowmap=i,this.update()}static createFromState(e,r,o){let i=new Ii().fromState(r,o);return i.uuid=e,i}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Zu.setFromMatrixPosition(this.matrixWorld),Qu.setFromRotationMatrix(this.matrixWorld),Xu.copy(this.up).applyQuaternion(Qu).negate().multiplyScalar(this.distance),this.target.position.copy(Zu).add(Xu),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightSpot",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.angle=this.angle,o.decay=this.decay,o.penumbra=this.penumbra,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var i;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(i=e.shadow.normalBias)!=null?i:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var Ai=class extends rt{constructor(e,r=new Ot){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var Di=class extends Ai{constructor(e,r=new Ot){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Aw,Mesh as Dw,MeshBasicMaterial as Bw,ShapeBufferGeometry as Ew,Vector2 as _w,Vector3 as Gw}from"three";import{FontLoader as zw}from"three/examples/jsm/loaders/FontLoader.js";var Ze=class extends Dw{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:i,fontSize:s,LOD:a=16},l=new Bw({color:0,opacity:1,visible:!0,transparent:!0,side:Aw})){let c=Ze.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?r:e,this.fontFamily=o,this.letterSpacing=i,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new _w,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ze._fontPath}static set FONTS_PATH(e){Ze._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Gw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ze.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ze.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ze.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ze(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ze.fontCache[e]?r(Ze.fontCache[e]):new zw().load(Ze.FONTS_PATH+e+".json",s=>{Ze.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ze.charCache[e]){if(Ze.charCache[e][o]&&Ze.charCache[e][o].fontFamily===r)return Ze.charCache[e][o]}else Ze.charCache[e]={};let i=Ze.fontCache[r],s=i.generateShapes(e,1);return Ze.charCache[e][o]={geometry:new Ew(s,o),fontFamily:r,resolution:i.data.resolution,glyphsHa:i.data.glyphs[e].ha},Ze.charCache[e][o]}},Pt=Ze;Pt.charCache={},Pt.fontCache={},Pt._fontPath="/_assets/_fonts/";import{DoubleSide as Ia,MeshBasicMaterial as rm,Vector3 as om,Object3D as Rw}from"three";import{Vector2 as tm}from"three";var Pa=new tm,io=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new tm(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(t,e,r=this.message.length){this.message.splice(r,0,t),t.fontSize>this.maxCharSize?(this.maxCharSize=t.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(t.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=t.charSize)}deleteChar3D(t=this.message.length-1){let e=this.message[t];if(e)return this.message.splice(t,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(t){this.endLine=t}fullUpdate(t,e=0){this.nextChar3DPos.x=0;for(let r=e,o=this.message.length;r<o;r+=1)this.message[r].updatePosition(this.nextChar3DPos,t),this.nextChar3DPos.x+=this.message[r].charSize}checkOverFlow(t){let e,r=this.message.length-1;if(r<=0)return!1;for(;r>=0;){if(this.message[r].char!==" "){e=this.message[r];break}r-=1}return!!(r>=0&&e&&e.localPosition.x+e.charSize>t)}containSpaceOverFlow(t=this.message.length-1){for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(t=this.message.length-1){if(this.endLine)return!0;for(let e=t;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(t=this.message.length-1){let e=[],r=!0,o;for(o=t;o>=0;o-=1)if(this.message[o].char===" "){r=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return r?e=[]:this.message.splice(o+1,e.length),e}getWord(t=0,e=1){let r=[],o=t;for(o=t;;o+=e){if(!this.message[o]||this.message[o].char===" "){r.length===0&&this.message[o]&&(r.push(this.message[o]),this.message.splice(o,1));break}e>0?(r.push(this.message[o]),this.message.splice(o,1),o-=e):(r.splice(0,0,this.message[o]),this.message.splice(o,1))}return r}getWordAtIndex(t){let e=[];for(let r=t;r<this.message.length&&this.message[r].char!==" ";r++)e.push(this.message[r]);for(let r=t-1;r>=0&&this.message[r].char!==" ";r--)e.splice(0,0,this.message[r]);return e}wordSize(t=0,e=-1){let r=0,o=t;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){r===0&&(r=this.message[o].charSize);break}r+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[t]?this.message[t].charSize:999999999:r===0?999999999:r}spaceLeft(t){return t-this.nextChar3DPos.x}popChar(t=this.message.length-1){return this.nextChar3DPos.x-=this.message[t].charSize,this.message.splice(t,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(t){this.yLinePos=t,this.updateNextCharPosY()}updatelineHeight(t){this.lineHeight=t,this.updateNextCharPosY()}updateFontSize(t,e=0,r=this.message.length-1){for(let o=e;o<=r;o+=1)this.message[o].updateFontSize(t);this.maxCharSize=t,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let t=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(t+=1);return t}alignText(t,e,r,o,i){switch(r){case 1:this.leftAlign(t,i);break;case 3:this.centerAlign(this.spaceLeft(e),t,i);break;case 2:this.rightAlign(this.spaceLeft(e),t,i);break;case 4:this.justifyAlign(this.spaceLeft(e),t,i);break}}offsetCharacters(t,e,r){Pa.set(e,r);let o=this.message.length;for(let i=0;i<o;i++)this.message[i].updatePosition(this.message[i].localPosition.add(Pa),t)}leftAlign(t,e){this.align=1,this.offsetCharacters(t,0,e)}centerAlign(t,e,r){this.align=3,this.offsetCharacters(e,t/2,r)}rightAlign(t,e,r){this.align=2,this.offsetCharacters(e,t,r)}justifyAlign(t,e,r){if(this.align=4,this.endLine){this.offsetCharacters(e,0,r);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,r);return}let i=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=i),Pa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Pa),e)}clone(){let t=new io(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var hc=class extends rt{constructor(e,r=new mt({transparent:!0,opacity:1,visible:!1,side:Ia})){super(e,r);this.objectType="TextFrame";this.charContainer=new Rw,this.add(this.charContainer),this.material.visible=!1,this._geometryUserData=e.userData,this.userData.textFrame={hexColor:null,opacity:1,visible:!0,text:"",fontSize:16,lineHeight:1.5,letterSpacing:1,fontFamily:"roboto_regular",textTransform:1,horizontalAlignment:1,verticalAlignment:1,LOD:16,maxLineSize:this._geometryUserData.parameters.width,textOrigin:new om(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let i=Qs.create({parameters:{width:r.width,height:r.height}}),s=new hc(i).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Pt.loadFont(o),r.text=e;let i=r.textOrigin,s=new rm({visible:r.visible,transparent:!0,side:Ia}),a=e.split(`
|
|
942
|
+
`),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new io(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(d=>{let u={char:d,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new Pt(u,f);return p.addChar3D(g,i),this.charContainer.add(g),g}),l+=p.maxCharSize*p.lineHeight,p}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let r=this.charContainer.children[0];this.charContainer.remove(r)}for(;e.length;)e.pop()}raycast(e,r){let o=[];if(super.raycast(e,o),o.length>0){r.push(o[0]);return}let i=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof Pt&&(e.intersectObject(this.charContainer.children[s],!1,i),i.length>0)){i[0].object=this,r.push(i[0]);return}}updateGeometry(e){var h,p,d,u;let r=this.userData,o=this.geometry.userData,i=o.parameters.width,s=o.parameters.height,a=(p=(h=e.parameters)==null?void 0:h.width)!=null?p:i,l=(u=(d=e.parameters)==null?void 0:d.height)!=null?u:s,c=r.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==i&&(i<a?this.checkCapacity():i>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.textLines;for(let s=e;s<i.length;s++){i[s].updateYLinePos(this.getNewLinePosition(s)),i[s].fullUpdate(o);let a=[];for(;i[s].checkOverFlow(r.textFrame.maxLineSize);)i[s].containSpaceOverFlow()?a.unshift(i[s].getWord(i[s].message.length-1,-1)):a.unshift(i[s].popChar());if(a.length>0){i[s+1]===void 0?(i[s].isEndLine(!1),this.createTextLine()):i[s].endLine&&(this.createTextLine(s+1),i[s].isEndLine(!1),i[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let h=0;h<a[c].length;h+=1)i[s+1].addChar3D(a[c][h],o,l),l+=1;i[s+1].fullUpdate(o)}i[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,i=r.textFrame.maxLineSize,s=r.textFrame.textLines;for(let a=e;a<s.length;a+=1)if(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o),!!s[a-1])for(;!s[a-1].endLine;){let l,c=s[a-1].spaceLeft(i);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let h=0;h<l.length;h+=1)l[h]&&s[a-1].addChar3D(l[h],o)}else{s[a].isEmpty()?(s[a].endLine&&s[a-1].isEndLine(!0),s.splice(a,1),a-=1):(s[a].updateYLinePos(this.getNewLinePosition(a)),s[a].fullUpdate(o));break}}this.textFullUpdate(e)}createTextLine(e=this.userData.textFrame.textLines.length){let o=this.userData.textFrame;o.textLines.splice(e,0,new io(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,i=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<i.length;a++)i[a].updateYLinePos(this.getNewLinePosition(a)),i[a].fullUpdate(o.textOrigin),i[a].alignText(o.textOrigin,o.maxLineSize,o.horizontalAlignment,o.verticalAlignment,s)}getVerticalAlignmentOffSet(){switch(this.userData.textFrame.verticalAlignment){case 1:return 0;case 2:return this.getRemainingVerticalSpace()/2;case 3:return this.getRemainingVerticalSpace();default:return 0}}getRemainingVerticalSpace(){let r=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(r.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,i=0;for(let s=0;s<e;s+=1)i+=o[s].maxCharSize*o[s].lineHeight;return i}updateColor(e){var i;let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++){let c=a[l].material;(i=c.color)!=null&&i.isColor&&(c.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let r=this.userData;r.textFrame.visible=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await Pt.loadFont(e);let o=this.userData.textFrame,i=o.textLines;o.fontFamily=e;for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)a[l].updateFontFamily(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateFontSize(e){let o=this.userData.textFrame,i=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<i.length;a++)i[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Pt.loadFont(o.fontFamily);let i=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<i.length;s++){let a=i[s].message;for(let l=0;l<a.length;l++)i[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.letterSpacing=e;for(let i=0;i<o.length;i++){let s=o[i].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let r=this.userData;r.textFrame.LOD=e;let o=r.textFrame.textLines;for(let i=0;i<o.length;i++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let i=0;i<o.length;i++)o[i].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let r=this.userData;r.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let r=this.userData;r.textFrame.horizontalAlignment=e,this.textFullUpdate()}toJSON(e){let r=super.toJSON(e),o=r.object;o.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return o.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await Pt.loadFont(r.fontFamily),r.textOrigin=new om(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new rm({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:Ia});r.textLinesData&&(r.textLines=r.textLinesData.map((i,s)=>{let a=new io(Number(i.yLinePos),Number(i.lineHeight),Number(i.maxCharSize)),l=i.message.map((c,h)=>{if(c.char===void 0){let u=r.textLines[s].message[h];if("geometries"in u){let f=u.geometries[0].userData.parameters;Object.assign(c,{LOD:f.lod,char:f.char,fontFamily:f.fontFamily,fontSize:f.fontSize,letterSpacing:f.letterSpacing,originalChar:f.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},d=new Pt(p,o.clone());return a.addChar3D(d,r.textOrigin),this.charContainer.add(d),d});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Xe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,o=new Fr;o.name="Text Shape";let i=Pt.fontCache[e];for(let s of this.charContainer.children)s instanceof Pt&&i.generateShapes(s.char,1).forEach(a=>{let l=new Oe().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=dt.create({shape:l}),h=new mt({side:Ia});h.color=r;let p=new oo(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},No=hc;No.VerticalAlign=nl,No.HorizontalAlign=il,No.TextTransform=sl;import{HemisphereLight as Zw,Scene as Qw,Vector3 as e1,Color as ym,Fog as t1,Box3 as r1}from"three";import{Box3 as Fw,Matrix4 as Mo,Sphere as sm,Vector3 as Vw}from"three";var lm=zm(nm());var pc;ea.then(n=>{pc=n});var cm=new Mo,jw=new Mo,Uw=new Mo,ar=new Fw,no=new Vw,kw=new Mo,Hw=new Mo,Bi=class extends rt{constructor(e,r,o,i=new Ot){super(o!=null?o:r,i);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Mo;this.smoothShading=!0;this.matrixWorldRigid=new Mo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:i,originalGeometry:s,subdividedGeometry:a}=nr.build(r.geometry,void 0,!r.flatShading),l=Cn(r.material,o),c=new Bi(i,s,a||void 0,l);return c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new Di(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e){var s,a,l;let{originalGeometry:r,subdividedGeometry:o,subdivPointer:i}=nr.build(e,this.subdivPointer,this.smoothShading,this.shearScale);if(this.subdivPointer=i,r!==void 0&&((s=this.originalGeometry)==null||s.dispose(),this.originalGeometry=r),o!==void 0&&((a=this.subdividedGeometry)==null||a.dispose(),this.subdividedGeometry=o!=null?o:void 0),this.geometry=(l=this.subdividedGeometry)!=null?l:this.originalGeometry,this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){nr.buildLevel(this.subdivPointer,!0,this.smoothShading,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&nr.buildLevel(this.subdivPointer,!1,this.smoothShading,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=nr.buildLevel(this.subdivPointer,!0,this.smoothShading),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=nr.buildLevel(this.subdivPointer,!1,this.smoothShading)),this.geometry=(e=this.subdividedGeometry)!=null?e:this.originalGeometry}raycast(e,r){var o;this.geometry=this.originalGeometry,rt.prototype.raycast.call(this,e,r),this.geometry=(o=this.subdividedGeometry)!=null?o:this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:i,q:s}=(0,lm.SVD)(r),a=cm.set(o[0][0],o[0][1],o[0][2],0,o[1][0],o[1][1],o[1][2],0,o[2][0],o[2][1],o[2][2],0,0,0,0,1),l=jw.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),c=Uw.copy(l).transpose();this.shearScale=kw.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=Hw.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(h=>Math.abs(s[0]-h)<.01)&&(this.shearScale=void 0,this.shearScaleInv=void 0)}activateSVDCompensation(){this.shearScale!==void 0&&(this.matrixAutoUpdate=!1,this.matrix.copy(this.matrixWorldRigid).copyPosition(this.matrixWorld),this.hiddenMatrixOld.copy(this.hiddenMatrix),this.hiddenMatrix.copy(this.parent.matrixWorld).invert())}deactivateSVDCompensation(){this.shearScale!==void 0&&(this.shearScale=void 0,this.shearScaleInv=void 0,this.matrixAutoUpdate=!0,this.hiddenMatrix.copy(this.hiddenMatrixOld))}calcBoundingBox(){let e=this.originalGeometry;e.boundingSphere===null&&(e.boundingSphere=new sm);let r=e.attributes.position,o=e.boundingSphere.center;ar.setFromBufferAttribute(r),ar.getCenter(o),e.boundingSphere.radius=o.distanceTo(ar.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(no);let i={width:no.x,height:no.y,depth:no.z};return this.geometry.userData.parameters=i,i}updateBoundingBox(e){let r=this.originalGeometry;ar.min.set(e[0],e[2],e[4]),ar.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(ar.min.applyMatrix4(this.shearScaleInv),ar.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new sm);let o=r.boundingSphere.center;ar.getCenter(o),r.boundingSphere.radius=o.distanceTo(ar.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(no);let i={width:no.x,height:no.y,depth:no.z};return this.geometry.userData.parameters=i,i}freeSubdivPointer(){this.subdivPointer&&(pc.free_bvh(this.subdivPointer),pc.free_subdivision_surface(this.subdivPointer),this.subdivPointer=0)}updateGeometry(e){this.geometry.userData.scale||(this.geometry.userData.scale=Array(3)),this.geometry.userData.scale[0]=this.geometry.userData.parameters.width===0?1:e.parameters.width/this.geometry.userData.parameters.width,this.geometry.userData.scale[1]=this.geometry.userData.parameters.height===0?1:e.parameters.height/this.geometry.userData.parameters.height,this.geometry.userData.scale[2]=this.geometry.userData.parameters.depth===0?1:e.parameters.depth/this.geometry.userData.parameters.depth,am(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(am(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=P({},e.parameters)}};function am(n,t,e,r){let o=n.position.array,i=n.normal.array,s=cm.makeScale(t,e,r).invert().elements,a,l,c;for(var h=0,p=o.length;h<p;h+=3)o[h]*=t,o[h+1]*=e,o[h+2]*=r,a=i[h],l=i[h+1],c=i[h+2],i[h]=s[0]*a+s[4]*l+s[8]*c,i[h+1]=s[1]*a+s[5]*l+s[9]*c,i[h+2]=s[2]*a+s[6]*l+s[10]*c}import{BackSide as qw,BufferGeometry as Ww,DoubleSide as $w,FrontSide as Jw}from"three";function hm(n,t){t.flatShading!==void 0&&(n.flatShading=t.flatShading,n.needsUpdate=!0),t.wireframe!==void 0&&(n.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?n.side=Jw:t.side===1?n.side=qw:n.side=$w)}function Kw(n,t){if(Array.isArray(n.material))for(let e of n.material)hm(e,t);else{let e=n.material;hm(e,t)}n.objectType==="SubdivObject"&&t.flatShading!==void 0&&(n.material.flatShading=!1,n.smoothShading=!t.flatShading,n.updateMesh())}function pm(n,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Bi.createFromState(n,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new Ww:ga(t.geometry,e),i="materials"in t?Cu(t.materials,e):Cn(t.material,e);zs.is2DParametricMesh(o.userData.type)?r=new Li(o,i):(o==null?void 0:o.userData.type)==="VectorGeometry"?r=new oo(o,i):t.geometry.type==="NonParametricGeometry"?r=new Di(o,i):t.geometry.type==="BooleanGeometry"?(r=new va(void 0,i),r.booleanOp=t.geometry.operation):r=new Ai(o,i),r.uuid=n,r.fromState(t)}return Kw(r,t),r}function dm(n,t,e){return t.type==="Mesh"?pm(n,t,e):t.type==="TextFrame"?No.createFromState(n,t,e):t.type==="Empty"?Fr.createFromState(n,t):t.type==="PointLight"?Pi.createFromState(n,t,e):t.type==="SpotLight"?Ii.createFromState(n,t,e):t.type==="DirectionalLight"?Oi.createFromState(n,t,e):Jo.is(t.type)?Rr.createFromState(n,t):(console.error(t),new Fr)}function Yw(n,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=n.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=n.depthTexture}function um(n,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission");return o.length>0?(t.layers.set(3),r=!0,n!==void 0&&o.forEach(i=>Yw(n,i))):t.layers.set(0),r}function mm(n,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)um(n,r,r.material[o])&&(e=!0);else um(n,r,r.material)&&(e=!0)}),e}function fm(n,t){"material"in n&&Xw(n.material,t),"geometry"in n&&n.geometry.dispose()}function Xw(n,t){bc(n).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var gm=new e1,dc=class extends ya(Qw){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new t1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new ym(1,0,0);this.bgColor=new ym(1,1,1);this.entityByUuid={};this.ambientLight=new Zw(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.sharedAssetManager=r,this.init(e,r)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=mm(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Xe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Rr&&this.switchActiveCamera(o)}}clearScene(e){this.traverseEntity(r=>{fm(r,e)});for(let r of this.children)Jt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Rr.createFromState(dc.PERSONAL_CAMERA_ID,H(P({},Fs.defaultData),{name:"Personal Camera"}));return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=i=>{for(let s of i.children)Jt(s)&&!s.raycastLock&&s.visible&&((br(s)||Gr(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,r),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)Jt(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Mu(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let i of e)this.createChildObject(i.id,i.data,i.children,r,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let r of e.children)this.unregisterObject(r)}createChildObject(e,r,o,i,s){let a=dm(e,r,s);return a&&(this.entityByUuid[e]=a,i.add(a),_r(i)&&br(a)&&(a.prevBooleanObjectParent=i),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let i=0,s=e.length;i<s;++i){let{id:a,recursive:l}=e[i],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let o=new r1;return o.setFromPoints(r),o.getCenter(gm),gm}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){var i;if(e===null){r.identity();return}let o=(i=this.find(e))==null?void 0:i.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)e(r.material[o]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,i;e>=r?(o=r/e,i=1):(o=1,i=e/r),this.traverseMaterial(s=>{s.layersList.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=i})})}},In=dc;In.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as o1}from"three/examples/jsm/loaders/DRACOLoader.js";var so;function i1(){return so||(so=new o1,so.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),so.decoderPending}async function n1(n){if(so){let t={attributeIDs:so.defaultAttributeIDs,attributeTypes:so.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await so.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 xm(n){let[t,e]=Ua(Ds.deserialize(new Uint8Array(n))),r=[];t.scene.objects.traverse((o,i)=>{i.type==="Mesh"&&i.geometry.type==="NonParametricGeometry"&&i.geometry.data.draco!==void 0&&r.push(i)}),r.length&&await i1();for(let o of r){let i=await n1(Ha(o.geometry.data.draco));if(i){i.index&&(o.geometry.data.index={array:i.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};i.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),o.geometry.data.attributes=s,o.geometry.data.draco=void 0}}return e.result().data}import{WebGLRenderTarget as s1,LinearMipmapLinearFilter as a1,LinearFilter as l1,ClampToEdgeWrapping as bm,DepthTexture as c1}from"three";var vm=new mt,Da=class extends Dt{},Ba=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new s1(2048,2048,{generateMipmaps:!0,minFilter:a1,magFilter:l1,wrapS:bm,wrapT:bm}),this.transmissionRenderTarget.depthTexture=new c1(2048,2048),this.reset(t)}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.data);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,Jl(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===vm}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:vm}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad(t)},this.images[t].src=e,!0;{let r=new Image;return r.src=e,r.onload=()=>{this.onImageLoad&&this.onImageLoad(t)},this.images[t]=r,!1}}deleteImage(t){this.images[t]&&delete this.images[t]}getDefaultImage(){return this.images.image_0}getImage(t){return this.images[t]}getImages(){return this.images}addColor(t,e){return this.colors[t]?("a"in e?this.colors[t].setRGBA(e.r,e.g,e.b,e.a):this.colors[t].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[t]=new Da(e.r,e.g,e.b,e.a):this.colors[t]=new Da(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,o,i,s;if(this.colors[t]){let a=this.colors[t];return this.colors[t].r=(r=e.r)!=null?r:a.r,this.colors[t].g=(o=e.g)!=null?o:a.g,this.colors[t].b=(i=e.b)!=null?i:a.b,this.colors[t].a=(s=e.a)!=null?s:a.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{Mesh as V4}from"three";import{mergeBufferGeometries as k4}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Sm(n){let t;if(!!n.index)for(let e=0;e<n.index.array.length;e+=3)t=n.index.array[e],n.index.array[e]=n.index.array[e+2],n.index.array[e+2]=t}import{Color as wm,ShaderLib as h1}from"three";function Lm(n){let t=new Set;return n.traverse(e=>{if(br(e))if(et(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);p1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new wm,specularColor:new wm}),e.onBeforeCompile=(o,i)=>{r&&r(o,i),o.uniforms=Object.assign(h1.physical.uniforms,o.uniforms),e.userData.layers.getLayersOfType("transmission").forEach(s=>{o.uniforms.transmissionSamplerMap.value&&(s.uniforms["f"+s.id+"_transmissionSamplerMap"].value=o.uniforms.transmissionSamplerMap.value,s.uniforms["f"+s.id+"_transmissionSamplerSize"].value=o.uniforms.transmissionSamplerSize.value)})}):d1(e)||(e.onBeforeCompile=(o,i)=>{r&&r(o,i),e.transparent=!1})}),n}function p1(n){return n.userData.layers.getLayersOfType("transmission").length>0}function d1(n){let t=n.userData.layers.head,e=0;for(;t!==void 0;){if(t.type!=="light"&&t.type!=="fresnel"){let r=t.uniforms["f"+t.id+"_alpha"];r&&(e+=(1-e)*r.value)}t=t.next}return e<1}function Cm(n){return n.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),n}function Tm(n){let t=[],e=(r,o=0)=>{let i=o>0?r+o:r;return t.includes(i)?e(r,o+1):i};return n.traverse(r=>{if(t.includes(r.name)){let o=r.name,i=e(r.name);if(r.name=i,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,i)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,i))}}t.push(r.name)}),n}import{mergeBufferGeometries as u1}from"three/examples/jsm/utils/BufferGeometryUtils";function Nm(n){let t=[];return n.traverse(e=>{e instanceof Co&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,i=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&Sm(l),l}),s=u1(e.parameters.hideBase?i:[r.geometry,...i]);r.geometry=s,r.material=o[0].material,r.remove(e)}),n}var Mm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",uc=class extends f1{load(t,e,r,o=console.error){let i=new m1(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Mm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Mm),i.load(t,async s=>{try{if(typeof s=="string")throw new Error("The .spline file is not binary!");let a=await this.parse(s);e(a)}catch(a){o(a)}},r,o)}async parse(t){let e=await xm(t),r=new Ba(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new In(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let i=e.scene.publish.playCamera;if(i){let s=o.find(i);s&&Nu(s)&&Object.assign(s,{makeDefault:!0})}return o=Nm(o),o=Lm(o),o=Cm(o),o=Tm(o),o}};export{uc as default};
|