@splinetool/loader 0.9.71 → 0.9.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SplineLoader.cjs +997 -998
- package/build/SplineLoader.js +997 -998
- package/package.json +1 -1
package/build/SplineLoader.cjs
CHANGED
|
@@ -1,542 +1,607 @@
|
|
|
1
|
-
var Pm=Object.create;var Vi=Object.defineProperty;var Mm=Object.getOwnPropertyDescriptor;var Am=Object.getOwnPropertyNames;var Om=Object.getPrototypeOf,Dm=Object.prototype.hasOwnProperty;var _m=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),mc=(i,t)=>{for(var e in t)Vi(i,e,{get:t[e],enumerable:!0})},fc=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Am(t))!Dm.call(i,o)&&o!==e&&Vi(i,o,{get:()=>t[o],enumerable:!(r=Mm(t,o))||r.enumerable});return i};var Bm=(i,t,e)=>(e=i!=null?Pm(Om(i)):{},fc(t||!i||!i.__esModule?Vi(e,"default",{value:i,enumerable:!0}):e,i)),Em=i=>fc(Vi({},"__esModule",{value:!0}),i);var nm=_m((Ba,om)=>{(function(i,t){typeof Ba=="object"&&typeof om<"u"?t(Ba):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(Ba,function(i){"use strict";i.SVD=function(t,e,r,o,n){if(e=e===void 0||e,r=r===void 0||r,n=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,m,g,x,y,v=t[0].length,P=t.length;if(P<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],B=[],w=e==="f"?P:v,f=g=u=0;f<P;f++)b[f]=new Array(w).fill(0);for(f=0;f<v;f++)B[f]=new Array(v).fill(0);var D,C=new Array(v).fill(0);for(f=0;f<P;f++)for(s=0;s<v;s++)b[f][s]=t[f][s];for(f=0;f<v;f++){for(S[f]=u,m=0,l=f+1,s=f;s<P;s++)m+=Math.pow(b[s][f],2);if(m<n)u=0;else for(d=(p=b[f][f])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,b[f][f]=p-u,s=l;s<v;s++){for(m=0,a=f;a<P;a++)m+=b[a][f]*b[a][s];for(p=m/d,a=f;a<P;a++)b[a][s]=b[a][s]+p*b[a][f]}for(C[f]=u,m=0,s=l;s<v;s++)m+=Math.pow(b[f][s],2);if(m<n)u=0;else{for(d=(p=b[f][f+1])*(u=p<0?Math.sqrt(m):-Math.sqrt(m))-m,b[f][f+1]=p-u,s=l;s<v;s++)S[s]=b[f][s]/d;for(s=l;s<P;s++){for(m=0,a=l;a<v;a++)m+=b[s][a]*b[f][a];for(a=l;a<v;a++)b[s][a]=b[s][a]+m*S[a]}}g<(x=Math.abs(C[f])+Math.abs(S[f]))&&(g=x)}if(r)for(f=v-1;0<=f;f--){if(u!==0){for(d=b[f][f+1]*u,s=l;s<v;s++)B[s][f]=b[f][s]/d;for(s=l;s<v;s++){for(m=0,a=l;a<v;a++)m+=b[f][a]*B[a][s];for(a=l;a<v;a++)B[a][s]=B[a][s]+m*B[a][f]}}for(s=l;s<v;s++)B[f][s]=0,B[s][f]=0;B[f][f]=1,u=S[f],l=f}if(e){if(e==="f")for(f=v;f<P;f++){for(s=v;s<P;s++)b[f][s]=0;b[f][f]=1}for(f=v-1;0<=f;f--){for(l=f+1,u=C[f],s=l;s<w;s++)b[f][s]=0;if(u!==0){for(d=b[f][f]*u,s=l;s<w;s++){for(m=0,a=l;a<P;a++)m+=b[a][f]*b[a][s];for(p=m/d,a=f;a<P;a++)b[a][s]=b[a][s]+p*b[a][f]}for(s=f;s<P;s++)b[s][f]=b[s][f]/u}else for(s=f;s<P;s++)b[s][f]=0;b[f][f]=b[f][f]+1}}for(o*=g,a=v-1;0<=a;a--)for(var I=0;I<50;I++){for(D=!1,l=a;0<=l;l--){if(Math.abs(S[l])<=o){D=!0;break}if(Math.abs(C[l-1])<=o)break}if(!D){for(h=0,c=l-(m=1),f=l;f<a+1&&(p=m*S[f],S[f]=h*S[f],!(Math.abs(p)<=o));f++)if(u=C[f],C[f]=Math.sqrt(p*p+u*u),h=u/(d=C[f]),m=-p/d,e)for(s=0;s<P;s++)x=b[s][c],y=b[s][f],b[s][c]=x*h+y*m,b[s][f]=-x*m+y*h}if(y=C[a],l===a){if(y<0&&(C[a]=-y,r))for(s=0;s<v;s++)B[s][a]=-B[s][a];break}for(g=C[l],p=(((x=C[a-1])-y)*(x+y)+((u=S[a-1])-(d=S[a]))*(u+d))/(2*d*x),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+d*(x/(p<0?p-u:p+u)-d))/g,f=l+(m=h=1);f<a+1;f++){if(u=S[f],x=C[f],d=m*u,u*=h,y=Math.sqrt(p*p+d*d),p=g*(h=p/(S[f-1]=y))+u*(m=d/y),u=-g*m+u*h,d=x*m,x*=h,r)for(s=0;s<v;s++)g=B[s][f-1],y=B[s][f],B[s][f-1]=g*h+y*m,B[s][f]=-g*m+y*h;if(y=Math.sqrt(p*p+d*d),p=(h=p/(C[f-1]=y))*u+(m=d/y)*x,g=-m*u+h*x,e)for(s=0;s<P;s++)x=b[s][f-1],y=b[s][f],b[s][f-1]=x*h+y*m,b[s][f]=-x*m+y*h}S[l]=0,S[a]=p,C[a]=g}for(f=0;f<v;f++)C[f]<o&&(C[f]=0);return{u:b,q:C,v:B}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var rS={};mc(rS,{default:()=>Ea});module.exports=Em(rS);var Ga=require("three");function gc(i){return Array.isArray(i)?i:[i]}var Gm=typeof global=="object"&&global&&global.Object===Object&&global,Fi=Gm;var Rm=typeof self=="object"&&self&&self.Object===Object&&self,zm=Fi||Rm||Function("return this")(),Ye=zm;var Vm=Ye.Symbol,vt=Vm;var yc=Object.prototype,Fm=yc.hasOwnProperty,Um=yc.toString,Rn=vt?vt.toStringTag:void 0;function jm(i){var t=Fm.call(i,Rn),e=i[Rn];try{i[Rn]=void 0;var r=!0}catch{}var o=Um.call(i);return r&&(t?i[Rn]=e:delete i[Rn]),o}var xc=jm;var km=Object.prototype,Hm=km.toString;function Wm(i){return Hm.call(i)}var vc=Wm;var qm="[object Null]",$m="[object Undefined]",bc=vt?vt.toStringTag:void 0;function Xm(i){return i==null?i===void 0?$m:qm:bc&&bc in Object(i)?xc(i):vc(i)}var _t=Xm;function Km(i){return i!=null&&typeof i=="object"}var ut=Km;var Ym="[object Symbol]";function Jm(i){return typeof i=="symbol"||ut(i)&&_t(i)==Ym}var To=Jm;function Qm(i,t){for(var e=-1,r=i==null?0:i.length,o=Array(r);++e<r;)o[e]=t(i[e],e,i);return o}var Ui=Qm;var Zm=Array.isArray,Je=Zm;var ef=1/0,Sc=vt?vt.prototype:void 0,wc=Sc?Sc.toString:void 0;function Nc(i){if(typeof i=="string")return i;if(Je(i))return Ui(i,Nc)+"";if(To(i))return wc?wc.call(i):"";var t=i+"";return t=="0"&&1/i==-ef?"-0":t}var Cc=Nc;function tf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var dt=tf;function rf(i){return i}var ji=rf;var of="[object AsyncFunction]",nf="[object Function]",sf="[object GeneratorFunction]",af="[object Proxy]";function lf(i){if(!dt(i))return!1;var t=_t(i);return t==nf||t==sf||t==of||t==af}var Lo=lf;var cf=Ye["__core-js_shared__"],ki=cf;var Tc=function(){var i=/[^.]+$/.exec(ki&&ki.keys&&ki.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function hf(i){return!!Tc&&Tc in i}var Lc=hf;var pf=Function.prototype,uf=pf.toString;function df(i){if(i!=null){try{return uf.call(i)}catch{}try{return i+""}catch{}}return""}var Ir=df;var mf=/[\\^$.*+?()[\]{}|]/g,ff=/^\[object .+?Constructor\]$/,gf=Function.prototype,yf=Object.prototype,xf=gf.toString,vf=yf.hasOwnProperty,bf=RegExp("^"+xf.call(vf).replace(mf,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Sf(i){if(!dt(i)||Lc(i))return!1;var t=Lo(i)?bf:ff;return t.test(Ir(i))}var Ic=Sf;function wf(i,t){return i?.[t]}var Pc=wf;function Nf(i,t){var e=Pc(i,t);return Ic(e)?e:void 0}var Tt=Nf;var Cf=Tt(Ye,"WeakMap"),Hi=Cf;var Mc=Object.create,Tf=function(){function i(){}return function(t){if(!dt(t))return{};if(Mc)return Mc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Ac=Tf;function Lf(i,t,e){switch(e.length){case 0:return i.call(t);case 1:return i.call(t,e[0]);case 2:return i.call(t,e[0],e[1]);case 3:return i.call(t,e[0],e[1],e[2])}return i.apply(t,e)}var Oc=Lf;function If(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Wi=If;var Pf=800,Mf=16,Af=Date.now;function Of(i){var t=0,e=0;return function(){var r=Af(),o=Mf-(r-e);if(e=r,o>0){if(++t>=Pf)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Dc=Of;function Df(i){return function(){return i}}var _c=Df;var _f=function(){try{var i=Tt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Io=_f;var Bf=Io?function(i,t){return Io(i,"toString",{configurable:!0,enumerable:!1,value:_c(t),writable:!0})}:ji,Bc=Bf;var Ef=Dc(Bc),qi=Ef;function Gf(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var Ec=Gf;var Rf=9007199254740991,zf=/^(?:0|[1-9]\d*)$/;function Vf(i,t){var e=typeof i;return t=t??Rf,!!t&&(e=="number"||e!="symbol"&&zf.test(i))&&i>-1&&i%1==0&&i<t}var $i=Vf;function Ff(i,t,e){t=="__proto__"&&Io?Io(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Po=Ff;function Uf(i,t){return i===t||i!==i&&t!==t}var zr=Uf;var jf=Object.prototype,kf=jf.hasOwnProperty;function Hf(i,t,e){var r=i[t];(!(kf.call(i,t)&&zr(r,e))||e===void 0&&!(t in i))&&Po(i,t,e)}var Xi=Hf;function Wf(i,t,e,r){var o=!e;e||(e={});for(var n=-1,s=t.length;++n<s;){var a=t[n],l=r?r(e[a],i[a],a,e,i):void 0;l===void 0&&(l=i[a]),o?Po(e,a,l):Xi(e,a,l)}return e}var jt=Wf;var Gc=Math.max;function qf(i,t,e){return t=Gc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Gc(r.length-t,0),s=Array(n);++o<n;)s[o]=r[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=r[o];return a[t]=e(s),Oc(i,this,a)}}var Ki=qf;function $f(i,t){return qi(Ki(i,t,ji),i+"")}var Rc=$f;var Xf=9007199254740991;function Kf(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=Xf}var Yi=Kf;function Yf(i){return i!=null&&Yi(i.length)&&!Lo(i)}var Vr=Yf;function Jf(i,t,e){if(!dt(e))return!1;var r=typeof t;return(r=="number"?Vr(e)&&$i(t,e.length):r=="string"&&t in e)?zr(e[t],i):!1}var zc=Jf;function Qf(i){return Rc(function(t,e){var r=-1,o=e.length,n=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(n=i.length>3&&typeof n=="function"?(o--,n):void 0,s&&zc(e[0],e[1],s)&&(n=o<3?void 0:n,o=1),t=Object(t);++r<o;){var a=e[r];a&&i(t,a,r,n)}return t})}var Vc=Qf;var Zf=Object.prototype;function eg(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||Zf;return i===e}var Mo=eg;function tg(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Fc=tg;var rg="[object Arguments]";function og(i){return ut(i)&&_t(i)==rg}var za=og;var Uc=Object.prototype,ng=Uc.hasOwnProperty,ig=Uc.propertyIsEnumerable,sg=za(function(){return arguments}())?za:function(i){return ut(i)&&ng.call(i,"callee")&&!ig.call(i,"callee")},io=sg;function ag(){return!1}var jc=ag;var Wc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,kc=Wc&&typeof module=="object"&&module&&!module.nodeType&&module,lg=kc&&kc.exports===Wc,Hc=lg?Ye.Buffer:void 0,cg=Hc?Hc.isBuffer:void 0,hg=cg||jc,Ao=hg;var pg="[object Arguments]",ug="[object Array]",dg="[object Boolean]",mg="[object Date]",fg="[object Error]",gg="[object Function]",yg="[object Map]",xg="[object Number]",vg="[object Object]",bg="[object RegExp]",Sg="[object Set]",wg="[object String]",Ng="[object WeakMap]",Cg="[object ArrayBuffer]",Tg="[object DataView]",Lg="[object Float32Array]",Ig="[object Float64Array]",Pg="[object Int8Array]",Mg="[object Int16Array]",Ag="[object Int32Array]",Og="[object Uint8Array]",Dg="[object Uint8ClampedArray]",_g="[object Uint16Array]",Bg="[object Uint32Array]",Be={};Be[Lg]=Be[Ig]=Be[Pg]=Be[Mg]=Be[Ag]=Be[Og]=Be[Dg]=Be[_g]=Be[Bg]=!0;Be[pg]=Be[ug]=Be[Cg]=Be[dg]=Be[Tg]=Be[mg]=Be[fg]=Be[gg]=Be[yg]=Be[xg]=Be[vg]=Be[bg]=Be[Sg]=Be[wg]=Be[Ng]=!1;function Eg(i){return ut(i)&&Yi(i.length)&&!!Be[_t(i)]}var qc=Eg;function Gg(i){return function(t){return i(t)}}var Oo=Gg;var $c=typeof exports=="object"&&exports&&!exports.nodeType&&exports,zn=$c&&typeof module=="object"&&module&&!module.nodeType&&module,Rg=zn&&zn.exports===$c,Va=Rg&&Fi.process,zg=function(){try{var i=zn&&zn.require&&zn.require("util").types;return i||Va&&Va.binding&&Va.binding("util")}catch{}}(),Pr=zg;var Xc=Pr&&Pr.isTypedArray,Vg=Xc?Oo(Xc):qc,Ji=Vg;var Fg=Object.prototype,Ug=Fg.hasOwnProperty;function jg(i,t){var e=Je(i),r=!e&&io(i),o=!e&&!r&&Ao(i),n=!e&&!r&&!o&&Ji(i),s=e||r||o||n,a=s?Fc(i.length,String):[],l=a.length;for(var c in i)(t||Ug.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||$i(c,l)))&&a.push(c);return a}var Qi=jg;function kg(i,t){return function(e){return i(t(e))}}var Zi=kg;var Hg=Zi(Object.keys,Object),Kc=Hg;var Wg=Object.prototype,qg=Wg.hasOwnProperty;function $g(i){if(!Mo(i))return Kc(i);var t=[];for(var e in Object(i))qg.call(i,e)&&e!="constructor"&&t.push(e);return t}var Yc=$g;function Xg(i){return Vr(i)?Qi(i):Yc(i)}var Do=Xg;function Kg(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var Jc=Kg;var Yg=Object.prototype,Jg=Yg.hasOwnProperty;function Qg(i){if(!dt(i))return Jc(i);var t=Mo(i),e=[];for(var r in i)r=="constructor"&&(t||!Jg.call(i,r))||e.push(r);return e}var Qc=Qg;function Zg(i){return Vr(i)?Qi(i,!0):Qc(i)}var ar=Zg;var ey=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ty=/^\w*$/;function ry(i,t){if(Je(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||To(i)?!0:ty.test(i)||!ey.test(i)||t!=null&&i in Object(t)}var Zc=ry;var oy=Tt(Object,"create"),Mr=oy;function ny(){this.__data__=Mr?Mr(null):{},this.size=0}var eh=ny;function iy(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var th=iy;var sy="__lodash_hash_undefined__",ay=Object.prototype,ly=ay.hasOwnProperty;function cy(i){var t=this.__data__;if(Mr){var e=t[i];return e===sy?void 0:e}return ly.call(t,i)?t[i]:void 0}var rh=cy;var hy=Object.prototype,py=hy.hasOwnProperty;function uy(i){var t=this.__data__;return Mr?t[i]!==void 0:py.call(t,i)}var oh=uy;var dy="__lodash_hash_undefined__";function my(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mr&&t===void 0?dy:t,this}var nh=my;function _o(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}_o.prototype.clear=eh;_o.prototype.delete=th;_o.prototype.get=rh;_o.prototype.has=oh;_o.prototype.set=nh;var Fa=_o;function fy(){this.__data__=[],this.size=0}var ih=fy;function gy(i,t){for(var e=i.length;e--;)if(zr(i[e][0],t))return e;return-1}var Fr=gy;var yy=Array.prototype,xy=yy.splice;function vy(i){var t=this.__data__,e=Fr(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():xy.call(t,e,1),--this.size,!0}var sh=vy;function by(i){var t=this.__data__,e=Fr(t,i);return e<0?void 0:t[e][1]}var ah=by;function Sy(i){return Fr(this.__data__,i)>-1}var lh=Sy;function wy(i,t){var e=this.__data__,r=Fr(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var ch=wy;function Bo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Bo.prototype.clear=ih;Bo.prototype.delete=sh;Bo.prototype.get=ah;Bo.prototype.has=lh;Bo.prototype.set=ch;var Ur=Bo;var Ny=Tt(Ye,"Map"),jr=Ny;function Cy(){this.size=0,this.__data__={hash:new Fa,map:new(jr||Ur),string:new Fa}}var hh=Cy;function Ty(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var ph=Ty;function Ly(i,t){var e=i.__data__;return ph(t)?e[typeof t=="string"?"string":"hash"]:e.map}var kr=Ly;function Iy(i){var t=kr(this,i).delete(i);return this.size-=t?1:0,t}var uh=Iy;function Py(i){return kr(this,i).get(i)}var dh=Py;function My(i){return kr(this,i).has(i)}var mh=My;function Ay(i,t){var e=kr(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var fh=Ay;function Eo(i){var t=-1,e=i==null?0:i.length;for(this.clear();++t<e;){var r=i[t];this.set(r[0],r[1])}}Eo.prototype.clear=hh;Eo.prototype.delete=uh;Eo.prototype.get=dh;Eo.prototype.has=mh;Eo.prototype.set=fh;var Vn=Eo;var Oy="Expected a function";function Ua(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(Oy);var e=function(){var r=arguments,o=t?t.apply(this,r):r[0],n=e.cache;if(n.has(o))return n.get(o);var s=i.apply(this,r);return e.cache=n.set(o,s)||n,s};return e.cache=new(Ua.Cache||Vn),e}Ua.Cache=Vn;var gh=Ua;var Dy=500;function _y(i){var t=gh(i,function(r){return e.size===Dy&&e.clear(),r}),e=t.cache;return t}var yh=_y;var By=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ey=/\\(\\)?/g,Gy=yh(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(By,function(e,r,o,n){t.push(o?n.replace(Ey,"$1"):r||e)}),t}),xh=Gy;function Ry(i){return i==null?"":Cc(i)}var vh=Ry;function zy(i,t){return Je(i)?i:Zc(i,t)?[i]:xh(vh(i))}var Go=zy;var Vy=1/0;function Fy(i){if(typeof i=="string"||To(i))return i;var t=i+"";return t=="0"&&1/i==-Vy?"-0":t}var es=Fy;function Uy(i,t){t=Go(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[es(t[e++])];return e&&e==r?i:void 0}var bh=Uy;function jy(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Ro=jy;var Sh=vt?vt.isConcatSpreadable:void 0;function ky(i){return Je(i)||io(i)||!!(Sh&&i&&i[Sh])}var wh=ky;function Nh(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=wh),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Nh(a,t-1,e,r,o):Ro(o,a):r||(o[o.length]=a)}return o}var Ch=Nh;function Hy(i){var t=i==null?0:i.length;return t?Ch(i,1):[]}var Th=Hy;function Wy(i){return qi(Ki(i,void 0,Th),i+"")}var Lh=Wy;var qy=Zi(Object.getPrototypeOf,Object),zo=qy;var $y="[object Object]",Xy=Function.prototype,Ky=Object.prototype,Ih=Xy.toString,Yy=Ky.hasOwnProperty,Jy=Ih.call(Object);function Qy(i){if(!ut(i)||_t(i)!=$y)return!1;var t=zo(i);if(t===null)return!0;var e=Yy.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Ih.call(e)==Jy}var ts=Qy;function Zy(i,t,e){var r=-1,o=i.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 n=Array(o);++r<o;)n[r]=i[r+t];return n}var Ph=Zy;function ex(){this.__data__=new Ur,this.size=0}var Mh=ex;function tx(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Ah=tx;function rx(i){return this.__data__.get(i)}var Oh=rx;function ox(i){return this.__data__.has(i)}var Dh=ox;var nx=200;function ix(i,t){var e=this.__data__;if(e instanceof Ur){var r=e.__data__;if(!jr||r.length<nx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Vn(r)}return e.set(i,t),this.size=e.size,this}var _h=ix;function Vo(i){var t=this.__data__=new Ur(i);this.size=t.size}Vo.prototype.clear=Mh;Vo.prototype.delete=Ah;Vo.prototype.get=Oh;Vo.prototype.has=Dh;Vo.prototype.set=_h;var rs=Vo;function sx(i,t){return i&&jt(t,Do(t),i)}var Bh=sx;function ax(i,t){return i&&jt(t,ar(t),i)}var Eh=ax;var Vh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Gh=Vh&&typeof module=="object"&&module&&!module.nodeType&&module,lx=Gh&&Gh.exports===Vh,Rh=lx?Ye.Buffer:void 0,zh=Rh?Rh.allocUnsafe:void 0;function cx(i,t){if(t)return i.slice();var e=i.length,r=zh?zh(e):new i.constructor(e);return i.copy(r),r}var os=cx;function hx(i,t){for(var e=-1,r=i==null?0:i.length,o=0,n=[];++e<r;){var s=i[e];t(s,e,i)&&(n[o++]=s)}return n}var Fh=hx;function px(){return[]}var ns=px;var ux=Object.prototype,dx=ux.propertyIsEnumerable,Uh=Object.getOwnPropertySymbols,mx=Uh?function(i){return i==null?[]:(i=Object(i),Fh(Uh(i),function(t){return dx.call(i,t)}))}:ns,Fo=mx;function fx(i,t){return jt(i,Fo(i),t)}var jh=fx;var gx=Object.getOwnPropertySymbols,yx=gx?function(i){for(var t=[];i;)Ro(t,Fo(i)),i=zo(i);return t}:ns,is=yx;function xx(i,t){return jt(i,is(i),t)}var kh=xx;function vx(i,t,e){var r=t(i);return Je(i)?r:Ro(r,e(i))}var ss=vx;function bx(i){return ss(i,Do,Fo)}var Hh=bx;function Sx(i){return ss(i,ar,is)}var as=Sx;var wx=Tt(Ye,"DataView"),ls=wx;var Nx=Tt(Ye,"Promise"),cs=Nx;var Cx=Tt(Ye,"Set"),hs=Cx;var Wh="[object Map]",Tx="[object Object]",qh="[object Promise]",$h="[object Set]",Xh="[object WeakMap]",Kh="[object DataView]",Lx=Ir(ls),Ix=Ir(jr),Px=Ir(cs),Mx=Ir(hs),Ax=Ir(Hi),so=_t;(ls&&so(new ls(new ArrayBuffer(1)))!=Kh||jr&&so(new jr)!=Wh||cs&&so(cs.resolve())!=qh||hs&&so(new hs)!=$h||Hi&&so(new Hi)!=Xh)&&(so=function(i){var t=_t(i),e=t==Tx?i.constructor:void 0,r=e?Ir(e):"";if(r)switch(r){case Lx:return Kh;case Ix:return Wh;case Px:return qh;case Mx:return $h;case Ax:return Xh}return t});var Uo=so;var Ox=Object.prototype,Dx=Ox.hasOwnProperty;function _x(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Dx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var Yh=_x;var Bx=Ye.Uint8Array,ja=Bx;function Ex(i){var t=new i.constructor(i.byteLength);return new ja(t).set(new ja(i)),t}var jo=Ex;function Gx(i,t){var e=t?jo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var Jh=Gx;var Rx=/\w*$/;function zx(i){var t=new i.constructor(i.source,Rx.exec(i));return t.lastIndex=i.lastIndex,t}var Qh=zx;var Zh=vt?vt.prototype:void 0,ep=Zh?Zh.valueOf:void 0;function Vx(i){return ep?Object(ep.call(i)):{}}var tp=Vx;function Fx(i,t){var e=t?jo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ps=Fx;var Ux="[object Boolean]",jx="[object Date]",kx="[object Map]",Hx="[object Number]",Wx="[object RegExp]",qx="[object Set]",$x="[object String]",Xx="[object Symbol]",Kx="[object ArrayBuffer]",Yx="[object DataView]",Jx="[object Float32Array]",Qx="[object Float64Array]",Zx="[object Int8Array]",e0="[object Int16Array]",t0="[object Int32Array]",r0="[object Uint8Array]",o0="[object Uint8ClampedArray]",n0="[object Uint16Array]",i0="[object Uint32Array]";function s0(i,t,e){var r=i.constructor;switch(t){case Kx:return jo(i);case Ux:case jx:return new r(+i);case Yx:return Jh(i,e);case Jx:case Qx:case Zx:case e0:case t0:case r0:case o0:case n0:case i0:return ps(i,e);case kx:return new r;case Hx:case $x:return new r(i);case Wx:return Qh(i);case qx:return new r;case Xx:return tp(i)}}var rp=s0;function a0(i){return typeof i.constructor=="function"&&!Mo(i)?Ac(zo(i)):{}}var us=a0;var l0="[object Map]";function c0(i){return ut(i)&&Uo(i)==l0}var op=c0;var np=Pr&&Pr.isMap,h0=np?Oo(np):op,ip=h0;var p0="[object Set]";function u0(i){return ut(i)&&Uo(i)==p0}var sp=u0;var ap=Pr&&Pr.isSet,d0=ap?Oo(ap):sp,lp=d0;var m0=1,f0=2,g0=4,cp="[object Arguments]",y0="[object Array]",x0="[object Boolean]",v0="[object Date]",b0="[object Error]",hp="[object Function]",S0="[object GeneratorFunction]",w0="[object Map]",N0="[object Number]",pp="[object Object]",C0="[object RegExp]",T0="[object Set]",L0="[object String]",I0="[object Symbol]",P0="[object WeakMap]",M0="[object ArrayBuffer]",A0="[object DataView]",O0="[object Float32Array]",D0="[object Float64Array]",_0="[object Int8Array]",B0="[object Int16Array]",E0="[object Int32Array]",G0="[object Uint8Array]",R0="[object Uint8ClampedArray]",z0="[object Uint16Array]",V0="[object Uint32Array]",De={};De[cp]=De[y0]=De[M0]=De[A0]=De[x0]=De[v0]=De[O0]=De[D0]=De[_0]=De[B0]=De[E0]=De[w0]=De[N0]=De[pp]=De[C0]=De[T0]=De[L0]=De[I0]=De[G0]=De[R0]=De[z0]=De[V0]=!0;De[b0]=De[hp]=De[P0]=!1;function ds(i,t,e,r,o,n){var s,a=t&m0,l=t&f0,c=t&g0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!dt(i))return i;var h=Je(i);if(h){if(s=Yh(i),!a)return Wi(i,s)}else{var p=Uo(i),u=p==hp||p==S0;if(Ao(i))return os(i,a);if(p==pp||p==cp||u&&!o){if(s=l||u?{}:us(i),!a)return l?kh(i,Eh(s,i)):jh(i,Bh(s,i))}else{if(!De[p])return o?i:{};s=rp(i,p,a)}}n||(n=new rs);var d=n.get(i);if(d)return d;n.set(i,s),lp(i)?i.forEach(function(x){s.add(ds(x,t,e,x,i,n))}):ip(i)&&i.forEach(function(x,y){s.set(y,ds(x,t,e,y,i,n))});var m=c?l?as:Hh:l?ar:Do,g=h?void 0:m(i);return Ec(g||i,function(x,y){g&&(y=x,x=i[y]),Xi(s,y,ds(x,t,e,y,i,n))}),s}var ms=ds;var F0=1,U0=4;function j0(i){return ms(i,F0|U0)}var Fn=j0;function k0(i){return function(t,e,r){for(var o=-1,n=Object(t),s=r(t),a=s.length;a--;){var l=s[i?a:++o];if(e(n[l],l,n)===!1)break}return t}}var up=k0;var H0=up(),dp=H0;function W0(i,t,e){(e!==void 0&&!zr(i[t],e)||e===void 0&&!(t in i))&&Po(i,t,e)}var Un=W0;function q0(i){return ut(i)&&Vr(i)}var mp=q0;function $0(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var jn=$0;function X0(i){return jt(i,ar(i))}var fp=X0;function K0(i,t,e,r,o,n,s){var a=jn(i,e),l=jn(t,e),c=s.get(l);if(c){Un(i,e,c);return}var h=n?n(a,l,e+"",i,t,s):void 0,p=h===void 0;if(p){var u=Je(l),d=!u&&Ao(l),m=!u&&!d&&Ji(l);h=l,u||d||m?Je(a)?h=a:mp(a)?h=Wi(a):d?(p=!1,h=os(l,!0)):m?(p=!1,h=ps(l,!0)):h=[]:ts(l)||io(l)?(h=a,io(a)?h=fp(a):(!dt(a)||Lo(a))&&(h=us(l))):p=!1}p&&(s.set(l,h),o(h,l,r,n,s),s.delete(l)),Un(i,e,h)}var gp=K0;function yp(i,t,e,r,o){i!==t&&dp(t,function(n,s){if(o||(o=new rs),dt(n))gp(i,t,s,e,yp,r,o);else{var a=r?r(jn(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),Un(i,s,a)}},ar)}var xp=yp;function Y0(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var vp=Y0;function J0(i,t){return t.length<2?i:bh(i,Ph(t,0,-1))}var bp=J0;var Q0=Vc(function(i,t,e){xp(i,t,e)}),ao=Q0;function Z0(i,t){return t=Go(t,i),i=bp(i,t),i==null||delete i[es(vp(t))]}var Sp=Z0;function ev(i){return ts(i)?void 0:i}var wp=ev;var tv=1,rv=2,ov=4,nv=Lh(function(i,t){var e={};if(i==null)return e;var r=!1;t=Ui(t,function(n){return n=Go(n,i),r||(r=n.length>1),n}),jt(i,as(i),e),r&&(e=ms(e,tv|rv|ov,wp));for(var o=t.length;o--;)Sp(e,t[o]);return e}),ko=nv;var Ho;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Ho||(Ho={}));var lo;(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(n){return n.type==="PerspectiveCamera"?n.perspective.zoom:n.orthographic.zoom}o.getZoom=r})(lo||(lo={}));var Np;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n]}e.lerp=t})(Np||(Np={}));var Wo;(o=>{function i(n,s){return n[0]===s[0]&&n[1]===s[1]&&n[2]===s[2]}o.isEqual=i;function t(n,s){return[n[0]+s[0],n[1]+s[1],n[2]+s[2]]}o.add=t;function e(n,s){return[n[0]-s[0],n[1]-s[1],n[2]-s[2]]}o.sub=e;function r(n,s,a){return[n[0]+(s[0]-n[0])*a,n[1]+(s[1]-n[1])*a,n[2]+(s[2]-n[2])*a]}o.lerp=r})(Wo||(Wo={}));var Cp;(e=>{function i(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]&&r[3]===o[3]}e.isEqual=i;function t(r,o,n){return[r[0]+(o[0]-r[0])*n,r[1]+(o[1]-r[1])*n,r[2]+(o[2]-r[2])*n,r[3]+(o[3]-r[3])*n]}e.lerp=t})(Cp||(Cp={}));var Hr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function t(n,s){for(let a=0;a<16;a++)if(n[a]!==s[a])return!1;return!0}o.isEqual=t;function e(n){return n??o.identity}o.simplify=e;function r(n,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let h=n[3]*s[l]+n[7]*s[l+1]+n[11]*s[l+2]+n[15];a[l]=(n[0]*s[l]+n[4]*s[l+1]+n[8]*s[l+2]+n[12])/h,a[l+1]=(n[1]*s[l]+n[5]*s[l+1]+n[9]*s[l+2]+n[13])/h,a[l+2]=(n[2]*s[l]+n[6]*s[l+1]+n[10]*s[l+2]+n[14])/h}return a}o.applyMatrix4=r})(Hr||(Hr={}));var Bt;(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 n(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=n;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})(Bt||(Bt={}));var Et;(s=>{s.white={...Bt.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{...Bt.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 Bt.equals(a,l)&&a.a===l.a}s.equals=o;function n(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=n})(Et||(Et={}));var fs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(fs||(fs={}));var Tp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Tp||(Tp={}));var Lp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Lp||(Lp={}));var gs;(t=>{function i(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=i})(gs||(gs={}));var kt=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n={...r,[t]:e};return Object.setPrototypeOf(n,kt.prototype),n}}add(t,e){return this.runOp({type:1,id:t,data:e})?.data??this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:s}=t,a={...e,[n]:s};return Object.setPrototypeOf(a,kt.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 n={...e};return Object.setPrototypeOf(n,kt.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function kn(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let t=Object.getOwnPropertyNames(i);for(let e of t){let r=i[e];r&&typeof r=="object"&&kn(r)}return Object.freeze(i)}function Ip(i,t){let e=0;for(;e<i.length&&e<t.length;){if(i[e]<t[e])return-1;if(i[e]>t[e])return 1;e+=1}return e!==t.length?-1:e!==i.length?1:0}var ys=class extends Error{};function lr(i,t,e){if(i===void 0?t===void 0?(i=0,t=10):i=t-10:t===void 0&&(t=i+10),i>t){let n=i;i=t,t=n}let r=[],o=1/(e+1);for(let n=0;n<e;n++){let s=i+(t-i)*(n+.75+Math.random()*.5)*o;r.push(s)}return r}function xs(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Pp(){return typeof process<"u"}function Mp(i,t){for(let e of i)t(e.id,e.data),Mp(e.children,t)}function Ap(i,t){t(i.id,i.data);for(let e of i.children)Ap(e,t)}var Ht=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ht.prototype)}deepFreeze(){let e=0;for(;e<this.length;)kn(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){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Ap(o,r)}}traverse(e){Mp(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 n=this.parent(e),s=this.childrenArray(n),a=s.findIndex(h=>h.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]={...l,data:r},this.modifyArrayBy(n,s)}}modifyArrayBy(e,r){let o=e,n=r;for(;o!==null;){let a=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(h=>h.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:a}}Object.setPrototypeOf(n,Ht.prototype);let s=n;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:n,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:n,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:n}}}}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 n=this.childrenArray(o),s=n.findIndex(c=>c.id===r);e.localIndex=s,n=[...n];let a=n.splice(s,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:r,fi:o,id:n}=e;if(r!==null&&this.get(r)===void 0)return this.deleteOp({type:8,id:n});if(r!==null){let d=r;for(;d!==null;){if(d===void 0)throw new Error;if(d===n)throw new ys("cyclic tree");d=this.parent(d)}}let s=this.parent(n);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===n);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,fi:o},l=[...l,h],l.sort((d,m)=>d.fi-m.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,id:n}}}previous(e,r){if(r===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===r)return o;o=n.id}return null}traverseSortNext(e){let r=this.parent(e);if(r!==void 0){let o=this.childrenArray(r),n=o.findIndex(s=>s.id===e)+1;if(n<o.length)return o[n].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),n=o.findIndex(s=>s.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):r}}getAllSorted(e){let r=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&r.push({...o,...n})}r.sort((o,n)=>Ip(o.sortKey,n.sortKey));for(let o of r)delete o.sortKey;return r}getWithSortKey(e){var r=e;let o=[],n=this.get(r),s=n;if(n!==void 0){for(;r;)o.splice(0,0,n.fi),r=this.parent(r),r!==null&&(n=this.get(r));return{...s,sortKey:o}}}insertBeforeHelper(e,r,o){return this.insertAfterHelper(e,this.previous(e,r),o)}insertAfterHelper(e,r,o){let n=this.childrenArray(e);if(r===null){if(n.length===0)return lr(0,o,o);{let s=n[0].fi;return lr(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=n.find(l=>l.fi>s.fi);if(a===void 0){let l=n[n.length-1].fi;return lr(l,l+o,o)}else return lr(s.fi,a.fi,o)}}};var vs;(t=>{function i(e,r){if(Array.isArray(e)){let o=r.props,n={},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");n[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:r,reverse:{type:0,props:n}}:null}else{let o=r.props,n={},s={...e},a=!1;if(o)for(let l of Object.keys(o)){n[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:n}}:null}}t.runOp=i})(vs||(vs={}));var Ve=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ve.prototype)}deepFreeze(){let e=0;for(;e<this.length;)kn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,s=n.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=n[s];return n=[...n],n[s]={...a,data:r},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Ve.prototype);let r=e;return Pp()||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:n}=e,s=this,a={fi:r,id:o,data:n};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,n=o.findIndex(l=>l.id===r);if(n===-1)return null;e.localIndex=n,o=[...o];let s=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:r,id:o}=e,n=this;n=[...n];let s=n.findIndex(h=>h.id===o);if(s===-1)return null;let a=n[s].fi,l={...n[s],fi:r};return n[s]=l,n.sort((h,p)=>h.fi-p.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),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 lr(0,r,r);{let n=o[0].fi;return lr(n-r,n,r)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>n.fi);if(s===void 0){let a=o[o.length-1].fi;return lr(a,a+r,r)}else return lr(n.fi,s.fi,r)}}};var Op=Symbol(),Ss=Symbol(),qo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof bs);){let n=r._path,s=r._current;if(n!==""&&o.splice(0,0,n),r=r._parent,r===null)return;r.update(n,s)}r.push(o,t,e.actual,e.reverse)}deleteChildren(t){if(this._children){let e=this._children[t];if(e){let r=e[Ss];r&&r(),delete this._children[t]}}}},Ha=class extends qo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current={...this._current,[t]:e}}runOp(t){this.reportOp(t,vs.runOp(this._current,t))}},Wa=class extends qo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current={...this._current,[t]:e},Object.setPrototypeOf(this._current,kt.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Dp={get(i,t){if(t===Ss)return()=>{i._parent=null};if(t===Op)return i._current;let{_current:e,_children:r}=i;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 n=e[t],s=ws(i,t,n);return s!==n?(r===void 0&&(r={},i._children=r),r[t]=s,s):n},has(i,t){return t in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,t){let e=i._current,r=Reflect.getOwnPropertyDescriptor(e,t);return r&&{writable:!0,configurable:!0,enumerable:r.enumerable,value:e[t]}}},iv={...Dp,set(i,t,e){let r={type:0,props:{[t]:Xa(e)??e}};return i.deleteChildren(t),i.runOp(r),!0},deleteProperty(i,t){let e={type:0,props:{[t]:void 0}};return i.deleteChildren(t),i.runOp(e),!0}},sv={...Dp,set(i,t,e){return e===void 0?this.deleteProperty(i,t):(i.deleteChildren(t),i.runOp({type:1,id:t,data:e})),!0},deleteProperty(i,t){return i.runOp({type:2,id:t}),!0}},$o=class extends qo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ss]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,s=ws(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}add(t,e,r,o,n){this.runOp({type:7,parent:t,fi:e,id:r,data:o,children:n})}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 n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}insertBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.add(t,o[n],s.id,s.data,s.children)}}moveAfter(t,e,r){let o=this._current.insertAfterHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],s)}}moveBefore(t,e,r){let o=this._current.insertBeforeHelper(t,e,r.length);for(let n=0;n<r.length;n++){let s=r[n];this.move(t,o[n],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)}},Xo=class extends qo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ss]=()=>{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{...this._current.get(t),data:this.data(t)}}data(t){let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=e.get(t)?.data,s=ws(this,t,n);return s!==n?(r===void 0&&(r={},this._children=r),r[t]=s,s):n}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 n=e[o];this.add(r[o],n.id,n.data)}}insertBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(r[o],n.id,n.data)}}moveAfter(t,e){let r=this._current.insertAfterHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}moveBefore(t,e){let r=this._current.insertBeforeHelper(t,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(r[o],n)}}delete(t){this.deleteChildren(t),this.runOp({type:5,id:t})}};function ka(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Ns.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push({...t,path:e})}var bs=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){ka(this.ts,e,t),ka(this.actual,r,t),ka(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function ws(i,t,e){return e instanceof Ht?new $o(i,t,e):e instanceof Ve?new Xo(i,t,e):e instanceof kt?new Proxy(new Wa(i,t,e),sv):e!==null&&typeof e=="object"?xs(e)?e:new Proxy(new Ha(i,t,e),iv):e}function qa(i){let t=new bs(i);return[ws(t,"",i),t]}function $a(i,t){let[e,r]=qa(i);return t(e),r.result()}function Xa(i){return i instanceof $o||i instanceof Xo?i._current:i!==null&&typeof i=="object"?i[Op]:i}var Ns;(r=>{function i(o,n){if(n.length===o.length)for(var s=0;s<o.length;){if(o[s]!==n[s])return!1;s+=1}else return!1;return!0}r.equal=i;function t(o,n,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l={...n};return Object.keys(a).forEach(c=>{delete l[c]}),l}else return n}r.removeOverridden=t;function e(o,n,s=0){if(n.length<=s)return o;if((o instanceof Ht||o instanceof $o)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Ve||o instanceof Xo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if(typeof n[s]=="number"&&Array.isArray(o))return e(o[n[s]],n,s+1);if(typeof n[s]=="string"&&typeof o=="object")return e(o[n[s]],n,s+1)}r.zoom=e})(Ns||(Ns={}));var Cs=class{},Hn=class extends Cs{constructor(e){super();this.id=e}},Wn=class extends Cs{constructor(e){super();this.data=e}};var Ya;try{Ya=new TextDecoder}catch{}var te,qr,N=0;var Fp=[],Ja=Fp,Qa=0,Lt={},Te,Wr,Wt=0,cr=0,Gt,Ar,bt=[],Ie,_p={useRecords:!1,mapsAsObjects:!0},qn=class{},el=new qn;el.name="MessagePack 0xC1";var Ko=!1,hr=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(te)return Wp(()=>(Ls(),this?this.unpack(t,e):hr.prototype.unpack.call(_p,t,e)));qr=e>-1?e:t.length,N=0,Qa=0,cr=0,Wr=null,Ja=Fp,Gt=null,te=t;try{Ie=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw te=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 hr){if(Lt=this,this.structures)return Te=this.structures,Ts();(!Te||Te.length>0)&&(Te=[])}else Lt=_p,(!Te||Te.length>0)&&(Te=[]);return Ts()}unpackMultiple(t,e){let r,o=0;try{Ko=!0;let n=t.length,s=this?this.unpack(t,n):Ms.unpack(t,n);if(e){for(e(s);N<n;)if(o=N,e(Ts())===!1)return}else{for(r=[s];N<n;)o=N,r.push(Ts());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{Ko=!1,Ls()}}_mergeStructures(t,e){t=t||[];for(let r=0,o=t.length;r<o;r++){let n=t[r];n&&(n.isShared=!0,r>=32&&(n.highByte=r-32>>5))}t.sharedLength=t.length;for(let r in e||[])if(r>=0){let o=t[r],n=e[r];n&&(o&&((t.restoreStructures||(t.restoreStructures=[]))[r]=o),t[r]=n)}return this.structures=t}decode(t,e){return this.unpack(t,e)}};function Ts(){try{if(!Lt.trusted&&!Ko){let t=Te.sharedLength||0;t<Te.length&&(Te.length=t)}let i=je();if(N==qr)Te.restoreStructures&&Bp(),Te=null,te=null,Ar&&(Ar=null);else if(N>qr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Ko)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Te.restoreStructures&&Bp(),Ls(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Bp(){for(let i in Te.restoreStructures)Te[i]=Te.restoreStructures[i];Te.restoreStructures=null}function je(){let i=te[N++];if(i<160)if(i<128){if(i<64)return i;{let t=Te[i&63]||Lt.getStructures&&Up()[i&63];return t?(t.read||(t.read=tl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,Lt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[kp()]=je();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(je(),je());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=je();return t}else if(i<192){let t=i-160;if(cr>=N)return Wr.slice(N-Wt,(N+=t)-Wt);if(cr==0&&qr<140){let e=t<16?rl(t):jp(t);if(e!=null)return e}return Za(t)}else{let t;switch(i){case 192:return null;case 193:return Gt?(t=je(),t>0?Gt[1].slice(Gt.position1,Gt.position1+=t):Gt[0].slice(Gt.position0,Gt.position0-=t)):el;case 194:return!1;case 195:return!0;case 196:return Ka(te[N++]);case 197:return t=Ie.getUint16(N),N+=2,Ka(t);case 198:return t=Ie.getUint32(N),N+=4,Ka(t);case 199:return co(te[N++]);case 200:return t=Ie.getUint16(N),N+=2,co(t);case 201:return t=Ie.getUint32(N),N+=4,co(t);case 202:if(t=Ie.getFloat32(N),Lt.useFloat32>2){let e=Ps[(te[N]&127)<<1|te[N+1]>>7];return N+=4,(e*t+(t>0?.5:-.5)>>0)/e}return N+=4,t;case 203:return t=Ie.getFloat64(N),N+=8,t;case 204:return te[N++];case 205:return t=Ie.getUint16(N),N+=2,t;case 206:return t=Ie.getUint32(N),N+=4,t;case 207:return Lt.int64AsNumber?(t=Ie.getUint32(N)*4294967296,t+=Ie.getUint32(N+4)):t=Ie.getBigUint64(N),N+=8,t;case 208:return Ie.getInt8(N++);case 209:return t=Ie.getInt16(N),N+=2,t;case 210:return t=Ie.getInt32(N),N+=4,t;case 211:return Lt.int64AsNumber?(t=Ie.getInt32(N)*4294967296,t+=Ie.getUint32(N+4)):t=Ie.getBigInt64(N),N+=8,t;case 212:if(t=te[N++],t==114)return Vp(te[N++]&63);{let e=bt[t];if(e)return e.read?(N++,e.read(je())):e.noBuffer?(N++,e()):e(te.subarray(N,++N));throw new Error("Unknown extension "+t)}case 213:return t=te[N],t==114?(N++,Vp(te[N++]&63,te[N++])):co(2);case 214:return co(4);case 215:return co(8);case 216:return co(16);case 217:return t=te[N++],cr>=N?Wr.slice(N-Wt,(N+=t)-Wt):lv(t);case 218:return t=Ie.getUint16(N),N+=2,cr>=N?Wr.slice(N-Wt,(N+=t)-Wt):cv(t);case 219:return t=Ie.getUint32(N),N+=4,cr>=N?Wr.slice(N-Wt,(N+=t)-Wt):hv(t);case 220:return t=Ie.getUint16(N),N+=2,Gp(t);case 221:return t=Ie.getUint32(N),N+=4,Gp(t);case 222:return t=Ie.getUint16(N),N+=2,Rp(t);case 223:return t=Ie.getUint32(N),N+=4,Rp(t);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var av=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function tl(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>av.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(je);return i.highByte===0&&(i.read=Ep(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=je()}return r}return e.count=0,i.highByte===0?Ep(t,e):e}var Ep=(i,t)=>function(){let e=te[N++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=Te[r]||Up()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=tl(o,i)),o.read()};function Up(){let i=Wp(()=>(te=null,Lt.getStructures()));return Te=Lt._mergeStructures(i,Te)}var Za=Is,lv=Is,cv=Is,hv=Is;function Is(i){let t;if(i<16&&(t=rl(i)))return t;if(i>64&&Ya)return Ya.decode(te.subarray(N,N+=i));let e=N+i,r=[];for(t="";N<e;){let o=te[N++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=te[N++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=te[N++]&63,s=te[N++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=te[N++]&63,s=te[N++]&63,a=te[N++]&63,l=(o&7)<<18|n<<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+=ot.apply(String,r),r.length=0)}return r.length>0&&(t+=ot.apply(String,r)),t}function Gp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=je();return t}function Rp(i){if(Lt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[kp()]=je();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(je(),je());return t}}var ot=String.fromCharCode;function jp(i){let t=N,e=new Array(i);for(let r=0;r<i;r++){let o=te[N++];if((o&128)>0){N=t;return}e[r]=o}return ot.apply(String,e)}function rl(i){if(i<4)if(i<2){if(i===0)return"";{let t=te[N++];if((t&128)>1){N-=1;return}return ot(t)}}else{let t=te[N++],e=te[N++];if((t&128)>0||(e&128)>0){N-=2;return}if(i<3)return ot(t,e);let r=te[N++];if((r&128)>0){N-=3;return}return ot(t,e,r)}else{let t=te[N++],e=te[N++],r=te[N++],o=te[N++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){N-=4;return}if(i<6){if(i===4)return ot(t,e,r,o);{let n=te[N++];if((n&128)>0){N-=5;return}return ot(t,e,r,o,n)}}else if(i<8){let n=te[N++],s=te[N++];if((n&128)>0||(s&128)>0){N-=6;return}if(i<7)return ot(t,e,r,o,n,s);let a=te[N++];if((a&128)>0){N-=7;return}return ot(t,e,r,o,n,s,a)}else{let n=te[N++],s=te[N++],a=te[N++],l=te[N++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){N-=8;return}if(i<10){if(i===8)return ot(t,e,r,o,n,s,a,l);{let c=te[N++];if((c&128)>0){N-=9;return}return ot(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=te[N++],h=te[N++];if((c&128)>0||(h&128)>0){N-=10;return}if(i<11)return ot(t,e,r,o,n,s,a,l,c,h);let p=te[N++];if((p&128)>0){N-=11;return}return ot(t,e,r,o,n,s,a,l,c,h,p)}else{let c=te[N++],h=te[N++],p=te[N++],u=te[N++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){N-=12;return}if(i<14){if(i===12)return ot(t,e,r,o,n,s,a,l,c,h,p,u);{let d=te[N++];if((d&128)>0){N-=13;return}return ot(t,e,r,o,n,s,a,l,c,h,p,u,d)}}else{let d=te[N++],m=te[N++];if((d&128)>0||(m&128)>0){N-=14;return}if(i<15)return ot(t,e,r,o,n,s,a,l,c,h,p,u,d,m);let g=te[N++];if((g&128)>0){N-=15;return}return ot(t,e,r,o,n,s,a,l,c,h,p,u,d,m,g)}}}}}function Ka(i){return Lt.copyBuffers?Uint8Array.prototype.slice.call(te,N,N+=i):te.subarray(N,N+=i)}function co(i){let t=te[N++];if(bt[t])return bt[t](te.subarray(N,N+=i));throw new Error("Unknown extension type "+t)}var zp=new Array(4096);function kp(){let i=te[N++];if(i>=160&&i<192){if(i=i-160,cr>=N)return Wr.slice(N-Wt,(N+=i)-Wt);if(!(cr==0&&qr<180))return Za(i)}else return N--,je();let t=(i<<5^(i>1?Ie.getUint16(N):i>0?te[N]:0))&4095,e=zp[t],r=N,o=N+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Ie.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=te[r++],n!=e[s++]){r=1879048192;break}if(r===o)return N=r,e.string;o-=3,r=N}for(e=[],zp[t]=e,e.bytes=i;r<o;)n=Ie.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=te[r++],e.push(n);let a=i<16?rl(i):jp(i);return a!=null?e.string=a:e.string=Za(i)}var Vp=(i,t)=>{var e=je();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=Te[i];return o&&o.isShared&&((Te.restoreStructures||(Te.restoreStructures=[]))[i]=o),Te[i]=e,e.read=tl(e,r),e.read()},Hp=typeof self=="object"?self:global;bt[0]=()=>{};bt[0].noBuffer=!0;bt[101]=()=>{let i=je();return(Hp[i[0]]||Error)(i[1])};bt[105]=i=>{let t=Ie.getUint32(N-4);Ar||(Ar=new Map);let e=te[N],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Ar.set(t,o);let n=je();return o.used?Object.assign(r,n):(o.target=n,n)};bt[112]=i=>{let t=Ie.getUint32(N-4),e=Ar.get(t);return e.used=!0,e.target};bt[115]=()=>new Set(je());var ol=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");bt[116]=i=>{let t=i[0],e=ol[t];if(!e)throw new Error("Could not find typed array for code "+t);return new Hp[e](Uint8Array.prototype.slice.call(i,1).buffer)};bt[120]=()=>{let i=je();return new RegExp(i[0],i[1])};bt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=N;N+=t-4,Gt=[je(),je()],Gt.position0=0,Gt.position1=0;let r=N;N=e;try{return je()}finally{N=r}};bt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function Wp(i){let t=qr,e=N,r=Qa,o=Wt,n=cr,s=Wr,a=Ja,l=Ar,c=Gt,h=new Uint8Array(te.slice(0,qr)),p=Te,u=Te.slice(0,Te.length),d=Lt,m=Ko,g=i();return qr=t,N=e,Qa=r,Wt=o,cr=n,Wr=s,Ja=a,Ar=l,Gt=c,te=h,Ko=m,Te=p,Te.splice(0,Te.length,...u),Lt=d,Ie=new DataView(te.buffer,te.byteOffset,te.byteLength),g}function Ls(){te=null,Ar=null,Te=null}function qp(i){i.unpack?bt[i.type]=i.unpack:bt[i.type]=i}var Ps=new Array(147);for(let i=0;i<256;i++)Ps[i]=+("1e"+Math.floor(45.15-i*.30103));var Ms=new hr({useRecords:!1}),pv=Ms.unpack,uv=Ms.unpackMultiple,dv=Ms.unpack,As={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},mv=new Float32Array(1),DP=new Uint8Array(mv.buffer,0,4);var Os;try{Os=new TextEncoder}catch{}var Ds,il,_s=typeof Buffer<"u",nl=_s?Buffer.allocUnsafeSlow:Uint8Array,Yp=_s?Buffer:Uint8Array,$p=_s?4294967296:2144337920,R,qe,T=0,pr,ur=null,fv=/[\u0080-\uFFFF]/,$n=Symbol("record-id"),ho=class extends hr{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=Yp.prototype.utf8Write?function(f,D,C){return R.utf8Write(f,D,C)}:Os&&Os.encodeInto?function(f,D){return Os.encodeInto(f,R.subarray(D)).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 m=t.maxOwnStructures;m==null&&(m=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=d>32||m+d>64,x=d+64,y=d+m+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,S=0;this.pack=this.encode=function(f,D){if(R||(R=new nl(8192),qe=new DataView(R.buffer,0,8192),T=0),pr=R.length-10,pr-T<2048?(R=new nl(R.length),qe=new DataView(R.buffer,0,R.length),pr=R.length-10,T=0):T=T+7&2147483640,r=T,a=h.structuredClone?new Map:null,h.bundleStrings?(ur=["",""],R[T++]=214,R[T++]=98,ur.position=T-r,T+=4):ur=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let C=o.sharedLength||0;if(C>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 I=0;I<C;I++){let L=o[I];if(!L)continue;let M,k=o.transitions;for(let W=0,ne=L.length;W<ne;W++){let pe=L[W];M=k[pe],M||(M=k[pe]=Object.create(null)),k=M}k[$n]=I+64}l=C}p||(o.nextId=C+64)}n&&(n=!1),s=o||[];try{if(b(f),ur){qe.setUint32(ur.position+r,T-ur.position-r);let C=ur;ur=null,b(C[0]),b(C[1])}if(h.offset=T,a&&a.idsToInsert){T+=a.idsToInsert.length*6,T>pr&&w(T),h.offset=T;let C=yv(R.subarray(r,T),a.idsToInsert);return a=null,C}return D&Qp?(R.start=r,R.end=T,R):R.subarray(r,T)}finally{if(o){if(S<10&&S++,P>1e4)o.transitions=null,S=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let C=0,I=v.length;C<I;C++)v[C][$n]=0;v=[]}if(n&&h.saveStructures){let C=o.sharedLength||d;o.length>C&&(o=o.slice(0,C));let I=R.subarray(r,T);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(f)):(l=C,I)}}D&Cv&&(T=r)}};let b=f=>{T>pr&&(R=w(T));var D=typeof f,C;if(D==="string"){let I=f.length;if(ur&&I>=8&&I<4096){let k=fv.test(f);ur[k?0:1]+=f,R[T++]=193,b(k?-I:I);return}let L;I<32?L=1:I<256?L=2:I<65536?L=3:L=5;let M=I*3;if(T+M>pr&&(R=w(T+M)),I<64||!c){let k,W,ne,pe=T+L;for(k=0;k<I;k++)W=f.charCodeAt(k),W<128?R[pe++]=W:W<2048?(R[pe++]=W>>6|192,R[pe++]=W&63|128):(W&64512)===55296&&((ne=f.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),k++,R[pe++]=W>>18|240,R[pe++]=W>>12&63|128,R[pe++]=W>>6&63|128,R[pe++]=W&63|128):(R[pe++]=W>>12|224,R[pe++]=W>>6&63|128,R[pe++]=W&63|128);C=pe-T-L}else C=c(f,T+L,M);C<32?R[T++]=160|C:C<256?(L<2&&R.copyWithin(T+2,T+1,T+1+C),R[T++]=217,R[T++]=C):C<65536?(L<3&&R.copyWithin(T+3,T+2,T+2+C),R[T++]=218,R[T++]=C>>8,R[T++]=C&255):(L<5&&R.copyWithin(T+5,T+3,T+3+C),R[T++]=219,qe.setUint32(T,C),T+=4),T+=C}else if(D==="number")if(f>>>0===f)f<64?R[T++]=f:f<256?(R[T++]=204,R[T++]=f):f<65536?(R[T++]=205,R[T++]=f>>8,R[T++]=f&255):(R[T++]=206,qe.setUint32(T,f),T+=4);else if(f>>0===f)f>=-32?R[T++]=256+f:f>=-128?(R[T++]=208,R[T++]=f+256):f>=-32768?(R[T++]=209,qe.setInt16(T,f),T+=2):(R[T++]=210,qe.setInt32(T,f),T+=4);else{let I;if((I=this.useFloat32)>0&&f<4294967296&&f>=-2147483648){R[T++]=202,qe.setFloat32(T,f);let L;if(I<4||(L=f*Ps[(R[T]&127)<<1|R[T+1]>>7])>>0===L){T+=4;return}else T--}R[T++]=203,qe.setFloat64(T,f),T+=8}else if(D==="object")if(!f)R[T++]=192;else{if(a){let L=a.get(f);if(L){if(!L.id){let M=a.idsToInsert||(a.idsToInsert=[]);L.id=M.push(L)}R[T++]=214,R[T++]=112,qe.setUint32(T,L.id),T+=4;return}else a.set(f,{offset:T-r})}let I=f.constructor;if(I===Object)B(f,!0);else if(I===Array){C=f.length,C<16?R[T++]=144|C:C<65536?(R[T++]=220,R[T++]=C>>8,R[T++]=C&255):(R[T++]=221,qe.setUint32(T,C),T+=4);for(let L=0;L<C;L++)b(f[L])}else if(I===Map){C=f.size,C<16?R[T++]=128|C:C<65536?(R[T++]=222,R[T++]=C>>8,R[T++]=C&255):(R[T++]=223,qe.setUint32(T,C),T+=4);for(let[L,M]of f)b(L),b(M)}else{for(let L=0,M=Ds.length;L<M;L++){let k=il[L];if(f instanceof k){let W=Ds[L];if(W.write){W.type&&(R[T++]=212,R[T++]=W.type,R[T++]=0),b(W.write.call(this,f));return}let ne=R,pe=qe,se=T;R=null;let Y;try{Y=W.pack.call(this,f,U=>(R=ne,ne=null,T+=U,T>pr&&w(T),{target:R,targetView:qe,position:T-U}),b)}finally{ne&&(R=ne,qe=pe,T=se,pr=R.length-10)}Y&&(Y.length+T>pr&&w(Y.length+T),T=gv(Y,R,T,W.type));return}}B(f,!f.hasOwnProperty)}}else if(D==="boolean")R[T++]=f?195:194;else if(D==="bigint"){if(f<BigInt(1)<<BigInt(63)&&f>=-(BigInt(1)<<BigInt(63)))R[T++]=211,qe.setBigInt64(T,f);else if(f<BigInt(1)<<BigInt(64)&&f>0)R[T++]=207,qe.setBigUint64(T,f);else if(this.largeBigIntToFloat)R[T++]=203,qe.setFloat64(T,Number(f));else throw new RangeError(f+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");T+=8}else if(D==="undefined")this.encodeUndefinedAsNil?R[T++]=192:(R[T++]=212,R[T++]=0,R[T++]=0);else if(D==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+D)},B=this.useRecords===!1?this.variableMapSize?f=>{let D=Object.keys(f),C=D.length;C<16?R[T++]=128|C:C<65536?(R[T++]=222,R[T++]=C>>8,R[T++]=C&255):(R[T++]=223,qe.setUint32(T,C),T+=4);let I;for(let L=0;L<C;L++)b(I=D[L]),b(f[I])}:(f,D)=>{R[T++]=222;let C=T-r;T+=2;let I=0;for(let L in f)(D||f.hasOwnProperty(L))&&(b(L),b(f[L]),I++);R[C+++r]=I>>8,R[C+r]=I&255}:f=>{let D=Object.keys(f),C,I=s.transitions||(s.transitions=Object.create(null)),L=0;for(let k=0,W=D.length;k<W;k++){let ne=D[k];C=I[ne],C||(C=I[ne]=Object.create(null),L++),I=C}let M=I[$n];if(M)M>=96&&g?(R[T++]=((M-=96)&31)+96,R[T++]=M>>5):R[T++]=M;else{M=s.nextId,M||(M=64),M<x&&this.shouldShareStructure&&!this.shouldShareStructure(D)?(M=s.nextOwnId,M<y||(M=x),s.nextOwnId=M+1):(M>=y&&(M=x),s.nextId=M+1);let k=D.highByte=M>=96&&g?M-96>>5:-1;I[$n]=M,s[M-64]=D,M<x?(D.isShared=!0,s.sharedLength=M-63,n=!0,k>=0?(R[T++]=(M&31)+96,R[T++]=k):R[T++]=M):(k>=0?(R[T++]=213,R[T++]=114,R[T++]=(M&31)+96,R[T++]=k):(R[T++]=212,R[T++]=114,R[T++]=M),L&&(P+=S*L),v.length>=m&&(v.shift()[$n]=0),v.push(I),b(D))}for(let k=0,W=D.length;k<W;k++)b(f[D[k]])},w=f=>{let D;if(f>16777216){if(f-r>$p)throw new Error("Packed buffer would be larger than maximum buffer size");D=Math.min($p,Math.round(Math.max((f-r)*(f>67108864?1.25:2),4194304)/4096)*4096)}else D=(Math.max(f-r<<2,R.length-1)>>12)+1<<12;let C=new nl(D);return qe=new DataView(C.buffer,0,D),R.copy?R.copy(C,0,r,f):C.set(R.slice(r,f)),T-=r,r=0,pr=C.length-10,R=C}}useBuffer(t){R=t,qe=new DataView(R.buffer,R.byteOffset,R.byteLength),T=0}};il=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,qn];Ds=[{pack(i,t,e){let r=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&r>=0&&r<4294967296){let{target:o,targetView:n,position:s}=t(6);o[s++]=214,o[s++]=255,n.setUint32(s,r)}else if(r>0&&r<17179869184){let{target:o,targetView:n,position:s}=t(10);o[s++]=215,o[s++]=255,n.setUint32(s,i.getMilliseconds()*4e6+(r/1e3/4294967296>>0)),n.setUint32(s+4,r)}else if(isNaN(r)){if(this.onInvalidDate)return t(0),e(this.onInvalidDate());let{target:o,targetView:n,position:s}=t(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:n,position:s}=t(15);o[s++]=199,o[s++]=12,o[s++]=255,n.setUint32(s,i.getMilliseconds()*1e6),n.setBigInt64(s+4,BigInt(Math.floor(r)))}}},{pack(i,t,e){let r=Array.from(i),{target:o,position:n}=t(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(r)}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=101,r[o++]=0),e([i.name,i.message])}},{pack(i,t,e){let{target:r,position:o}=t(this.structuredClone?3:0);this.structuredClone&&(r[o++]=212,r[o++]=120,r[o++]=0),e([i.source,i.flags])}},{pack(i,t){this.structuredClone?Xp(i,16,t):Kp(_s?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==Yp&&this.structuredClone?Xp(i,ol.indexOf(e.name),t):Kp(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function Xp(i,t,e,r){let o=i.byteLength;if(o+1<256){var{target:n,position:s}=e(4+o);n[s++]=199,n[s++]=o+1}else if(o+1<65536){var{target:n,position:s}=e(5+o);n[s++]=200,n[s++]=o+1>>8,n[s++]=o+1&255}else{var{target:n,position:s,targetView:a}=e(7+o);n[s++]=201,a.setUint32(s,o+1),s+=4}n[s++]=116,n[s++]=t,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s)}function Kp(i,t){let e=i.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:n}=t(e+5);r[o++]=198,n.setUint32(o,e),o+=4}r.set(i,o)}function gv(i,t,e,r){let o=i.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(i,e),e+=o,e}function yv(i,t){let e,r=t.length*6,o=i.length-r;for(t.sort((n,s)=>n.offset>s.offset?1:-1);e=t.pop();){let n=e.offset,s=e.id;i.copyWithin(n+r,n,o),r-=6;let a=n+r;i[a++]=214,i[a++]=105,i[a++]=s>>24,i[a++]=s>>16&255,i[a++]=s>>8&255,i[a++]=s&255,o=n}return i}function po(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");il.unshift(i.Class),Ds.unshift(i)}qp(i)}var Jp=new ho({useRecords:!1}),xv=Jp.pack,vv=Jp.pack;var{NEVER:bv,ALWAYS:Sv,DECIMAL_ROUND:wv,DECIMAL_FIT:Nv}=As,Qp=512,Cv=1024;var Zp=new ho({structuredClone:!0});po({Class:kt.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,kt.prototype),i}});po({Class:Ve.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ve.prototype),i}});po({Class:Ht.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ht.prototype),i}});po({Class:Hn.prototype.constructor,type:4,write(i){return i.id},read(i){return new Hn(i)}});po({Class:Wn.prototype.constructor,type:5,write(i){return i.data},read(i){return new Wn(i)}});function Tv(i){var t=0;if(i.length===0)return t;for(let e=0;e<i.length;e++){let r=i[e];t=(t<<5)-t+r,t=t&t}return t}function sl(i){if(xs(i))return i;if(Array.isArray(i))return i.map(sl);if(typeof i=="object"&&i!==null){let t={};for(let e of Object.keys(i).sort())t[e]=sl(i[e]);return Object.setPrototypeOf(t,Object.getPrototypeOf(i)),t}else return i}var Bs;(r=>{function i(o){return Zp.pack(o)}r.serialize=i;function t(o){return Zp.unpack(o)}r.deserialize=t;function e(o){return Tv(i(sl(o))).toString()}r.checksum=e})(Bs||(Bs={}));var Es;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Es||(Es={}));var Gs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(r==="SpotLight")return{type:r,color:Et.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,helper:!0,shadowResolution:1024,shadowRadius:1};if(r==="DirectionalLight")return{type:r,color:Et.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(Gs||(Gs={}));var al;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(al||(al={}));var ll;(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})(ll||(ll={}));var Rs;(t=>t.defaultData={...ll.defaultData,...al.defaultData,cloner:null,booleanExclude:null})(Rs||(Rs={}));var cl=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(cl||{}),hl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(hl||{}),pl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(pl||{}),zs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Et.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(zs||(zs={}));var Yo;(r=>{function i(o,n){return o==="light"&&n?t(n):e(o)}r.defaultData=i;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:Bt.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],[0,0,0,1]],steps:[0,1,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:{...Bt.fromHex(6710886),a:1},colorB:{...Bt.fromHex(6710886),a:1},colorC:{...Bt.fromHex(16777215),a:1},colorD:{...Bt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Et.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Et.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Et.fromHexAndA(0,1),contourColor:Et.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Yo||(Yo={}));var uo;(a=>{function i(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=i;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 Ve}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return n("phong",l,c)}a.defaultData=o;function n(l,c="layer1",h="layer2"){let p=new Ve;return p.push({fi:0,data:Yo.defaultData("light",l),id:c}),p.push({fi:1,data:Yo.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=n;function s(l,c="basic",h="layer1",p="layer2"){let u=Yo.defaultData("texture");Object.assign(u.texture,{image:l});let d=new Ve;return d.push({fi:0,data:u,id:h}),d.push({fi:1,data:Yo.defaultData("light",c),id:p}),{layers:d}}a.defaultTwoLayerTextureData=s})(uo||(uo={}));var Jo;(t=>{function i(){return{points:new Ve,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(Jo||(Jo={}));var Vs;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(Vs||(Vs={}));var Xn;(t=>{function i(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:Jo.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}t.defaultData=i})(Xn||(Xn={}));var Kn;(o=>{o.identity={...fs.identity,hiddenMatrix:Hr.identity};function t(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=t;function e(n,s){return{position:s?.position||n.position,rotation:s?.rotation||n.rotation,scale:s?.scale||n.scale,hiddenMatrix:s?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Wo.isEqual(n.position,s.position)?null:s.position,rotation:Wo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Wo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Hr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Kn||(Kn={}));var Or;(t=>t.defaultData={states:new Ve,events:new Ve,visible:!0,raycastLock:!1,...Kn.identity})(Or||(Or={}));var eu;(t=>t.defaultData={type:"Empty",...Or.defaultData})(eu||(eu={}));var Fs;(t=>t.defaultData={type:"Mesh",...Or.defaultData,...Rs.defaultData})(Fs||(Fs={}));var tu;(t=>t.defaultData={type:"TextFrame",...Or.defaultData,...zs.defaultData})(tu||(tu={}));var Us;(t=>t.defaultData={...Or.defaultData,...Kn.identity,...lo.defaultData})(Us||(Us={}));var ru;(t=>{function i(e){return{...Or.defaultData,...Gs.defaultData(e)}}t.defaultData=i})(ru||(ru={}));var ou;(r=>(r.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Hr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Ve,events:new Ve,...lo.defaultData},r.defaultMeshObject={name:"Rectangle",...Or.defaultData,...Fs.defaultData,geometry:Xn.defaultData("RectangleGeometry"),material:uo.defaultTwoLayerData("basic","layer1","layer2")},r.defaultBooleanObject={name:"Boolean",...Or.defaultData,...Fs.defaultData,geometry:Xn.defaultData("BooleanGeometry"),material:uo.defaultTwoLayerData("phong","layer1","layer2")}))(ou||(ou={}));var nu;(e=>{function i(r,o){if(o===void 0)return r;let n={...r};return"material"in n&&"material"in o&&o.material&&(n.material=$a(n.material,s=>{if(typeof s!="string")for(let[a,l]of Object.entries(o.material.layers)){let c=s.layers.data(a);c&&ao(c,l)}}).data),n.materials&&o.materials&&(n.materials=$a(n.materials,s=>{for(let a=0;a<n.materials.length;a++){let l=o.materials[a];if(typeof l!="string")for(let[c,h]of Object.entries(l.layers)){let p=s[a]?.layers?.data(c);p&&ao(p,h)}}}).data),n}e.patchMaterialState=i;function t(r,o){if(o===void 0)return r;let n={...r};if(Object.assign(n,Kn.merge(n,o)),Ho.is(r.type)){n.orthographic={...n.orthographic},n.perspective={...n.perspective};let s=o;s.orthographic?.zoom!==void 0&&(n.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(n.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(n.targetOffset=s.targetOffset)}else if(r.type==="Mesh")n.geometry={...n.geometry},Object.assign(n.geometry,o.geometry),n=i(n,o);else if(Es.is(r.type)){let s=o;n.intensity!==void 0&&(n.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?n.color=s.color:n.color=Bt.clone(s.color))}return n}e.patch=t})(nu||(nu={}));var au=require("three");var Ee=require("three"),su=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},i.parameters),r=e.width/2,o=e.radiusTop??r,n=e.radiusBottom??r;return o===n?(o=r,n=r):o>n?(o=r,n=n*r/o):(o=o*r/n,n=r),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:n})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:h,cornerRadius:p,cornerSegments:u,hollow:d}=i.parameters,m;return p||d?m=new Yn(c,h,r,o,n,s,a,l*Math.PI/180,p,p,u,d):m=new Ee.CylinderBufferGeometry(c,h,r,o,n,s,a,l*Math.PI/180),m.scale(1,1,e/t),Object.assign(m,{userData:{...i,type:"CylinderGeometry"}})}};function $r(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function iu(i){return new Ee.Vector2(i.y,-i.x)}var Yn=class extends Ee.BufferGeometry{constructor(t,e,r,o,n,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,n=Math.floor(n)||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 m=[],g=[],x=[],y=[],v=0,P=r/2,S=new Ee.Vector3,b=new Ee.Vector3;d&&t==0&&(t=c),d&&e==0&&(e=h);let B=new Ee.Vector2(t,P),w=new Ee.Vector2(e,-P),f=null,D=null,C=null,I=null,L=B.clone().sub(w),M=0,k=0,W=0;u>0&&(M=Math.min(t,e)*(1-u),k=t-M,W=e-M);let ne=B.clone();ne.x-=M;let pe=Math.PI-L.angle(),se=L.angle(),Y=Math.tan(se/2),U=Math.tan(pe/2),z=Y+U,E=u?z:U,_=u?z:Y;if(c=Math.min(c,(t-k)/E,L.length()/z),h=Math.min(h,(e-W)/_,L.length()/z),c>0){let F=c/Y;f=B.clone().sub(new Ee.Vector2(F,c)),u&&(C=f.clone(),C.x-=M-z*c),B.sub(L.clone().setLength(F))}if(h>0){let F=h/U;D=w.clone().sub(new Ee.Vector2(F,-h)),w.add(L.clone().setLength(F)),u&&(I=D.clone(),I.x-=M-z*h,ne.sub(L.clone().setLength(F)))}L=B.clone().sub(w);let A=L.length()<.5,G=[];for(let F=0;F<=o;F++){let O=[],q=F/o,Z=q*l+a,ee=new Ee.Vector2(Math.sin(Z),Math.cos(Z));I&&D?(J(O,q,ee,pe,h,I,-1,!0),J(O,q,ee,se,h,D,-1,!1)):D?(j(O,ee,D.x,0,-1),J(O,q,ee,se,h,D,-1,!1)):s||j(O,ee,e,W,-1);let H=iu(L).normalize();if($r(H,ee,S),!A)for(let Q=0;Q<=n;Q++){let $=Q/n,re=L.clone().multiplyScalar($).add(w);$r(re,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/r),O.push(v++)}if(C&&f?(J(O,q,ee,pe,c,f,1,!1),J(O,q,ee,se,c,C,1,!0)):f?(J(O,q,ee,pe,c,f,1,!1),j(O,ee,f.x,0,1)):s||j(O,ee,t,k,1),u&&!A){let Q=iu(L).multiplyScalar(-1).normalize();$r(Q,ee,S);for(let $=0;$<=n;$++){let re=$/n,ce=L.clone().multiplyScalar(-re).add(ne);$r(ce,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/r),O.push(v++)}}u&&!s&&O.push(O[0]),G.push(O)}for(let F=0;F<G.length-1;F++)for(let O=0;O<G[0].length-1;O++){if(s&&u&&O==n)continue;let q=G[F][O],Z=G[F+1][O],ee=G[F+1][O+1],H=G[F][O+1],Q=g[ee*3+0],$=g[ee*3+2];m.push(q,Z,H),(Q!=0||$!=0)&&m.push(Z,ee,H)}l<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+l)),this.setIndex(m),this.setAttribute("position",new Ee.Float32BufferAttribute(g,3)),this.setAttribute("normal",new Ee.Float32BufferAttribute(x,3)),this.setAttribute("uv",new Ee.Float32BufferAttribute(y,2));function J(F,O,q,Z,ee,H,Q,$){for(let re=0;re<p+1;re++){let ce=re/p,ie=Q<0?ce:1-ce;$&&(ie-=1),ie*=Z;let fe=new Ee.Vector2(Math.sin(ie),Math.cos(ie)*Q),Ue=fe.clone().multiplyScalar(ee).add(H);$r(Ue,q,b),g.push(b.x,b.y,b.z),$r(fe,q,S),x.push(S.x,S.y,S.z),y.push(O,.5+b.y/r),F.push(v++)}}function j(F,O,q,Z,ee){let H=new Ee.Vector3,Q=new Ee.Vector2,$=[q,Z];ee<0&&$.reverse();for(let re of $)Q.set(re,P*ee),$r(Q,O,H),g.push(H.x,H.y,H.z),x.push(0,ee,0),y.push(.5,.5),F.push(v++)}function V(F,O,q){let Z=new Ee.Vector2(Math.sin(q),Math.cos(q)),ee=new Ee.Vector2(-Math.cos(q),Math.sin(q)),H=new Ee.Vector3,Q=F<0?(ce,ie,fe)=>m.push(ce,ie,fe):(ce,ie,fe)=>m.push(ce,fe,ie),$=new Ee.Vector2((t+e+k+W)/4,0);$r($,Z,H),g.push(H.x,H.y,H.z),x.push(ee.x,0,ee.y),y.push(.5,.5);let re=v++;for(let ce of O){let ie=g.slice(ce*3,ce*3+3);g.push(...ie),x.push(ee.x,0,ee.y);let fe=y.slice(ce*2,ce*2+2);y.push(...fe),v++}for(let ce=re+1;ce<v-1;ce++)Q(re,ce,ce+1);Q(re,v-1,re+1)}}};var lu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,depth:e,height:r,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:h,cornerSegments:p}=i.parameters,u;return c>0||h>0||l<360?u=new Yn(0,t/2,r,o,n,s,a,l*Math.PI/180,c,h,p,0,!0):u=new au.ConeBufferGeometry(t/2,r,o,n,s),u.scale(1,1,e/t),Object.assign(u,{userData:{...i,type:"ConeGeometry"}})}};var It=require("three"),cu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,widthSegments:o,heightSegments:n,depthSegments:s,cornerRadius:a,cornerSegments:l}=i.parameters,c;return a==0?c=new It.BoxBufferGeometry(t,e,r,o,n,s):c=new dl(t,e,r,o,n,s,a,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},ul=Math.PI/2,dl=class extends It.BufferGeometry{constructor(t=1,e=1,r=1,o=1,n=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),n=Math.floor(n),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,t/2,e/2,r/2);let h=[],p=[],u=[],d=[],m=0,g=0;x("z","y","x",-1,-1,r,e,t,s,n,0),x("z","y","x",1,-1,r,e,-t,s,n,1),x("x","z","y",1,1,t,r,e,o,s,2),x("x","z","y",1,-1,t,r,-e,o,s,3),x("x","y","z",1,-1,t,e,r,o,n,4),x("x","y","z",-1,-1,t,e,-r,o,n,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,n,0),y("y","x","z",1,-1,-1,e,t,r,n,1),y("y","x","z",1,1,1,e,t,r,n,1),y("y","x","z",-1,1,-1,e,t,r,n,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new It.Float32BufferAttribute(p,3)),this.setAttribute("normal",new It.Float32BufferAttribute(u,3)),this.setAttribute("uv",new It.Float32BufferAttribute(d,2));function x(P,S,b,B,w,f,D,C,I,L,M){let k=(f-2*a)/I,W=(D-2*a)/L,ne=f/2-a,pe=D/2-a,se=C/2,Y=I+1,U=L+1,z=0,E=0,_=new It.Vector3;for(let A=0;A<U;A++){let G=A*W-pe;for(let J=0;J<Y;J++){let j=J*k-ne;_[P]=j*B,_[S]=G*w,_[b]=se,p.push(_.x,_.y,_.z),_[P]=0,_[S]=0,_[b]=C>0?1:-1,u.push(_.x,_.y,_.z),d.push(J/I),d.push(1-A/L),z+=1}}for(let A=0;A<L;A++)for(let G=0;G<I;G++){let J=m+G+Y*A,j=m+G+Y*(A+1),V=m+(G+1)+Y*(A+1),F=m+(G+1)+Y*A;h.push(J,j,F),h.push(j,V,F),E+=6}c.addGroup(g,E,M),g+=E,m+=z}function y(P,S,b,B,w,f,D,C,I,L,M){let k=(D-2*a)/L,W=D/2-a,ne=C/2-a,pe=I/2,se=L+1,Y=0,U=0,z=new It.Vector3,E=new It.Vector3;for(let _=0;_<l+1;_++){let A=_/l*ul,G=Math.sin(A)*a,J=(1-Math.cos(A))*a,j=Math.sin(A),V=Math.cos(A);z[S]=(ne+G)*w,z[b]=(pe-J)*f,E[P]=0,E[S]=j*Math.sign(z[S]),E[b]=V*Math.sign(z[b]);for(let F=0;F<se;F++){let O=F*k-W;z[P]=O*B,p.push(z.x,z.y,z.z),u.push(E.x,E.y,E.z),d.push(F/L),d.push(0),Y+=1}}for(let _=0;_<l;_++)for(let A=0;A<L;A++){let G=m+A+se*_,J=m+A+se*(_+1),j=m+(A+1)+se*(_+1),V=m+(A+1)+se*_;h.push(G,J,V),h.push(J,j,V),U+=6}c.addGroup(g,U,M),g+=U,m+=Y}function v(P,S,b){let B=new It.Vector3,w=new It.Vector3(t/2,e/2,r/2);w.subScalar(a);let f=[],D=P*S*b>0?(I,L,M)=>h.push(I,L,M):(I,L,M)=>h.push(I,M,L);for(let I=0;I<=l;I++){let L=[],M=ul*(1-I/l),k=Math.cos(M),W=Math.sin(M),ne=0;for(let pe=0;pe<=I;pe++){let se=Math.cos(ne),Y=Math.sin(ne);B.x=k*se,B.y=W,B.z=k*Y;let U=w.clone().addScaledVector(B,a);p.push(P*U.x,S*U.y,b*U.z),u.push(P*B.x,S*B.y,b*B.z),d.push(0,0),L.push(m++),ne+=ul/I}f.push(L)}let C=f.length-1;for(let I=0;I<C;I++){let L=f[I],M=f[I+1],k=L.length-1;D(L[0],M[1],M[0]);for(let W=1;W<=k;W++)D(L[W-1],L[W],M[W]),D(L[W],M[W+1],M[W])}}}};var ke=require("three"),Xr=class extends ke.BufferGeometry{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new ke.Float32BufferAttribute(a,3)),this.setAttribute("normal",new ke.Float32BufferAttribute(c,3)),this.setAttribute("uv",new ke.Float32BufferAttribute(l,2));return;function h(){n=Math.min(1-1e-5,n),n==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],m=new ke.Vector3,g=m.clone(),x=new ke.Triangle,y=n*o,v=o-y,P=s+1,S=new ke.Vector3,b=(Y,U)=>S.subVectors(Y,U).normalize(),B=(Y,U)=>Array(Y).fill(void 0).map(U),w=B(t.length/3,(Y,U)=>new ke.Vector3().fromArray(t,U*3).setLength(o)),f=[],D=1e6;for(let Y=0;Y<w.length;Y++){let U=w[Y],z=[],E,_,A,G=1e10,J=-1;for(;(J=e.indexOf(Y,J+1))!=-1;){let O=J-J%3;E=e[O+(J+1)%3],_=e[O+(J+2)%3],A=U.distanceToSquared(w[E]),G=Math.min(G,A),z.push([E,_,A])}G+=1e-6;let j=[],V=0,F=z.length;for(let O=0;O<F;O++){[E,_,A]=z[V];let q=f[E]?.includes(Y)==!0;A<=G&&j.push(E+ +q*D),V=z.findIndex(Z=>Z[0]==_)}f.push(j)}let C=[];{let Y=0,U=0,z,E,_=d==3;for(let A=0;A<=s;A++){z=A*(A+1)/2,E=(A+1)*(A+2)/2;for(let G=0;G<s-A;G++)[Y,U]=[z+G+A+2,E+G+A+3],C.push(z,E,..._?[U,z]:[Y,E],U,Y),[z,E]=[Y,U];C.push(z,E,z+s+2)}}let I=m.clone(),L=m.clone(),M=m.clone(),k=m.clone(),W=m.clone(),ne=[],pe=B(w.length,()=>B(d,()=>m.clone()));for(let Y=0;Y<w.length;Y++){m.copy(w[Y]).normalize(),I.copy(m).multiplyScalar(v);let U=f[Y];for(let j=0;j<U.length;j++){let V=U[j],F=U[(j+1)%d];x.setFromPointsAndIndices(w,Y,V%D,F%D),x.b.sub(x.a).setLength(1e10).add(x.a),x.c.sub(x.a).setLength(1e10).add(x.a),x.closestPointToPoint(I,pe[Y][j])}let z=[],E=[],_=[],A=new ke.Vector3;s==0&&[...pe[Y]].reduce((j,V)=>j.add(V),A).multiplyScalar(1/d);for(let j=0;j<d;j++){let V=[],F=(j-1+d)%d,O=pe[Y][F],q=pe[Y][j];m.copy(O).sub(I),g.copy(q).sub(I);let Z=I.angleTo(m),ee=m.angleTo(g),H=Math.cos(Z)*y;s==0?L.copy(A):L.copy(I).setLength(v+H),E.push(H);let Q=[L,O,q];for(let $=0;$<2;$++){let re=Q[$],ce=Q[$+1];k.subVectors(re,I),W.subVectors(ce,I),M.crossVectors(k,W).normalize();for(let ie=0;ie<P;ie++){let fe=[Z,ee][$]*ie/P;m.copy(k).applyAxisAngle(M,fe).add(I),z.push(m.clone()),$&&(b(m,I),V.push([ie==0?re:m.clone(),S.clone()]))}$&&(b(ce,I),V.push([ce,S.clone()]))}_.push(V)}ne.push(_);let G=2*P,J=2;for(let j=0;j<d;j++){let V=G*j,F=G*((j+1)%d),O=[z[V]];for(let Z=1;Z<P;Z++){k=z[V+Z],W=z[F+Z],O.push(k);for(let ee=1,H=Z-J+1;ee<=H;ee++)m.lerpVectors(k,W,ee/(H+1)),m.sub(I).setLength(E[j]).add(I),O.push(m.clone());O.push(W)}for(let Z=0;Z<P;Z++)O.push(z[Z+P+V]);O.push(z[F+P]);let q=C.map(Z=>O[Z]);a.push(...q.map(Z=>[Z.x,Z.y,Z.z]).flat()),c.push(...q.map(Z=>(b(Z,I),[S.x,S.y,S.z])).flat())}}let se=[];for(let Y=0;Y<f.length;Y++)for(let U=0;U<d;U++){let z=f[Y][U];if(z<D){let E=f[z].findIndex(G=>G%D==Y),_=ne[Y][U],A=ne[z][E];for(let G=0;G<P;G++){let J=_[G],j=A[P-G],V=_[G+1],F=A[P-(G+1)];[J,j,V,V,j,F].forEach(O=>{a.push(O[0].x,O[0].y,O[0].z),c.push(O[1].x,O[1].y,O[1].z)})}se.push(_[0][0],A[P][0],_[P][0],A[0][0])}}for(;se.length;){let Y,U,z,E;[Y,U]=se.splice(0,2);let _=[Y];for(;Y!=U;)_.push(U),z=se.indexOf(U),E=z%2,U=se.splice(z-E,2)[1-E];S.subVectors(_[0],_[1]).cross(m.subVectors(_[0],_[2])).normalize();let A=S.dot(_[0])<0;A&&S.negate();for(let G=1;G<=_.length-2;G++)[_[G+ +A],_[G+1-+A],_[0]].forEach(J=>{a.push(J.x,J.y,J.z),c.push(S.x,S.y,S.z)})}}function p(){let u=new ke.Vector3;for(let w=0;w<a.length;w+=3){u.x=a[w+0],u.y=a[w+1],u.z=a[w+2];let f=b(u)/2/Math.PI+.5,D=B(u)/Math.PI+.5;l.push(f,1-D)}let d=new ke.Vector3,m=new ke.Vector3,g=new ke.Vector3,x=new ke.Vector3,y=new ke.Vector2,v=new ke.Vector2,P=new ke.Vector2,S=(w,f,D,C)=>{C<0&&w.x===1&&(l[f]=w.x-1),D.x===0&&D.z===0&&(l[f]=C/2/Math.PI+.5)};for(let w=0,f=0;w<a.length;w+=9,f+=6){d.set(a[w+0],a[w+1],a[w+2]),m.set(a[w+3],a[w+4],a[w+5]),g.set(a[w+6],a[w+7],a[w+8]),y.set(l[f+0],l[f+1]),v.set(l[f+2],l[f+3]),P.set(l[f+4],l[f+5]),x.copy(d).add(m).add(g).divideScalar(3);let D=b(x);S(y,f+0,d,D),S(v,f+2,m,D),S(P,f+4,g,D)}for(let w=0;w<l.length;w+=6){let f=l[w+0],D=l[w+2],C=l[w+4],I=Math.max(f,D,C),L=Math.min(f,D,C);I>.9&&L<.1&&(f<.2&&(l[w+0]+=1),D<.2&&(l[w+2]+=1),C<.2&&(l[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function B(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(t){return new Xr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};var hu=require("three"),pu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new Jn(t*.5,n,s):new hu.DodecahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"DodecahedronGeometry"}})}},Jn=class extends Xr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=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,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],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 Jn(t.radius,t.corner,t.cornerSides)}};var we=require("three");var ge=require("three"),Qn=1e-12,Qo=class{constructor(t){this.position=new ge.Vector2;this.startPosition=new ge.Vector2;this.uuid=ge.MathUtils.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new Qo(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Zo=class extends Qo{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new Zo(this.parent).copy(this)}},Qt=class extends Qo{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new Zo(this),new Zo(this))}static create(e,r){let o=new Qt(e,new ge.Vector2(...r.position));return o.controls[0].position.set(...r.controlPrevious.position),o.controls[1].position.set(...r.controlNext.position),o.roundness=r.roundness,o.areControlsDirectionsMirrored=r.areControlsDirectionsMirrored,o}getOppositeControl(e){let r=this.controls.indexOf(e);return r===0?this.controls[1]:r===1?this.controls[0]:null}applyOffsetToControls(e,r=1){for(let o=0,n=this.controls.length;o<n;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 Qt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),r=this.curveAfter?.getTangentAt(0);return[e,r]}computeNormals(e=new ge.Vector2,r=new ge.Vector2){let[o,n]=this.computeTangents();return o&&n&&(uu(o,e),uu(n,r)),[e,r]}computeTangent(e=new ge.Vector2){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new ge.Vector2){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function uu(i,t=new ge.Vector2){let e=i.length();return t.set(-i.y/e,i.x/e)}var fl=i=>i,en=new ge.Vector2,js=new ge.Vector2,Lv=new ge.Vector2,Iv=new ge.Vector2,Pv=new ge.Vector2,Mv=new ge.Vector2,mu=new ge.Vector3,fu=new ge.Vector3;function gu(i){let t=new ge.Vector2;t.addVectors(i.v0,en.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new ge.Vector2;return e.addVectors(i.v2,js.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new ge.CubicBezierCurve(i.v0,t,e,i.v2)}function Zn(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function Av(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function Ov(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function gl(i,t,e){let r=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),o=Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+r*r-n*n)/(2*o*r))}function yu(i,t,e){return du(i,t)&&du(t,e)&&ml(i.position,t.position,e.position)}function ml(i,t,e){return en.copy(t).sub(i).cross(js.copy(e).sub(i))===0}function xu(i,t,e,r,o){let n=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)),s=(i.y+t.y)/2,a=(i.x+t.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-t.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(t.x-i.x)/n;return r.set(a+l,s+c),o.set(a-l,s-c),[r,o]}function vu(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function bu(i,t,e,r,o,n){let s=t.x-i.x,a=t.y-i.y,l=e.x-i.x,c=e.y-i.y,h=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),p;return gl(t,i,e)>Math.PI&&(h*=-1),Zn(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),n.set(e.x+p*c,e.y-p*l),[o,n]}function yl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function du(i,t){return ml(i.position,i.controls[1].position,t.position)&&ml(i.position,t.controls[0].position,t.position)}function Su(i,t,e,r,o=.5){let n=en.subVectors(t,i).multiplyScalar(o).add(i),s=js.subVectors(e,t).multiplyScalar(o).add(t),a=Lv.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=Iv.subVectors(s,n).multiplyScalar(o).add(n),h=Pv.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=Mv.subVectors(h,c).multiplyScalar(o).add(c);return[i.x,i.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(i,t,e=12,r=!0){let o=fu.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=fl(t[l]),h=en,p=Kr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof ge.CubicBezierCurve||c instanceof ge.QuadraticBezierCurve||c instanceof ge.LineCurve){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),n!==void 0&&Ov(n,o))continue;n===void 0&&(n=mu),n.copy(o),i.setXYZ(s,o.x,o.y,o.z),s++}}return r&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),i}function Nu(i,t,e,r=12,o=!0){let n=fu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=fl(t[l]),p=en,u=Kr(h,r);a.push(u);for(let d=0;d<=u;d++)if(h instanceof ge.CubicBezierCurve||h instanceof ge.QuadraticBezierCurve||h instanceof ge.LineCurve){if(h.getPoint(d/u,p),n.set(p.x,p.y,0),c?.equals(n))continue;c===void 0?c=mu:(i.setXYZ(s,c.x,c.y,c.z),s++,i.setXYZ(s,n.x,n.y,n.z),s++),c.copy(n)}}return o&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),a}function xl(i,t=12,e=!1){let r=[];for(let o=0,n=i.length;o<n;o++){let s=i[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Kr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Kr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Kr(i[0].roundedCurveCorner,t)*.5),r}function Kr(i,t=12){return i&&i instanceof ge.EllipseCurve?t*2:i&&(i instanceof ge.LineCurve||i instanceof ge.LineCurve3)?1:i&&i instanceof ge.SplineCurve?t*i.points.length:t}function Cu(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=fl(t[s]),l=Kr(a,e),c=en;for(let h=0;h<=l;h++)if(a instanceof ge.CubicBezierCurve||a instanceof ge.QuadraticBezierCurve||a instanceof ge.LineCurve){if(a.getPoint(h/l,c),o!==void 0&&Av(o,c,Qn))continue;o===void 0&&(o=js),o.copy(c),i.push(c.x,c.y),n++}}return Zn(i[0],i[i.length-2],Qn)&&Zn(i[1],i[i.length-1],Qn)&&(i.pop(),i.pop()),r&&n>1&&!(Zn(i[n-1],i[1],Qn)&&Zn(i[n-2],i[0],Qn))&&(i.push(i[0],i[1]),n++),i}var vl=new we.Vector2,Dv=new we.Vector2,_v=new we.Vector2,Bv=new we.Vector2,Ev=new we.Vector2,Gv=new we.Vector2,Ce=class extends we.Shape{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new we.EventDispatcher;this.plane=new we.Plane(new we.Vector3(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=we.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Ce;return n.isClosed=e.isClosed,n.points=e.points.map(s=>Qt.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Ce.createFromState(s)),r!==void 0&&o!==void 0&&n.applySize(r,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let r=0,o=this.points.length;r<o;r++)this.points[r].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(r=>this.getPointIndexById(r)).filter(r=>r>=0)}getPointIndexById(e){let r=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=r;for(let s=0,a=this.shapeHoles.length;s<a;s++){let l=this.shapeHoles[s],c=l.points.length-1,h=l.getPointIndexById(e);if(h<0)n+=c;else return h+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let r=0,o=this.shapeHoles.length;r<o;r++){let n=this.shapeHoles[r],s=e-this.points.length;if(s<=n.points.length-1)return n.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,n=this.shapeHoles.length;o<n;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=vl.set(e,r);for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let n=0,s=this.shapeHoles.length;n<s;n++)this.shapeHoles[n].applyScale(e,r);this._update(!1)}createPoint(e,r=0,o=we.MathUtils.generateUUID()){let n;e instanceof we.Vector2?n=e:n=new we.Vector2(e,r);let s=new Qt(o,n);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 n=this.points[r];if(n.uuid===e)return n}for(let r=0,o=this.shapeHoles.length;r<o;r++){let s=this.shapeHoles[r].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let r=this.points.indexOf(e);r>=0&&this.points.splice(r,1),this.needsUpdate=!0}removePointById(e){let r=this.points.find(o=>o.uuid===e);r&&this.removePoint(r)}update(e=!0){for(let r=0,o=this.shapeHoles.length;r<o;r++)this.shapeHoles[r].update(!1);this._update(e)}extractShapePointsToBuffer(e,r=12,o=!1){this.subdivision=r,this.curveDivisions===void 0&&this.computeCurveDivisions(r);let n=o?this.roundedCurveDivisions:this.curveDivisions;return wu(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.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 Nu(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 n=r?this.roundedCurveDivisions:this.curveDivisions,s=0;r&&this.points[0].roundedCurveCorner!==void 0&&(s=Kr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let h=n[l];if(a<o+h)return[l,(a-o+1)/h];o+=h}return[0,1]}getCurveT(e,r,o){let n=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(yl(n,s)){let p=n.position.distanceTo(s.position);return n.position.distanceTo(vl.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){yl(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 n=o.clone();e.roundedCurveBefore=n,r.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,n=this.points.length;o<n;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let r=this.getLastPoint();if(r?.curveAfter&&(r.curveAfter=void 0),this.isClosed){let o=this.points[0],n=this.points[this.points.length-1];this._applyCurveForPoint(o,n)}if(this.points.length>2){let o=0;for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n],l=this.points[n-1]??this.points[this.points.length-1],c=this.points[n+1]??this.points[0],h=a.roundness,p=l&&c&&yu(l,a,c);if(!a.controlsMoved()&&h>0&&!p){let u=a.curveBefore,d=a.curveAfter;if(u===void 0||d===void 0)continue;let m=a.roundedCurveBefore,g=a.roundedCurveAfter,x=u.getLength(),y=d.getLength(),v=Math.min(h,x*.499),P=Math.min(h,y*.499),S=Math.min(v,P),b=1-S/x,B=S/y,w=u.getPointAt(b,vl),f=d.getPointAt(B,Dv);this._subSplitCurve(u,m,b,w,void 0),this._subSplitCurve(d,g,B,void 0,f);let D;if(this.useCubicForRoundedCorners){let C=gl(w,a.position,f)/2,I=Math.tan(C)*w.distanceTo(a.position),[L,M]=xu(w,f,I,_v,Bv),k=vu(L,M,a.position),[W,ne]=bu(k,w,f,I,Ev,Gv);D=new we.CubicBezierCurve(w.clone(),W.clone(),ne.clone(),f.clone())}else D=new we.QuadraticBezierCurve(w.clone(),a.position.clone(),f.clone());a.roundedCurveCorner=D,this.roundedCurves.splice(n+o,0,D),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,r,o,n,s){if(e instanceof we.LineCurve)n!==void 0&&r.v2.copy(n),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 n!==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 Ce(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let o=0;o<r;o++){let n=o*7,s=e.points[n+0],a=e.points[n+1],l=e.points[n+2],c=e.points[n+3],h=e.points[n+4],p=e.points[n+5],u=e.points[n+6],d=new Qt(we.MathUtils.generateUUID(),new we.Vector2(s,a));d.controls[0].position.set(l,c),d.controls[1].position.set(h,p),d.roundness=u,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Ce;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof we.CubicBezierCurve&&s.v3.equals(n.position)&&n.controls[0].position.copy(s.v2)},o=n=>{let s=[],a,l;for(a=0,l=n.length;a<l;a++)n[a]instanceof we.QuadraticBezierCurve&&(n[a]=gu(n[a]));for(a=0,l=n.length;a<l;a++){let p=n[a],u=a>0?n[a-1]:null,d;p instanceof we.CubicBezierCurve?(d=this.createPoint(p.v0),d.controls[1].position.copy(p.v1)):p instanceof we.LineCurve&&(d=this.createPoint(p.v1)),d!==void 0&&(u!==null&&r(d,u),s.push(d))}let c=n[n.length-1],h=!1;return c instanceof we.CubicBezierCurve?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof we.LineCurve&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof we.Shape&&(this.shapeHoles=e.holes.map(n=>{let s=new Ce;return s.fromShape(n),s})),this.update(),this}};var Sl=Math.PI*2;function bl({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function Rv(i,t){let e=t===1.5707963267948966?.551915024494:t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),r=Math.cos(i),o=Math.sin(i),n=Math.cos(i+t),s=Math.sin(i+t);return[{x:r-o*e,y:o+r*e},{x:n+s*e,y:s-n*e},{x:n,y:s}]}function Tu(i,t,e,r){let o=i*r-t*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+t*r));return o*Math.acos(n)}function zv(i,t,e,r,o,n,s,a,l,c){let h=Math.pow(o,2),p=Math.pow(n,2),u=Math.pow(s,2),d=Math.pow(a,2),m=h*p-h*d-p*u;m<0&&(m=0),m/=h*d+p*u,m=Math.sqrt(m)*(l===c?-1:1);let g=m*o/n*a,x=m*-n/o*s,y=g+(i+e)/2,v=x+(t+r)/2,P=(s-g)/o,S=(a-x)/n,b=(-s-g)/o,B=(-a-x)/n,w=Tu(1,0,P,S),f=Tu(P,S,b,B);return!c&&f>0&&(f-=Sl),c&&f<0&&(f+=Sl),{centerx:y,centery:v,ang1:w,ang2:f}}function Lu({px:i,py:t,cx:e,cy:r,rx:o,ry:n,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,h=(t-r)/2;if(c===0&&h===0)return[];o=Math.abs(o),n=Math.abs(n);let p=Math.pow(c,2)/Math.pow(o,2)+Math.pow(h,2)/Math.pow(n,2);p>1&&(o*=Math.sqrt(p),n*=Math.sqrt(p));let u=zv(i,t,e,r,o,n,c,h,s,a),{ang1:d,ang2:m}=u,{centerx:g,centery:x}=u,y=Math.abs(m)/(Sl/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);m/=v;for(let P=0;P<v;P++)l.push(Rv(d,m)),d+=m;return l.map(P=>{let{x:S,y:b}=bl(P[0],o,n,g,x),{x:B,y:w}=bl(P[1],o,n,g,x),{x:f,y:D}=bl(P[2],o,n,g,x);return{x1:S,y1:b,x2:B,y2:w,x:f,y:D}})}var fo=require("three");var Ge;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ge||(Ge={}));var Ze;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ze||(Ze={}));function ue(i,t){if(!i)throw t||"Assertion Failed!"}var ae=function(){function i(){}return i.vertEq=function(t,e){return t.s===e.s&&t.t===e.t},i.vertLeq=function(t,e){return t.s<e.s||t.s===e.s&&t.t<=e.t},i.transLeq=function(t,e){return t.t<e.t||t.t===e.t&&t.s<=e.s},i.edgeGoesLeft=function(t){return i.vertLeq(t.Dst,t.Org)},i.edgeGoesRight=function(t){return i.vertLeq(t.Org,t.Dst)},i.vertL1dist=function(t,e){return Math.abs(t.s-e.s)+Math.abs(t.t-e.t)},i.edgeEval=function(t,e,r){ue(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?o<n?e.t-t.t+(t.t-r.t)*(o/(o+n)):e.t-r.t+(r.t-t.t)*(n/(o+n)):0},i.edgeSign=function(t,e,r){ue(i.vertLeq(t,e)&&i.vertLeq(e,r));var o=e.s-t.s,n=r.s-e.s;return o+n>0?(e.t-r.t)*o+(e.t-t.t)*n:0},i.transEval=function(t,e,r){ue(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?o<n?e.s-t.s+(t.s-r.s)*(o/(o+n)):e.s-r.s+(r.s-t.s)*(n/(o+n)):0},i.transSign=function(t,e,r){ue(i.transLeq(t,e)&&i.transLeq(e,r));var o=e.t-t.t,n=r.t-e.t;return o+n>0?(e.s-r.s)*o+(e.s-t.s)*n:0},i.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},i.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))},i.intersect=function(t,e,r,o,n){var s,a,l;i.vertLeq(t,e)||(l=t,t=e,e=l),i.vertLeq(r,o)||(l=r,r=o,o=l),i.vertLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.vertLeq(r,e)?i.vertLeq(e,o)?(s=i.edgeEval(t,r,e),a=i.edgeEval(r,e,o),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,e.s)):(s=i.edgeSign(t,r,e),a=-i.edgeSign(t,o,e),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,r.s,a,o.s)):n.s=(r.s+e.s)/2,i.transLeq(t,e)||(l=t,t=e,e=l),i.transLeq(r,o)||(l=r,r=o,o=l),i.transLeq(t,r)||(l=t,t=r,r=l,l=e,e=o,o=l),i.transLeq(r,e)?i.transLeq(e,o)?(s=i.transEval(t,r,e),a=i.transEval(r,e,o),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,e.t)):(s=i.transSign(t,r,e),a=-i.transSign(t,o,e),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,r.t,a,o.t)):n.t=(r.t+e.t)/2},i}(),ei=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),ks=function(){function i(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(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(t){this.Sym.Lface=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(t){this.Sym.Org=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(t){this.Sym.Lnext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(t){this.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(t){this.Lnext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(t){this.Sym.Onext=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(t){this.Sym.Onext.Sym=t},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(t){this.Sym.Lnext.Sym=t},enumerable:!0,configurable:!0}),i}(),tn=function(){function i(){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 i}(),Iu=function(){function i(){var t=new tn,e=new ei,r=new ks(0),o=new ks(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 i.prototype.makeEdge_=function(t){var e=new ks(0),r=new ks(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},i.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},i.prototype.makeVertex_=function(t,e,r){var o=t;ue(o,"Vertex can't be null!");var n=r.prev;o.prev=n,n.next=o,o.next=r,r.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},i.prototype.makeFace_=function(t,e,r){var o=t;ue(o,"Face can't be null");var n=r.prev;o.prev=n,n.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)},i.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},i.prototype.killVertex_=function(t,e){var r=t.anEdge,o=r;do o.Org=e,o=o.Onext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.killFace_=function(t,e){var r=t.anEdge,o=r;do o.Lface=e,o=o.Lnext;while(o!==r);var n=t.prev,s=t.next;s.prev=n,n.next=s},i.prototype.makeEdge=function(){var t=new tn,e=new tn,r=new ei,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},i.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 n=new tn;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new ei;this.makeFace_(s,e,t.Lface),t.Lface.anEdge=t}}},i.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 ei;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)},i.prototype.addEdgeVertex=function(t){var e=this.makeEdge_(t),r=e.Sym;this.splice_(e,t.Lnext),e.Org=t.Dst;var o=new tn;return this.makeVertex_(o,r,e.Org),e.Lface=r.Lface=t.Lface,e},i.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},i.prototype.connect=function(t,e){var r=!1,o=this.makeEdge_(t),n=o.Sym;if(e.Lface!==t.Lface&&(r=!0,this.killFace_(e.Lface,t.Lface)),this.splice_(o,t.Lnext),this.splice_(n,e),o.Org=t.Dst,n.Org=e.Org,o.Lface=n.Lface=t.Lface,t.Lface.anEdge=n,!r){var s=new ei;this.makeFace_(s,o,t.Lface)}return o},i.prototype.zapFace=function(t){var e=t.anEdge,r,o,n,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)),n=r.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(r));while(r!=e);s=t.prev,a=t.next,a.prev=s,s.next=a},i.prototype.countFaceVerts_=function(t){var e=t.anEdge,r=0;do r++,e=e.Lnext;while(e!==t.anEdge);return r},i.prototype.mergeConvexFaces=function(t){var e,r,o,n,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,n=r.Sym,n&&n.Lface&&n.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),a+l-2<=t&&ae.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ae.vertCCW(n.Lprev.Org,n.Org,r.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),r=null,n=null)),!(r&&r.Lnext.Org===s);)r=o;return!0},i.prototype.check=function(){var t=this.fHead,e=this.vHead,r=this.eHead,o,n,s,a,l,c;for(n=t,n=t;(o=n.next)!==t;n=o){ue(o.prev===n),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===n&&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)},i}(),Pu=function(){function i(){this.handle=null}return i}(),Mu=function(){function i(){this.key=null,this.node=0}return i}(),Vv=function(){function i(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 Pu,this.handles[r]=new Mu;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(t){var e=this.nodes,r=this.handles,o,n,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),n=e[s].handle,s>this.size||this.leq(r[o].key,r[n].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.floatUp_=function(t){var e=this.nodes,r=this.handles,o,n,s;for(o=e[t].handle;;){if(s=t>>1,n=e[s].handle,s===0||this.leq(r[n].key,r[o].key)){e[t].handle=o,r[o].node=t;break}e[t].handle=n,r[n].node=t,t=s}},i.prototype.init=function(){for(var t=this.size;t>=1;--t)this.floatDown_(t);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(t){var e,r;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new Pu;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Mu}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},i.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},i.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},i}(),wl=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),Au=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),Fv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Au,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(t){return this.insertBefore(this.head,t)},i.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},i.prototype.insertBefore=function(t,e){do t=t.prev;while(t.key!==null&&!this.leq(this.frame,t.key,e));var r=new Au;return r.key=e,r.next=t.next,t.next.prev=r,r.prev=t,t.next=r,r},i.prototype.delete=function(t){t.next.prev=t.prev,t.prev.next=t.next},i}(),Uv=function(){function i(){}return i.regionBelow=function(t){return t.nodeUp.prev.key},i.regionAbove=function(t){return t.nodeUp.next.key},i.debugEvent=function(t){},i.addWinding=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.edgeLeq=function(t,e,r){var o=t.event,n=e.eUp,s=r.eUp;if(n.Dst===o)return s.Dst===o?ae.vertLeq(n.Org,s.Org)?ae.edgeSign(s.Dst,n.Org,s.Org)<=0:ae.edgeSign(n.Dst,s.Org,n.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(n.Dst,o,n.Org)>=0;var a=ae.edgeEval(n.Dst,o,n.Org),l=ae.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&ue(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){ue(e.fixUpperEdge),t.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=r,r.activeRegion=e},i.topLeftRegion=function(t,e){var r=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===r);if(e.fixUpperEdge){if(o=t.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(t,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(t){var e=t.eUp.Dst;do t=i.regionAbove(t);while(t.eUp.Dst===e);return t},i.addRegionBelow=function(t,e,r){var o=new wl;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},i.isWindingInside=function(t,e){switch(t.windingRule){case Ge.ODD:return(e&1)!==0;case Ge.NONZERO:return e!==0;case Ge.POSITIVE:return e>0;case Ge.NEGATIVE:return e<0;case Ge.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(t,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(t,e.windingNumber)},i.finishRegion=function(t,e){var r=e.eUp,o=r.Lface;o.inside=e.inside,o.anEdge=r,i.deleteRegion(t,e)},i.finishLeftRegions=function(t,e,r){for(var o,n=null,s=e,a=e.eUp;s!==r;){if(s.fixUpperEdge=!1,n=i.regionBelow(s),o=n.eUp,o.Org!=a.Org){if(!n.fixUpperEdge){i.finishRegion(t,s);break}o=t.mesh.connect(a.Lprev,o.Sym),i.fixUpperEdge(t,n,o)}a.Onext!==o&&(t.mesh.splice(o.Oprev,o),t.mesh.splice(a,o)),i.finishRegion(t,s),a=n.eUp,s=n}return a},i.addRightEdges=function(t,e,r,o,n,s){var a,l,c,h,p=!0;c=r;do ue(ae.vertLeq(c.Org,c.Dst)),i.addRegionBelow(t,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,h=n;a=i.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=i.isWindingInside(t,a.windingNumber),l.dirty=!0,!p&&i.checkForRightSplice(t,l)&&(i.addWinding(c,h),i.deleteRegion(t,l),t.mesh.delete(h)),p=!1,l=a,h=c;l.dirty=!0,ue(l.windingNumber-c.winding===a.windingNumber),s&&i.walkDirtyRegions(t,l)},i.spliceMergeVertices=function(t,e,r){t.mesh.splice(e,r)},i.vertexWeights=function(t,e,r){var o=ae.vertL1dist(e,t),n=ae.vertL1dist(r,t),s=.5*n/(o+n),a=.5*o/(o+n);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]},i.getIntersectData=function(t,e,r,o,n,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,r,o),i.vertexWeights(e,n,s)},i.checkForRightSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp;if(ae.vertLeq(o.Org,n.Org)){if(ae.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ae.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(t.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(t,n.Oprev,o)):(t.mesh.splitEdge(n.Sym),t.mesh.splice(o,n.Oprev),e.dirty=r.dirty=!0)}else{if(ae.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,t.mesh.splitEdge(o.Sym),t.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s;if(ue(!ae.vertEq(o.Dst,n.Dst)),ae.vertLeq(o.Dst,n.Dst)){if(ae.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,s=t.mesh.splitEdge(o),t.mesh.splice(n.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=r.dirty=!0,s=t.mesh.splitEdge(n),t.mesh.splice(o.Lnext,n.Sym),s.Rface.inside=e.inside}return!0},i.checkForIntersect=function(t,e){var r=i.regionBelow(e),o=e.eUp,n=r.eUp,s=o.Org,a=n.Org,l=o.Dst,c=n.Dst,h,p,u=new tn,d,m;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 i.debugEvent(t),ae.intersect(l,s,c,a,u),ue(Math.min(s.t,l.t)<=u.t),ue(u.t<=Math.max(a.t,c.t)),ue(Math.min(c.s,l.s)<=u.s),ue(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)?(i.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(n.Sym,o),e=i.topLeftRegion(t,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),r),i.addRightEdges(t,e,o.Oprev,o,o,!0),!0):l===t.event?(t.mesh.splitEdge(n.Sym),t.mesh.splice(o.Lnext,n.Oprev),r=e,e=i.topRightRegion(e),m=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,m,!0),!0):(ae.edgeSign(l,t.event,u)>=0&&(i.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(n.Sym),n.Org.s=t.event.s,n.Org.t=t.event.t),!1):(t.mesh.splitEdge(o.Sym),t.mesh.splitEdge(n.Sym),t.mesh.splice(n.Oprev,o),o.Org.s=u.s,o.Org.t=u.t,o.Org.pqHandle=t.pq.insert(o.Org),i.getIntersectData(t,o.Org,s,l,a,c),i.regionAbove(e).dirty=e.dirty=r.dirty=!0,!1)},i.walkDirtyRegions=function(t,e){for(var r=i.regionBelow(e),o,n;;){for(;r.dirty;)e=r,r=i.regionBelow(r);if(!e.dirty&&(r=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=r.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(t,e)&&(r.fixUpperEdge?(i.deleteRegion(t,r),t.mesh.delete(n),r=i.regionBelow(e),n=r.eUp):e.fixUpperEdge&&(i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!r.fixUpperEdge&&(o.Dst===t.event||n.Dst===t.event)){if(i.checkForIntersect(t,e))return}else i.checkForRightSplice(t,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(t,e),t.mesh.delete(o),e=i.regionAbove(r))}},i.connectRightVertex=function(t,e,r){var o,n=r.Onext,s=i.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&i.checkForIntersect(t,e),ae.vertEq(a.Org,t.event)&&(t.mesh.splice(n.Oprev,a),e=i.topLeftRegion(t,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(t,i.regionBelow(e),s),c=!0),ae.vertEq(l.Org,t.event)&&(t.mesh.splice(r,l.Oprev),r=i.finishLeftRegions(t,s,null),c=!0),c){i.addRightEdges(t,e,r.Onext,n,n,!0);return}ae.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=t.mesh.connect(r.Lprev,o),i.addRightEdges(t,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(t,e)},i.connectLeftDegenerate=function(t,e,r){var o,n,s,a,l;if(o=e.eUp,ae.vertEq(o.Org,r)){ue(!1),i.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),i.sweepEvent(t,r);return}ue(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(ue(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),ae.edgeGoesLeft(n)||(n=null),i.addRightEdges(t,e,s.Onext,a,n,!0)},i.connectLeftVertex=function(t,e){var r,o,n,s,a,l,c=new wl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ae.vertLeq(a.Dst,s.Dst)?r:o,r.inside||n.fixUpperEdge){if(n===r)l=t.mesh.connect(e.anEdge.Sym,s.Lnext);else{var h=t.mesh.connect(a.Dnext,e.anEdge);l=h.Sym}n.fixUpperEdge?i.fixUpperEdge(t,n,l):i.computeWinding(t,i.addRegionBelow(t,r,l)),i.sweepEvent(t,e)}else i.addRightEdges(t,r,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(t,e){t.event=e,i.debugEvent(t);for(var r=e.anEdge;r.activeRegion===null;)if(r=r.Onext,r===e.anEdge){i.connectLeftVertex(t,e);return}var o=i.topLeftRegion(t,r.activeRegion);ue(o!==null);var n=i.regionBelow(o),s=n.eUp,a=i.finishLeftRegions(t,n,null);a.Onext===s?i.connectRightVertex(t,o,a):i.addRightEdges(t,o,a.Onext,s,s,!0)},i.addSentinel=function(t,e,r,o){var n=new wl,s=t.mesh.makeEdge();s.Org.s=r,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,t.event=s.Dst,n.eUp=s,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=t.dict.insert(n)},i.initEdgeDict=function(t){t.dict=new Fv(t,i.edgeLeq);var e=t.bmax[0]-t.bmin[0],r=t.bmax[1]-t.bmin[1],o=t.bmin[0]-e,n=t.bmax[0]+e,s=t.bmin[1]-r,a=t.bmax[1]+r;i.addSentinel(t,o,n,s),i.addSentinel(t,o,n,a)},i.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),i.deleteRegion(t,e)},i.removeDegenerateEdges=function(t){var e,r,o,n=t.mesh.eHead;for(e=n.next;e!==n;e=r)r=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.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))},i.initPriorityQ=function(t){var e,r,o,n=0;for(o=t.mesh.vHead,r=o.next;r!==o;r=r.next)n++;for(n+=8,e=t.pq=new Vv(n,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)},i.donePriorityQ=function(t){t.pq=null},i.removeDegenerateFaces=function(t,e){var r,o,n;for(r=e.fHead.next;r!==e.fHead;r=o)o=r.next,n=r.anEdge,ue(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),t.mesh.delete(n));return!0},i.computeInterior=function(t,e){e===void 0&&(e=!0);var r,o;if(i.removeDegenerateEdges(t),!i.initPriorityQ(t))return!1;for(i.initEdgeDict(t);(r=t.pq.extractMin())!==null;){for(;o=t.pq.min(),!(o===null||!ae.vertEq(o,r));)o=t.pq.extractMin(),i.spliceMergeVertices(t,r.anEdge,o.anEdge);i.sweepEvent(t,r)}return t.event=t.dict.min().key.eUp.Org,i.debugEvent(t),i.doneEdgeDict(t),i.donePriorityQ(t),i.removeDegenerateFaces(t,t.mesh)?(e&&t.mesh.check(),!0):!1},i}(),jv=function(){function i(){this.mesh=new Iu,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=Ge.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 i.prototype.dot_=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]},i.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},i.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},i.prototype.computeNormal_=function(t){var e,r,o,n,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],m=[null,null,null],g=this.mesh.vHead;e=g.next;for(var x=0;x<3;++x)n=e.coords[x],c[x]=n,m[x]=e,l[x]=n,d[x]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)n=e.coords[y],n<c[y]&&(c[y]=n,m[y]=e),n>l[y]&&(l[y]=n,d[y]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=m[v],o=d[v],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)},i.prototype.checkOrientation_=function(){for(var t=this.mesh.fHead,e,r=this.mesh.vHead,o,n=0,s=t.next;s!==t;s=s.next)if(o=s.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(n<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]}},i.prototype.projectPolygon_=function(){var t=this.mesh.vHead,e=[0,0,0],r,o,n=!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),n=!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);n&&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))},i.prototype.addWinding_=function(t,e){t.winding+=e.winding,t.Sym.winding+=e.Sym.winding},i.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 n=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);)n=t.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==r&&(ae.edgeGoesRight(r.Lprev)||ae.edgeSign(r.Dst,r.Org,r.Lprev.Org)>=0);)n=t.connect(r,r.Lprev),r=n.Sym;r=r.Lnext}if(o.Lnext===r)throw"Mono region invalid";for(;o.Lnext.Lnext!==r;)n=t.connect(o.Lnext,o),o=n.Sym;return!0},i.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},i.prototype.discardExterior_=function(t){for(var e,r=t.fHead.next;r!==t.fHead;r=e)e=r.next,r.inside||t.zapFace(r)},i.prototype.setWindingNumber_=function(t,e,r){for(var o,n=t.eHead.next;n!==t.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:r?t.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(t){return!t.Rface||!t.Rface.inside?-1:t.Rface.n},i.prototype.outputPolymesh_=function(t,e,r,o){var n,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){n=h.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=a,a++),l++,n=n.Lnext}while(n!==h.anEdge);if(l>r)throw"Face vertex greater that support polygon";h.n=s,++s}this.elementCount=s,e===Ze.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){n=h.anEdge,l=0;do{var c=n.Org;this.elements[u++]=c.n,l++,n=n.Lnext}while(n!==h.anEdge);for(var d=l;d<r;++d)this.elements[u++]=-1;if(e===Ze.CONNECTED_POLYGONS){n=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==h.anEdge);for(var m=l;m<r;++m)this.elements[u++]=-1}}},i.prototype.outputContours_=function(t,e){var r,o,n=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;n=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++]=n,this.elements[h++]=s,n+=s}},i.prototype.addContour=function(t,e){this.mesh===null&&(this.mesh=new Iu),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},i.prototype.tesselate=function(t,e,r,o,n,s){if(t===void 0&&(t=Ge.ODD),e===void 0&&(e=Ze.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=t,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),Uv.computeInterior(this,s);var a=this.mesh;return e===Ze.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ze.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function mo(i){var t=i.windingRule,e=t===void 0?Ge.ODD:t,r=i.elementType,o=r===void 0?Ze.POLYGONS:r,n=i.polySize,s=n===void 0?3:n,a=i.vertexSize,l=a===void 0?2:a,c=i.normal,h=c===void 0?[0,0,1]:c,p=i.contours,u=p===void 0?[]:p,d=i.strict,m=d===void 0?!0:d,g=i.debug,x=g===void 0?!1:g;if(!u&&m)throw new Error("Contours can't be empty");if(!!u){var y=new jv;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<u.length;v++)y.addContour(l||2,u[v]);return y.tesselate(e,o,s,l,h,m),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:x?y.mesh:void 0}}}var dA=Ge.ODD,mA=Ge.NONZERO,fA=Ge.POSITIVE,gA=Ge.NEGATIVE,yA=Ge.ABS_GEQ_TWO,xA=Ze.POLYGONS,vA=Ze.CONNECTED_POLYGONS,bA=Ze.BOUNDARY_CONTOURS;var rn=class extends fo.BufferGeometry{constructor(e,r=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ge.ODD;this.elementType=Ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:Ge.ODD,elementType:Ze.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(m=>m.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let m=0,g=n.length/2;m<g;m++){let x=m*2,y=n[x+0],v=n[x+1];if(h!==void 0&&y!==h&&(l=!1),p!==void 0&&v!==p&&(c=!1),h=y,p=v,!l&&!c)break}!l&&!c&&(a=mo({contours:[n,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let u=a?.vertexCount??1,d=a?.elementCount??1;if(this._positionAttribute=new fo.BufferAttribute(new Float32Array(u*3),3),this._normalAttribute=new fo.BufferAttribute(new Float32Array(u*3),3),this._uvAttribute=new fo.BufferAttribute(new Float32Array(u*2),2),this._indexAttribute=new fo.BufferAttribute(new Uint32Array(d*3),1),a){let m=1/0,g=-1/0,x=1/0,y=-1/0;for(let S=0,b=u;S<b;S++){let B=S*2,w=a.vertices[B+0],f=a.vertices[B+1];w<m&&(m=w),w>g&&(g=w),f<x&&(x=f),f>y&&(y=f)}let v=g-m,P=y-x;for(let S=0,b=u;S<b;S++){let B=S*2,w=a.vertices[B+0],f=a.vertices[B+1],D=(w-m)/v,C=(f-x)/P;this._positionAttribute.setXYZ(S,w,f,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,D,C)}for(let S=0,b=d;S<b;S++){let B=S*3,w=a.elements[B+0],f=a.elements[B+1],D=a.elements[B+2];this._indexAttribute.setX(B+0,w),this._indexAttribute.setX(B+1,f),this._indexAttribute.setX(B+2,D)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new rn(this._shape,this._curveSegments);return e.userData=Fn(this.userData),e}};var go=require("three");var Hs=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*Hs.eSize;this.buffer=new ArrayBuffer(r);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.normals=new Float32Array(this.buffer,n*o,3*t),n+=3*t,this.uvs=new Float32Array(this.buffer,n*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*Hs.eSize,o=new ArrayBuffer(r),n=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*n,3*t);s+=3*t;let l=new Float32Array(o,s*n,3*t);s+=3*t;let c=new Float32Array(o,s*n,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)}},ti=Hs;ti.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Nl=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),on=class extends go.BufferGeometry{constructor(e,r,o=0,n=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=r,this._bevel=o,this._curveSegments=n,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([],n),l=this._shape.shapeHoles.map(w=>{let f=w.extractShapePointsToFlatArray([],n),D=[];for(let C=f.length-1;C>=1;C-=2){let I=f[C-1],L=f[C-0];D.push(I,L)}return D}),c=mo({windingRule:Ge.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=mo({windingRule:Ge.ODD,elementType:Ze.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 w=0;w<h.elements.length;w++){let f=h.elements[w],D=w%2===0?c.vertexCount:0;c.elements.push(f+D)}for(let w=0;w<h.vertexIndices.length;w++){let f=h.vertexIndices[w],D=c.vertexCount;c.vertexIndices.push(f+D)}for(let w=0;w<h.vertices.length;w++){let f=h.vertices[w];c.vertices.push(f)}}let u=1/0,d=-1/0,m=1/0,g=-1/0;for(let w=0,f=c.vertexCount;w<f;w++){let D=w*2,C=c.vertices[D+0],I=c.vertices[D+1];C<u&&(u=C),C>d&&(d=C),I<m&&(m=I),I>g&&(g=I)}this._minX=u,this._minY=m,this._width=d-u,this._height=g-m;let x=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new ti(x);let y=[],v=[];for(let w=c.elementCount-1;w>=0;w--){let f=w>=p,D=w*2,C=c.elements[D+0],I=c.elements[D+1],L=C+I,M={start:C,count:I,normals:[],continuous:[],concave:[]},k=C,W=L-1,ne=C+1,pe=this._shape.roundedCurves.length;do{let z=k-C,E=c.vertices[W*2+0],_=c.vertices[W*2+1],A=c.vertices[k*2+0],G=c.vertices[k*2+1],J=c.vertices[ne*2+0],j=c.vertices[ne*2+1],V=A-E,F=G-_,O=Math.sqrt(V*V+F*F);V/=O,F/=O;let q=A-J,Z=G-j,ee=Math.sqrt(q*q+Z*Z);q/=ee,Z/=ee,M.normals[z*2+0]=-Z,M.normals[z*2+1]=q,M.concave[z]=V*Z-F*q>0;let H=c.vertexIndices[k];if(Array.isArray(H))M.continuous[z]=!1;else{let[Q,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)M.continuous[z]=!0;else{let re=$===1?Q+1:Q-1;re=(re+pe)%pe;let ce=$===1?0:1,ie=this._shape.roundedCurves[Q].getTangent($),fe=this._shape.roundedCurves[re].getTangent(ce);M.continuous[z]=ie.dot(fe)>.95}}f&&(M.normals[z*2+0]*=-1,M.normals[z*2+1]*=-1),[W,k,ne]=[k,ne,ne+1],ne>=L&&(ne-=I)}while(ne!==C+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(C*2,L*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((z,E)=>[E,E]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(C*2,L*2)});for(let z=1;z<=this._bevelSegments;z++){let E=z/this._bevelSegments*Math.PI/2,_=(1-Math.cos(E))*this._bevelSize,A=[],G=[],J=[],j=[],V=0;for(let O=0;O<I;O++){let q=O*2,Z=(O-1+I)%I*2,ee=c.vertices[M.start*2+q+0],H=c.vertices[M.start*2+q+1],Q=-M.normals[Z+0]*_,$=-M.normals[Z+1]*_,re=-M.normals[q+0]*_,ce=-M.normals[q+1]*_;if(M.concave[O]||!M.concave[O]&&f){let ie=Math.atan2($,Q),fe=Math.atan2(ce,re);fe>ie&&(fe-=Math.PI*2);let Ue=fe-ie;if(M.continuous[O]||f){let xe=ie+Ue/2,Ke=Math.cos(xe)*_,Le=Math.sin(xe)*_;A[2*V+0]=ee+Ke*(f?-1:1),A[2*V+1]=H+Le*(f?-1:1),j[V]=O,V++}else{let xe=Math.max(1,Math.floor(n/4*Math.abs(Ue)/Math.PI));for(let Ke=0;Ke<=xe;Ke++){let Le=ie+Ue*(Ke/xe),Nt=Math.cos(Le)*_,Ut=Math.sin(Le)*_;A[2*V+0]=ee+Nt,A[2*V+1]=H+Ut,j[V]=O,V++}}}else A[2*V+0]=ee+Q,A[2*V+1]=H+$,j[V]=O,G[O]=V,V++,A[2*V+0]=ee,A[2*V+1]=H,j[V]=O,V++,A[2*V+0]=ee+re,A[2*V+1]=H+ce,j[V]=O,J[O]=V,V++}let F=mo({windingRule:Ge.POSITIVE,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[A],edgeCreateCallback:O=>{let Z=O.Org.idx,ee=j[Z],H=j[(Z+1)%j.length];O.idx=[ee,H],O.Sym.idx=[H,ee]},vertexIdCallback:O=>{let q=O.Lprev.idx;return[q?q[1]:0,O.idx[0]]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${z}'th loop`);if(!F.vertexCount)break;for(let O=0;O<F.vertexIndices.length;O++){let[q,Z]=F.vertexIndices[O];if(q===Z)continue;let ee=Z;Z<q&&(ee+=I);for(let H=q;H<ee;H++){let Q=H%I,$=(H+1)%I;if(!M.continuous[Q]||!M.continuous[$]){F.vertexIndices[O]=[q,Q],F.vertexIndices.splice(O+1,0,[$,Z]),F.vertices.splice((O+1)*2,0,F.vertices[O*2],F.vertices[O*2+1]);break}}}se.push({bevelI:z,angle:E,size:_,boundary:F,reverseMap:j,insetPoints:A})}let Y=(z,E,_)=>{let A=0,G=z.boundary.vertexIndices.length;for(;A<G&&_(z.boundary.vertexIndices[E]);)E=(E+1)%G,A++;return A},U=y.length;for(let z=1;z<se.length;z++){let E=se[z-1],_=se[z],A=E.boundary.vertexIndices.length,G=_.boundary.vertexIndices.length;if(!A||!G)break;let J=M.concave.length,j=0,V=Nl(j,I);for(;!E.boundary.vertexIndices.filter(V).length||!_.boundary.vertexIndices.filter(V).length;)j++,V=Nl(j,I);let F=E.boundary.vertexIndices.findIndex(V),O=_.boundary.vertexIndices.findIndex(V);do F=(F+1)%A;while(V(E.boundary.vertexIndices[F]));do O=(O+1)%G;while(V(_.boundary.vertexIndices[O]));j=(j+1)%I;let q=j,Z=this.buildBevelVert(M,E,(F-1+A)%A),ee=this.buildBevelVert(M,_,(O-1+G)%G),H=Z,Q=ee,$,re,ce=!1;do{V=Nl(j,I);let ie=Y(E,F,V),fe=Y(_,O,V),Ue=ce;if(ce=!1,ie&&!fe){for(let xe=0;xe<ie;xe++)$=this.buildBevelVert(M,E,(F+xe)%A,xe/(ie-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$;ce=!0}else if(!ie&&fe)for(let xe=0;xe<fe;xe++)re=this.buildBevelVert(M,_,(O+xe)%G,xe/(fe-1)),y.push(Q.topN,H.topP,re.topP),y.push(H.bottomP,Q.bottomN,re.bottomP),Q=re;else if(ie&&fe)if($=this.buildBevelVert(M,E,F,0),re=this.buildBevelVert(M,_,O,0),Ue?(y.push(H.topN,re.topP,Q.topN),y.push(H.topN,$.topP,re.topP),y.push(re.bottomP,H.bottomN,Q.bottomN),y.push(re.bottomP,$.bottomP,H.bottomN)):(y.push(Q.topN,H.topN,$.topP),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,Q.bottomN),y.push($.bottomP,Q.bottomN,re.bottomP)),H=$,Q=re,ie===fe)for(let xe=1;xe<ie;xe++)$=this.buildBevelVert(M,E,(F+xe)%A,xe/(ie-1)),re=this.buildBevelVert(M,_,(O+xe)%G,xe/(fe-1)),y.push(H.topN,$.topP,Q.topN),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,Q.bottomN),y.push($.bottomP,Q.bottomN,re.bottomP),H=$,Q=re;else if(ie>fe){let xe=ie/fe,Ke=0;for(let Le=1;Le<ie;Le++)$=this.buildBevelVert(M,E,(F+Le)%A,Le/(ie-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$,Le>(Ke+1)*xe&&(Ke++,re=this.buildBevelVert(M,_,(O+Ke)%G,Ke/(fe-1)),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,Q.bottomN,re.bottomP),Q=re)}else{let xe=fe/ie,Ke=0;for(let Le=1;Le<fe;Le++)re=this.buildBevelVert(M,_,(O+Le)%G,Le/(fe-1)),y.push(Q.topN,$.topP,re.topP),y.push($.bottomP,Q.bottomN,re.bottomP),Q=re,Le>(Ke+1)*xe&&(Ke++,$=this.buildBevelVert(M,E,(F+Ke)%A,Ke/(ie-1)),y.push(H.topN,$.topP,Q.topN),y.push($.bottomP,H.bottomN,Q.bottomN),H=$)}F=(F+ie)%A,O=(O+fe)%G,j=(j+1)%J}while(j!==q)}{let z=se[0];for(let E=0,_=z.boundary.vertexCount;E<_;E++){let A=this.buildBevelVert(M,z,E),G=this.buildBevelVert(M,z,(E+1)%_);y.push(G.topP,A.topN,A.bottomN),y.push(G.topP,A.bottomN,G.bottomP)}}if(f){let z=[];for(let E=y.length-1;E>=U+2;E-=3){let _=y[E-2],A=y[E-1],G=y[E-0];z.push(G,A,_)}y.splice(U,y.length-U,...z)}if(f){let z=[];for(let E=se[se.length-1].boundary.vertices.length-1;E>=1;E-=2){let _=se[se.length-1].boundary.vertices[E-1],A=se[se.length-1].boundary.vertices[E-0];z.push(_,A)}v.push(z)}if(!f){let z=se[se.length-1],E=mo({windingRule:se.length>1?Ge.POSITIVE:Ge.ODD,elementType:Ze.POLYGONS,vertexSize:2,strict:!0,contours:[z.insetPoints,...v]});if(!E)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let _=0;_<E.elementCount*3;_+=3){let A=this.buildSurfaceVert(E,E.elements[_+0]),G=this.buildSurfaceVert(E,E.elements[_+1]),J=this.buildSurfaceVert(E,E.elements[_+2]);y.push(A.top,G.top,J.top),y.push(J.bottom,G.bottom,A.bottom)}}this.vertexCache={}}this._buffer.shrink();let P=new go.BufferAttribute(Uint32Array.from(y),1),S=new go.BufferAttribute(this._buffer.positions,3),b=new go.BufferAttribute(this._buffer.normals,3),B=new go.BufferAttribute(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,B.needsUpdate=!0,P.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",B),this.setIndex(P)}buildSurfaceVert(e,r){let o=r.toString();if(o in this.vertexCache)return this.vertexCache[o];let n=e.vertices[r*2+0],s=e.vertices[r*2+1],a=(n-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]=n,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]=n,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,n=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),m=Math.sin(r.angle),g=o*2,x=c*2,y=h*2,v=r.boundary.vertices[g+0],P=r.boundary.vertices[g+1],S=(1-m)*this._bevelSize,b=(v-this._minX)/this._width,B=(P-this._minY)/this._height,w=e.normals[x+0],f=e.normals[x+1],D=e.normals[y+0],C=e.normals[y+1];if(u){let W=D-w,ne=C-f;w=w+W*(1-n),f=f+ne*(1-n);let pe=Math.sqrt(w*w+f*f);w/=pe,f/=pe}let I=this._buffer.get(p?2:4),L=I*3,M=I*2,k={i:o,fi:c,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=w*d,this._buffer.normals[L+1]=f*d,this._buffer.normals[L+2]=m,this._buffer.uvs[M+0]=b,this._buffer.uvs[M+1]=B,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=w*d,this._buffer.normals[L+4]=f*d,this._buffer.normals[L+5]=-m,this._buffer.uvs[M+2]=B,this._buffer.uvs[M+3]=b,p||(I+=2,L+=6,M+=4,k.topP=I+0,k.bottomP=I+1,this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=D*d,this._buffer.normals[L+1]=C*d,this._buffer.normals[L+2]=m,this._buffer.uvs[M+0]=b,this._buffer.uvs[M+1]=B,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=D*d,this._buffer.normals[L+4]=C*d,this._buffer.normals[L+5]=-m,this._buffer.uvs[M+2]=B,this._buffer.uvs[M+3]=b),this.vertexCache[s]=k,k}clone(){let e=new on(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Fn(this.userData),e}};var at=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),s=i.shape??t?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Ce?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Ce(r,o).fromJSON(s),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&s.update(!1));let l=s??new Ce(r,o);return{parameters:Object.assign(e,{width:r,height:o,depth:n,roundness:a}),shape:l}}static build(i){let{depth:t,extrudeBevelSize:e,extrudeBevelSegments:r,subdivisions:o,roundness:n}=i.parameters;i.shape.roundness=n;let s;return t<=0?s=new rn(i.shape,o):s=new on(i.shape,t,e,o,r),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};var sn=require("three"),Du=Math.PI*2,_u=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,angle:o,innerRadius:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c=i.shape,h=t*.5,p=e*.5,u=kv(c,h,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let d=at.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...i,type:"EllipseGeometry"}})}};function kv(i,t,e,r,o,n){if(r>=Du)return o>30||o%4===0?(Wv(i,t,e,n),Math.round(o/4)):Ou(i,r,o,t,e,n);let s={x:0,y:e},a=r+Math.PI*.5,l={x:Math.cos(a)*t,y:Math.sin(a)*e},c=Lu({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?Hv(i,s.x,s.y,c,o,t,e,n):Ou(i,r,o,t,e,n)}function Hv(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(nn(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=i.points[c],d=nn(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),d.controls[0].position.set(p.x2,p.y2),i.addPoint(d)}return a>0?Bu(i,n,s,a):i.addPoint(nn(0,0)),l}function Ou(i,t,e,r,o,n){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;i.addPoint(nn(c,h))}return t<Du?n>0?Bu(i,r,o,n):i.addPoint(nn(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Eu(i,r,o,n)),1}function Wv(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Ws(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Ws(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Ws(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Ws(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Eu(i,t,e,r)}function nn(i,t){return new Qt(sn.MathUtils.generateUUID(),new sn.Vector2(i,t))}function Ws(i,t,e,r,o,n){let s=nn(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function Bu(i,t,e,r){Gu(i,t,e,r).forEach(n=>i.addPoint(n))}function Eu(i,t,e,r){let o=Gu(i,t,e,r),n=new Ce;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Gu(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new sn.Vector2(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=sn.MathUtils.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}var Dr=require("three"),Ru=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??r),n=Math.abs(e.depth??r),s=Math.abs(Math.min(r,n))/2;return{parameters:Object.assign(e,{width:r,height:o,depth:n,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:t,height:e,depth:r,radius:o,revolutions:n,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:h,cornerSegments:p}=i.parameters,u=new ri(!1,t,e,r,o,n,s,a,l,c,h,p);return Object.assign(u,{userData:{...i,type:"HelixGeometry"}})}},ri=class extends Dr.BufferGeometry{constructor(t=!0,e=1,r=1,o=1,n=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 m=()=>new Dr.Vector3,g=new Dr.Vector3,x=m(),y=m(),v=m(),P,S,b,B,w,f,D,C,I=m(),L=m(),M=m(),k=m(),W=m(),ne=m(),pe=m(),se=m(),Y=r-2*l+.001,U=Y/s,z=Math.ceil(a*s),E=z+1,_=Y/z,A=-Y/2,G=h+1,J=2*Math.PI/h,j=Math.PI/2/u,V=.01,F=Math.min((1-p/100)*l,l-V),O=l-F,q=0,Z=2,ee=u*Z+Z,H=G*ee/Z,Q=H+G*E,$=G*(E+ee),[re,ce,ie]=[3,3,2].map(We=>Array($*We).fill(0)),fe=[],Ue=n-l;function xe(We,Dt){let sr=Math.PI/2;f=Dt*_,C=2*Math.PI*(f%U)/U+sr,f+=A,D=Math.sin(C)*Ue,w=Math.cos(C)*Ue,t?We.set(w,D,f):We.set(w,f,D)}xe(g,-1e-10),xe(x,0),I.copy(g),xe(g,1);let Ke=g.distanceTo(x),Le=O+F,Nt=Ke*z+2*Le,Ut=F,No=Nt-Le;for(let We=0;We<=z;We++){xe(y,We),se.subVectors(y,I).normalize(),I.copy(y),ne.copy(y).setComponent(+t+1,0).normalize(),pe.crossVectors(se,ne).normalize();let Dt=We===0,sr=We===z,Sm=Dt?3*Math.PI/2:j,wm=Dt?Ut:No,Nm=Dt?G:Q,Cm=Dt?0:$-G,Tm=se.clone().multiplyScalar(Dt?-O:O).add(y),Lm=se.clone().multiplyScalar(Dt?-1:1).normalize();for(let Lr=0;Lr<G;Lr++){let dc=Lr*J;if(L.addVectors(g.copy(ne).multiplyScalar(l*Math.cos(dc)),x.copy(pe).multiplyScalar(l*Math.sin(dc))),M.copy(L).normalize(),Dt||sr){d||(q=Cm+Lr,[0,1,2].forEach(Ct=>{re[q*3+Ct]=Tm.getComponent(Ct),ce[q*3+Ct]=Lm.getComponent(Ct)}),ie[q*2]=+sr,ie[q*2+1]=Lr/h),x.copy(M).multiplyScalar(F),v.addVectors(y,x);for(let Ct=0;Ct<u;Ct++){let Ra=Ct*j+Sm;k.addVectors(g.copy(se).multiplyScalar(O*Math.sin(Ra)),x.copy(M).multiplyScalar(O*Math.cos(Ra))),W.copy(k).normalize(),x.addVectors(v,k),k.normalize(),q=Nm+Ct*G+Lr,[0,1,2].forEach(zi=>{re[q*3+zi]=x.getComponent(zi),ce[q*3+zi]=W.getComponent(zi)});let Im=+Dt+Math.sin(Ra);ie[q*2]=(wm+O*Im)/Nt,ie[q*2+1]=Lr/h}}x.addVectors(y,L),q=H+We*G+Lr,[0,1,2].forEach(Ct=>{re[q*3+Ct]=x.getComponent(Ct),ce[q*3+Ct]=M.getComponent(Ct)}),ie[q*2]=(Le+We*Ke)/Nt,ie[q*2+1]=Lr/h}}let Ot=E+2*u+Z,Co=1,[Gi,Ri]=d?[Co,Co+E-1]:[0,Ot-1];for(let We=Gi;We<=Ri-1;We++){let Dt=d&&We===Ri-1;for(let sr=0;sr<G-1;sr++)P=We*G+sr,S=P+1,b=(Dt?sr:P)+G,B=(Dt?sr+1:S)+G,We===0?fe.push(S,B,b):We===Ot-2?fe.push(P,S,b):fe.push(P,S,b,S,B,b)}this.setIndex(fe),this.setAttribute("position",new Dr.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Dr.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Dr.Float32BufferAttribute(ie,2))}};var zu=require("three");var Vu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new oi(t*.5,n,s):new zu.IcosahedronBufferGeometry(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:{...i,type:"IcosahedronGeometry"}})}},oi=class extends Xr{constructor(t=1,e=.2,r=4){let o=(1+Math.sqrt(5))/2,n=[-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(n,s,a,t,e,r),this.type=a}static fromJSON(t){return new oi(t.radius,t.corner,t.cornerSides)}};var qs=require("three"),Fu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){(i.parameters?.points??[]).forEach(r=>{Array.isArray(r)&&(r.x=r[0],r.y=r[1])});let e=Object.assign({},t?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new qs.Shape;o.moveTo(t[0].x,t[0].y),o.bezierCurveTo(t[1].x,t[1].y,t[2].x,t[2].y,t[3].x,t[3].y);let n=new qs.LatheBufferGeometry(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};var mr=require("three");var _r=require("three");var oe=require("three"),dr=new oe.Matrix4,Cl=new oe.Object3D,$s=new oe.Vector3,Yr=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(t){let e=new oe.Matrix3().getNormalMatrix(t);for(let r=0,o=this.vertices.length;r<o;r++)this.vertices[r].applyMatrix4(t);for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];n.normal.applyMatrix3(e).normalize();for(let s=0,a=n.vertexNormals.length;s<a;s++)n.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(t){return dr.makeRotationX(t),this.applyMatrix4(dr),this}rotateY(t){return dr.makeRotationY(t),this.applyMatrix4(dr),this}rotateZ(t){return dr.makeRotationZ(t),this.applyMatrix4(dr),this}translate(t,e,r){return dr.makeTranslation(t,e,r),this.applyMatrix4(dr),this}scale(t,e,r){return dr.makeScale(t,e,r),this.applyMatrix4(dr),this}lookAt(t){return Cl.lookAt(t),Cl.updateMatrix(),this.applyMatrix4(Cl.matrix),this}fromBufferGeometry(t){let e=this,r=t.index!==null?t.index:void 0,o=t.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,s=o.normal,a=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let u=0;u<n.count;u++)e.vertices.push(new oe.Vector3().fromBufferAttribute(n,u)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,u));function h(u,d,m,g){let x=a===void 0?[]:[e.colors[u].clone(),e.colors[d].clone(),e.colors[m].clone()],y=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,u),new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,m)],v=new an(u,d,m,y,x,g);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(l,u),new oe.Vector2().fromBufferAttribute(l,d),new oe.Vector2().fromBufferAttribute(l,m)]),c!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(c,u),new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,m)])}let p=t.groups;if(p.length>0)for(let u=0;u<p.length;u++){let d=p[u],m=d.start,g=d.count;for(let x=m,y=m+g;x<y;x+=3)r!==void 0?h(r.getX(x),r.getX(x+1),r.getX(x+2),d.materialIndex):h(x,x+1,x+2,d.materialIndex)}else if(r!==void 0)for(let u=0;u<r.count;u+=3)h(r.getX(u),r.getX(u+1),r.getX(u+2));else for(let u=0;u<n.count;u+=3)h(u,u+1,u+2);return this.computeFaceNormals(),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter($s).negate(),this.translate($s.x,$s.y,$s.z),this}normalize(){this.computeBoundingSphere();let t=this.boundingSphere.center,e=this.boundingSphere.radius,r=e===0?1:1/e,o=new oe.Matrix4;return o.set(r,0,0,-r*t.x,0,r,0,-r*t.y,0,0,r,-r*t.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let t=new oe.Vector3,e=new oe.Vector3;for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=this.vertices[n.a],a=this.vertices[n.b],l=this.vertices[n.c];t.subVectors(l,a),e.subVectors(s,a),t.cross(e),t.normalize(),n.normal.copy(t)}}computeVertexNormals(t=!0){let e=new Array(this.vertices.length);for(let r=0,o=this.vertices.length;r<o;r++)e[r]=new oe.Vector3;if(t){let r=new oe.Vector3,o=new oe.Vector3;for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=this.vertices[a.a],c=this.vertices[a.b],h=this.vertices[a.c];r.subVectors(h,c),o.subVectors(l,c),r.cross(o),e[a.a].add(r),e[a.b].add(r),e[a.c].add(r)}}else{this.computeFaceNormals();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let r=0,o=this.vertices.length;r<o;r++)e[r].normalize();for(let r=0,o=this.faces.length;r<o;r++){let n=this.faces[r],s=n.vertexNormals;s.length===3?(s[0].copy(e[n.a]),s[1].copy(e[n.b]),s[2].copy(e[n.c])):(s[0]=e[n.a].clone(),s[1]=e[n.b].clone(),s[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let t=0,e=this.faces.length;t<e;t++){let r=this.faces[t],o=r.vertexNormals;o.length===3?(o[0].copy(r.normal),o[1].copy(r.normal),o[2].copy(r.normal)):(o[0]=r.normal.clone(),o[1]=r.normal.clone(),o[2]=r.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,s=o.vertexNormals.length;n<s;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let t=new Yr;t.faces=this.faces;for(let e=0,r=this.morphTargets.length;e<r;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new oe.Vector3,h={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};n.push(c),s.push(h)}}let o=this.morphNormals[e];t.vertices=this.morphTargets[e].vertices,t.computeFaceNormals(),t.computeVertexNormals();for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let e=0,r=this.faces.length;e<r;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(t,e,r=0){if(!(t&&t.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",t);return}let o,n=this.vertices.length,s=this.vertices,a=t.vertices,l=this.faces,c=t.faces,h=this.colors,p=t.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let u=0,d=a.length;u<d;u++){let g=a[u].clone();e!==void 0&&g.applyMatrix4(e),s.push(g)}for(let u=0,d=p.length;u<d;u++)h.push(p[u].clone());for(let u=0,d=c.length;u<d;u++){let m=c[u],g,x,y=m.vertexNormals,v=m.vertexColors,P=new an(m.a+n,m.b+n,m.c+n);P.normal.copy(m.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let S=0,b=y.length;S<b;S++)g=y[S].clone(),o!==void 0&&g.applyMatrix3(o).normalize(),P.vertexNormals.push(g);P.color.copy(m.color);for(let S=0,b=v.length;S<b;S++)x=v[S],P.vertexColors.push(x.clone());P.materialIndex=m.materialIndex+r,l.push(P)}for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],v=[];for(let P=0,S=y.length;P<S;P++)v.push(y[P].clone());this.faceVertexUvs[u].push(v)}}}mergeMesh(t){if(!(t&&t.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",t);return}t.matrixAutoUpdate&&t.updateMatrix(),this.merge(t.geometry,t.matrix)}mergeVertices(t=4){let e={},r=[],o=[],n=Math.pow(10,t);for(let l=0,c=this.vertices.length;l<c;l++){let h=this.vertices[l],p=Math.round(h.x*n)+"_"+Math.round(h.y*n)+"_"+Math.round(h.z*n);e[p]===void 0?(e[p]=l,r.push(this.vertices[l]),o[l]=r.length-1):o[l]=o[e[p]]}let s=[];for(let l=0,c=this.faces.length;l<c;l++){let h=this.faces[l];h.a=o[h.a],h.b=o[h.b],h.c=o[h.c];let p=[h.a,h.b,h.c];for(let u=0;u<3;u++)if(p[u]===p[(u+1)%3]){s.push(l);break}}for(let l=s.length-1;l>=0;l--){let c=s[l];this.faces.splice(c,1);for(let h=0,p=this.faceVertexUvs.length;h<p;h++)this.faceVertexUvs[h].splice(c,1)}let a=this.vertices.length-r.length;return this.vertices=r,a}setFromPoints(t){this.vertices=[];for(let e=0,r=t.length;e<r;e++){let o=t[e];this.vertices.push(new oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let t=this.faces,e=t.length;for(let l=0;l<e;l++)t[l]._id=l;function r(l,c){return l.materialIndex-c.materialIndex}t.sort(r);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),n&&n.length===e&&(a=[]);for(let l=0;l<e;l++){let c=t[l]._id;s&&s.push(o[c]),a&&a.push(n[c])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let t={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.parameters!==void 0){let m=this.parameters;for(let g in m)m[g]!==void 0&&(t[g]=m[g]);return t}let e=[];for(let m=0;m<this.vertices.length;m++){let g=this.vertices[m];e.push(g.x,g.y,g.z)}let r=[],o=[],n={},s=[],a={},l=[],c={};for(let m=0;m<this.faces.length;m++){let g=this.faces[m],x=!0,y=!1,v=this.faceVertexUvs[0][m]!==void 0,P=g.normal.length()>0,S=g.vertexNormals.length>0,b=g.color.r!==1||g.color.g!==1||g.color.b!==1,B=g.vertexColors.length>0,w=0;if(w=h(w,0,0),w=h(w,1,x),w=h(w,2,y),w=h(w,3,v),w=h(w,4,P),w=h(w,5,S),w=h(w,6,b),w=h(w,7,B),r.push(w),r.push(g.a,g.b,g.c),r.push(g.materialIndex),v){let f=this.faceVertexUvs[0][m];r.push(d(f[0]),d(f[1]),d(f[2]))}if(P&&r.push(p(g.normal)),S){let f=g.vertexNormals;r.push(p(f[0]),p(f[1]),p(f[2]))}if(b&&r.push(u(g.color)),B){let f=g.vertexColors;r.push(u(f[0]),u(f[1]),u(f[2]))}}function h(m,g,x){return x?m|1<<g:m&~(1<<g)}function p(m){let g=m.x.toString()+m.y.toString()+m.z.toString();return n[g]!==void 0||(n[g]=o.length/3,o.push(m.x,m.y,m.z)),n[g]}function u(m){let g=m.r.toString()+m.g.toString()+m.b.toString();return a[g]!==void 0||(a[g]=s.length,s.push(m.getHex())),a[g]}function d(m){let g=m.x.toString()+m.y.toString();return c[g]!==void 0||(c[g]=l.length/2,l.push(m.x,m.y)),c[g]}return t.data={},t.data.vertices=e,t.data.normals=o,s.length>0&&(t.data.colors=s),l.length>0&&(t.data.uvs=[l]),t.data.faces=r,t}clone(){return new Yr().copy(this)}copy(t){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;let e=t.vertices;for(let u=0,d=e.length;u<d;u++)this.vertices.push(e[u].clone());let r=t.colors;for(let u=0,d=r.length;u<d;u++)this.colors.push(r[u].clone());let o=t.faces;for(let u=0,d=o.length;u<d;u++)this.faces.push(o[u].clone());for(let u=0,d=t.faceVertexUvs.length;u<d;u++){let m=t.faceVertexUvs[u];this.faceVertexUvs[u]===void 0&&(this.faceVertexUvs[u]=[]);for(let g=0,x=m.length;g<x;g++){let y=m[g],v=[];for(let P=0,S=y.length;P<S;P++){let b=y[P];v.push(b.clone())}this.faceVertexUvs[u].push(v)}}let n=t.morphTargets;for(let u=0,d=n.length;u<d;u++){let m={};if(m.name=n[u].name,n[u].vertices!==void 0){m.vertices=[];for(let g=0,x=n[u].vertices.length;g<x;g++)m.vertices.push(n[u].vertices[g].clone())}if(n[u].normals!==void 0){m.normals=[];for(let g=0,x=n[u].normals.length;g<x;g++)m.normals.push(n[u].normals[g].clone())}this.morphTargets.push(m)}let s=t.morphNormals;for(let u=0,d=s.length;u<d;u++){let m={};if(s[u].vertexNormals!==void 0){m.vertexNormals=[];for(let g=0,x=s[u].vertexNormals.length;g<x;g++){let y=s[u].vertexNormals[g],v={};v.a=y.a.clone(),v.b=y.b.clone(),v.c=y.c.clone(),m.vertexNormals.push(v)}}if(s[u].faceNormals!==void 0){m.faceNormals=[];for(let g=0,x=s[u].faceNormals.length;g<x;g++)m.faceNormals.push(s[u].faceNormals[g].clone())}this.morphNormals.push(m)}let a=t.skinWeights;for(let u=0,d=a.length;u<d;u++)this.skinWeights.push(a[u].clone());let l=t.skinIndices;for(let u=0,d=l.length;u<d;u++)this.skinIndices.push(l[u].clone());let c=t.lineDistances;for(let u=0,d=c.length;u<d;u++)this.lineDistances.push(c[u]);let h=t.boundingBox;h!==null&&(this.boundingBox=h.clone());let p=t.boundingSphere;return p!==null&&(this.boundingSphere=p.clone()),this.elementsNeedUpdate=t.elementsNeedUpdate,this.verticesNeedUpdate=t.verticesNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.lineDistancesNeedUpdate=t.lineDistancesNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,this}toBufferGeometry(){let t=new Tl().fromGeometry(this),e=new oe.BufferGeometry,r=new Float32Array(t.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(r,3).copyVector3sArray(t.vertices)),t.normals.length>0){let o=new Float32Array(t.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(t.normals))}if(t.colors.length>0){let o=new Float32Array(t.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(t.colors))}if(t.uvs.length>0){let o=new Float32Array(t.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){let o=new Float32Array(t.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(o,2).copyVector2sArray(t.uvs2))}e.groups=t.groups;for(let o in t.morphTargets){let n=[],s=t.morphTargets[o];for(let a=0,l=s.length;a<l;a++){let c=s[a],h=new oe.Float32BufferAttribute(c.data.length*3,3);h.name=c.name,n.push(h.copyVector3sArray(c.data))}e.morphAttributes[o]=n}if(t.skinIndices.length>0){let o=new oe.Float32BufferAttribute(t.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){let o=new oe.Float32BufferAttribute(t.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(t.skinWeights))}return t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(t){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(t)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(t){let e=new oe.BufferGeometry,r=t.geometry;if(t.isPoints||t.isLine){let o=new oe.Float32BufferAttribute(r.vertices.length*3,3),n=new oe.Float32BufferAttribute(r.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(r.vertices)),e.setAttribute("color",n.copyColorsArray(r.colors)),r.lineDistances&&r.lineDistances.length===r.vertices.length){let s=new oe.Float32BufferAttribute(r.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(r.lineDistances))}r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone())}else t.isMesh&&(e=r.toBufferGeometry());return e}};Yr.prototype.isGeometry=!0;var Tl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(t){let e=[],r,o,n,s=t.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==n&&(n=a.materialIndex,r!==void 0&&(r.count=o*3-r.start,e.push(r)),r={start:o*3,materialIndex:n})}r!==void 0&&(r.count=o*3-r.start,e.push(r)),this.groups=e}fromGeometry(t){let e=t.faces,r=t.vertices,o=t.faceVertexUvs,n=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=t.morphTargets,l=a.length,c;if(l>0){c=[];for(let y=0;y<l;y++)c[y]={name:a[y].name,data:[]};this.morphTargets.position=c}let h=t.morphNormals,p=h.length,u;if(p>0){u=[];for(let y=0;y<p;y++)u[y]={name:h[y].name,data:[]};this.morphTargets.normal=u}let d=t.skinIndices,m=t.skinWeights,g=d.length===r.length,x=m.length===r.length;r.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<e.length;y++){let v=e[y];this.vertices.push(r[v.a],r[v.b],r[v.c]);let P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(n===!0){let b=o[0][y];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(s===!0){let b=o[1][y];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<l;b++){let B=a[b].vertices;c[b].data.push(B[v.a],B[v.b],B[v.c])}for(let b=0;b<p;b++){let B=h[b].vertexNormals[y];u[b].data.push(B.a,B.b,B.c)}g&&this.skinIndices.push(d[v.a],d[v.b],d[v.c]),x&&this.skinWeights.push(m[v.a],m[v.b],m[v.c])}return this.computeGroups(t),this.verticesNeedUpdate=t.verticesNeedUpdate,this.normalsNeedUpdate=t.normalsNeedUpdate,this.colorsNeedUpdate=t.colorsNeedUpdate,this.uvsNeedUpdate=t.uvsNeedUpdate,this.groupsNeedUpdate=t.groupsNeedUpdate,t.boundingSphere!==null&&(this.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(this.boundingBox=t.boundingBox.clone()),this}},an=class{constructor(t,e,r,o,n,s=0){this.a=t,this.b=e,this.c=r,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new oe.Color,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(t){this.a=t.a,this.b=t.b,this.c=t.c,this.normal.copy(t.normal),this.color.copy(t.color),this.materialIndex=t.materialIndex;for(let e=0,r=t.vertexNormals.length;e<r;e++)this.vertexNormals[e]=t.vertexNormals[e].clone();for(let e=0,r=t.vertexColors.length;e<r;e++)this.vertexColors[e]=t.vertexColors[e].clone();return this}};var qv=["a","b","c"];function $v(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Ll(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Il(i,t,e,r,o,n){let s=Math.min(i,t),a=Math.max(i,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),n[i].edges.push(c),n[t].edges.push(c)}function Xv(i,t,e,r){let o,n,s;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=t.length;o<n;o++)s=t[o],Il(s.a,s.b,i,r,s,e),Il(s.b,s.c,i,r,s,e),Il(s.c,s.a,i,r,s,e)}function Xs(i,t,e,r,o){i.push(new an(t,e,r,void 0,void 0,o))}function ln(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function Ks(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var Ys=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof _r.BufferGeometry?t=new Yr().fromBufferGeometry(t):t=t.clone(),t.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(t);return t.computeFaceNormals(),t.computeVertexNormals(),t}_smooth(t){let e=new _r.Vector3,r,o,n,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],d=new Map;Xv(l,c,u,d);let m=[],g,x,y,v,P,S,b;for(let V of Array.from(d.keys())){for(x=d.get(V),y=new _r.Vector3,P=3/8,S=1/8,b=x.faces.length,b!=2&&(P=.5,S=0,b!=1),y.addVectors(x.a,x.b).multiplyScalar(P),e.set(0,0,0),s=0;s<b;s++){for(v=x.faces[s],a=0;a<3&&(g=l[$v(v,qv[a])],!(g!==x.a&&g!==x.b));a++);g&&e.add(g)}e.multiplyScalar(S),y.add(e),x.newEdge=m.length,m.push(y)}let B,w,f,D,C,I,L,M=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],C=u[o].edges,r=C.length,r==3?B=3/16:r>3&&(B=3/(8*r)),w=1-r*Number(B),f=B,r<=2&&(r==2?(w=3/4,f=1/8):r==1||r==0),L=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<r;s++)D=C[s],g=D.a!==I?D.a:D.b,e.add(g);e.multiplyScalar(Number(f)),L.add(e),M.push(L)}let k=M.concat(m),W=M.length,ne,pe,se,Y=[],U=[],z,E,_,A,G=new _r.Vector2,J=new _r.Vector2,j=new _r.Vector2;for(o=0,n=c.length;o<n;o++)v=c[o],ne=Number(Ll(v.a,v.b,d).newEdge)+W,pe=Number(Ll(v.b,v.c,d).newEdge)+W,se=Number(Ll(v.c,v.a,d).newEdge)+W,Xs(Y,ne,pe,se,v.materialIndex),Xs(Y,v.a,ne,se,v.materialIndex),Xs(Y,v.b,pe,ne,v.materialIndex),Xs(Y,v.c,se,pe,v.materialIndex),p&&(z=h[o],E=z[0],_=z[1],A=z[2],G.set(ln(E.x,_.x),ln(E.y,_.y)),J.set(ln(_.x,A.x),ln(_.y,A.y)),j.set(ln(E.x,A.x),ln(E.y,A.y)),Ks(U,G,J,j),Ks(U,E,G,j),Ks(U,_,J,G),Ks(U,A,j,J));t.vertices=k,t.faces=Y,p&&(t.faceVertexUvs[0]=U)}};var et=new mr.Vector3,Uu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=i.geometry??t?.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(et),r={width:et.x,height:et.y,depth:et.z,subdivisions:0}):r=t.parameters;let o={...r,...i.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(i){let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=i.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(et)):et.set(s.width,s.height,s.depth),(t!==et.x||e!==et.y||r!==et.z)&&n.scale(et.x===0?1:t/et.x,et.y===0?1:e/et.y,et.z===0?1:r/et.z);let a=n.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=n),n=new Ys(o).modify(a).toBufferGeometry()):(a!==void 0&&(n=a),a=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()),a!==void 0&&Object.assign(n,{originalGeometry:a}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,t,e){new mr.BufferGeometryLoader(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(et);let s=100/et.x;Object.assign(n.parameters,{width:100,height:et.y*s,depth:et.z*s}),t(this.build(n))})}};var ju=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,spikes:r,cornerRadius:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}=i.parameters,l=i.shape,c=t*.5,h=e*.5,p=0,u=0,d=2*Math.PI/r;for(let g=0;g<r;g++){let x=d*g,y=p+Math.sin(x)*c,v=u+Math.cos(x)*h;l.addPoint(l.createPoint(y,v))}l.isClosed=!0;for(let g=0,x=l.points.length;g<x;g++)l.points[g].roundness=o;l.roundness=o,l.update();let m=at.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(m,{userData:{...i,type:"PolygonGeometry"}})}};var Se=require("three"),ku=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,heightSegments:n,openEnded:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=new Ml(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function ni(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Pl(i,t,e,r,o,n){let s=t.clone().sub(i),a=e.clone().sub(i),l=s.angleTo(a);if(s.normalize(),a.normalize(),r===o){let c=s.add(a).normalize();n.copy(i).addScaledVector(c,r/Math.sin(l/2))}else{let c=s.angleTo(a);n.copy(i),n.addScaledVector(s,o/Math.sin(c)),n.addScaledVector(a,r/Math.sin(c))}}function Kv(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Ml=class extends Se.BufferGeometry{constructor(t=.5,e=1,r=4,o=1,n=!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,m=Math.PI/r,g=t*Math.cos(Math.PI/r),x=2*Math.PI/r,y=(r-2)*Math.PI/r,v=Math.PI-y,P=new Se.Vector3(0,-d,0),S=new Se.Vector3(0,d,0),b=new Se.Vector2(t,-d),B=new Se.Vector2(g,-d),w=new Se.Vector2(0,S.y).sub(B),f=new Se.Vector2(0,S.y).sub(b),D=new Se.Vector2(w.y,-w.x).normalize(),C=new Se.Vector2(f.y,-f.x).normalize(),L=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,L);let M;{let U=new Se.Vector3(D.x,D.y,0),z=new Se.Vector3(Math.cos(x)*U.x,U.y,Math.sin(x)*U.x);M=U.angleTo(z)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-M)/2),ne=new Se.Vector3;if(!n){c.push(P.x,P.y,P.z),h.push(0,-1,0),p.push(0,0);let U=u++,z=[],E=b.clone(),_=k/Math.cos(Math.PI/r);E.x-=_;for(let A=0;A<r;A++){let G=A/r*Math.PI*2+m,J=new Se.Vector2(Math.sin(G),Math.cos(G));ni(E,J,ne),c.push(ne.x,ne.y,ne.z),h.push(0,-1,0),p.push(0,0),z.push(u++)}for(let A=0;A<z.length;A++)l.push(z[A],U,z[(A+1)%z.length])}let pe=[];{let U=new Se.Vector3,z=new Se.Vector3,E=new Se.Vector3,_=new Se.Vector3,A=new Se.Vector3,G=new Se.Vector3;for(let J=0;J<r;J++){let j=J/r*Math.PI*2+m,V=(J+.5)/r*Math.PI*2+m,F=(J+1)/r*Math.PI*2+m,O=new Se.Vector2(Math.sin(j),Math.cos(j)),q=new Se.Vector2(Math.sin(V),Math.cos(V)),Z=new Se.Vector2(Math.sin(F),Math.cos(F));ni(b,O,z),ni(b,Z,E),ni(D,q,U),Pl(S,z,E,W,W,_),c.push(_.x,_.y,_.z),Pl(z,S,E,W,k,A),c.push(A.x,A.y,A.z),Pl(E,z,S,k,W,G),c.push(G.x,G.y,G.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),h.push(U.x,U.y,U.z),p.push(0,0),p.push(0,0),p.push(0,0);let ee=u++,H=u++,Q=u++;if(l.push(ee,H,Q),s>0){{let ce=z.clone().add(E).multiplyScalar(.5),ie=S.clone().sub(ce).normalize(),Ue=P.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),xe=G.clone().sub(A);se(ce,xe,Ue,w.angle())}let $,re;{let ce=new Se.Vector3;ni(C,Z,ce);let ie=G.clone().add(_).multiplyScalar(.5);ie=Kv(ie,E,S);let fe=G.clone().sub(_);[$,re]=se(ie,fe,ce,M,_.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),fe=new Se.Vector3(0,-1,0),Ue=ie.clone().cross(fe);Y(ce,ie,fe,Ue)}pe.concat(re);{let ce=w.angle(),ie=Math.PI-ce,fe=S.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Ue=new Se.Vector3,xe=[];for(let Le=0;Le<a;Le++){let Nt=[],Ut=Math.PI/2-ie*Le/a,No=Math.cos(Ut),Ot=Math.sin(Ut),Co=V;for(let Gi=0;Gi<=Le;Gi++){let Ri=Math.cos(Co),We=Math.sin(Co);U.x=No*We,U.y=Ot,U.z=No*Ri,Ue.copy(fe).addScaledVector(U,s),c.push(Ue.x,Ue.y,Ue.z),h.push(U.x,U.y,U.z),p.push(0,0),Nt.push(u++),Co+=Math.PI*2/Le/r}xe.push(Nt)}re.reverse(),xe.push(re);let Ke=xe.length-1;for(let Le=0;Le<Ke;Le++){let Nt=xe[Le],Ut=xe[Le+1],No=Nt.length-1;l.push(Ut[1],Nt[0],Ut[0]);for(let Ot=1;Ot<=No;Ot++)l.push(Nt[Ot],Nt[Ot-1],Ut[Ot]),l.push(Ut[Ot+1],Nt[Ot],Ut[Ot])}}}}}this.setIndex(l),this.setAttribute("position",new Se.Float32BufferAttribute(c,3)),this.setAttribute("normal",new Se.Float32BufferAttribute(h,3)),this.setAttribute("uv",new Se.Float32BufferAttribute(p,2));function se(U,z,E,_,A){let G=-_/2,J=(Math.PI-_)/2,j=z.clone().normalize().cross(E);U.addScaledVector(E,-s/Math.sin(J));let V=new Se.Vector3,F=new Se.Vector3,O=1,q=u,Z=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*_;F.set(0,0,0),F.addScaledVector(j,Math.sin(H)),F.addScaledVector(E,Math.cos(H));for(let Q=0;Q<=O;Q++){let $=Q/O-.5;if(V.copy(U),V.addScaledVector(z,$),V.addScaledVector(F,s),A!=null){let re=Math.max(0,V.y-A);V.addScaledVector(z,-re/z.y)}c.push(V.x,V.y,V.z),h.push(F.x,F.y,F.z),p.push(0,0),Q===0&&Z.push(u),u++}}for(let ee=0;ee<a;ee++)for(let H=0;H<O;H++){let Q=q+H+(O+1)*ee,$=Q+(O+1),re=$+1,ce=Q+1;l.push(Q,$,ce),l.push($,re,ce)}return[U.clone().addScaledVector(z,.5),Z]}function Y(U,z,E,_){let A=Math.PI/2,G=f.angle()-A,J=[],j=new Se.Vector3,V=new Se.Vector3;for(let O=0;O<=a;O++){let q=[],Z=O/a;for(let ee=0;ee<=O;ee++){let Q=((O?ee/O:0)-.5)*v,$=Math.cos(Q),re=Math.sin(Q),ce=Math.atan(Math.tan(G)*$),ie=(A+ce)*Z,fe=Math.cos(ie),Ue=Math.sin(ie);j.set(0,0,0),j.addScaledVector(z,Ue*$),j.addScaledVector(E,fe),j.addScaledVector(_,Ue*re),V.copy(U).addScaledVector(j,s),c.push(V.x,V.y,V.z),h.push(j.x,j.y,j.z),p.push(0,0),q.push(u++)}J.push(q)}let F=J.length-1;for(let O=0;O<F;O++){let q=J[O],Z=J[O+1],ee=q.length-1;l.push(q[0],Z[1],Z[0]);for(let H=1;H<=ee;H++)l.push(q[H-1],q[H],Z[H]),l.push(q[H],Z[H+1],Z[H])}}}};var Hu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign(t?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:r}}static build(i){let t=i.shape,{width:e,height:r,cornerRadius:o,cornerType:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:r*.5},h={x:-c.x,y:-c.y},p={x:c.x,y:c.y};function u(S,b,B){return b>e&&B>r?Math.min(S*e/b,S*r/B):b>e?S*e/b:B>r?S*r/B:S}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 m=h.x,g=p.x,x=p.y,y=h.y;t.addPoint(t.createPoint(m,x)),t.addPoint(t.createPoint(g,x)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(m,y)),t.isClosed=!0;let v=!0;for(let S=0,b=t.points.length;S<b;S++)t.points[S].roundness=d[S],S>0&&d[S]!==d[S-1]&&(v=!1);v&&(t.roundness=d[0]),t.useCubicForRoundedCorners=n!==1,t.update();let P=at.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...i,type:"RectangleGeometry"}})}};var Wu=require("three"),qu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t=100,height:e=t,depth:r=t,widthSegments:o=64,heightSegments:n=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=i.parameters,h=new Wu.SphereBufferGeometry(.5*t,o,n,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:{...i,type:"SphereGeometry"}})}};var $u=require("three"),Xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new $u.PlaneBufferGeometry(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};var Jr=require("three"),Ku=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Al(t,e,r,o,n,s);return Object.assign(a,{userData:{...i,type:"BackdropGeometry"}})}},Al=class extends Jr.BufferGeometry{constructor(t=1,e=1,r=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],h=.001;n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(180-h,o),o*=Math.PI/180;let p=[],u=Math.PI/2,d=(V=0,F=0,O=0)=>new Jr.Vector3(V,F,O),m=d(),g=d(),[x,y,v]=[e/2,t/2,r/2],P=-y,S=+y,[b,B,w]=[d(P,-x,+v),d(P,-x,-v),d(P,+x,-v)],f=(V,F=!1)=>Math.sin(V-Math.PI/(1+ +F)),D=(V,F=!1)=>Math.cos(V-Math.PI/(1+ +F));w.y=Math.sin(o)*e-x;let C=Math.cos(o)*e-v,I=b.z-h;o<=u?(w.z=Math.min(C,I),w.z==I&&(w.y-=(C-I)/Math.tan(u-o))):B.z=Math.min(B.z-C-v,b.z-h),m.subVectors(b,B),g.subVectors(w,B);let L=Math.min(m.length(),g.length())*n/100,M=L*Math.tan(o/2),k=L/Math.cos(o/2),W=m.clone().normalize().add(g.normalize()).setLength(k).add(B);m.set(0,f(o,!0),D(o,!0)),p.push([w,m.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let F=u+o+V*ne;m.set(0,Math.sin(F)*M,Math.cos(F)*M),m.add(W),g.set(0,f(F),D(F)),p.push([m.clone(),g.clone()])}p.push([b,d(0,1,0)]);let pe=Math.sin(ne/2)*M*2,se=p.length-1,Y=p[0][0].distanceTo(p[1][0]),U=p[se-1][0].distanceTo(p[se][0]),z=Y+pe*s+U;p[0].push(1);for(let V=0;V<=s;V++)p[V+1].push(1-(Y+V*pe)/z);p[se].push(0);let[E,_,A]=p[0],G,J,j;for(let V=1;V<p.length;V++)[G,J,j]=p[V],a.push(P,E.y,E.z,P,G.y,G.z,S,E.y,E.z,S,E.y,E.z,P,G.y,G.z,S,G.y,G.z),l.push(0,_.y,_.z,0,J.y,J.z,0,_.y,_.z,0,_.y,_.z,0,J.y,J.z,0,J.y,J.z),c.push(0,A,0,j,1,A,1,A,0,j,1,j),[E,_,A]=[G,J,j];this.setAttribute("position",new Jr.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Jr.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Jr.Float32BufferAttribute(c,2))}};var Yu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e,innerRadiusPercent:r,spikes:o,cornerRadius:n,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,h=i.shape,p=t*.5,u=e*.5,d=0,m=0,g=s*Math.PI/360/o,x=Math.PI/2*3*-1,y=p*r/100,v=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let S=0;S<o;S++){let b=g*S,B=d+Math.sin(b)*p,w=m+Math.cos(b)*u;h.addPoint(h.createPoint(B,w))}}else for(let S=0;S<o;S++){let b=d+Math.cos(x)*p,B=m+Math.sin(x)*u;h.addPoint(h.createPoint(b,B)),x+=g,b=d+Math.cos(x)*y,B=m+Math.sin(x)*v,S<=o,h.addPoint(h.createPoint(b,B)),x+=g}h.isClosed=!0;for(let S=0,b=h.points.length;S<b;S++)h.points[S].roundness=n;h.roundness=n,h.update();let P=at.create({shape:h,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...i,type:"StarGeometry"}})}};var Ju=require("three"),Js=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new Ju.PlaneBufferGeometry(t,e);return Object.assign(r,{userData:{...i,type:"TextFrameGeometry"}})}};var Qu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:r,height:o,depth:n})}}static build(i){let{width:t,height:e,depth:r,radialSegments:o,tubularSegments:n,arc:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=Yv(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function Yv(i,t,e,r,o,n,s,a,l,c,h){return[t,e]=[e,t],s=t/2,o/=2*Math.PI,o==1&&(c=0),new ri(!0,i,t,e,r,o,n,s,a,l,c,h)}var Zu=require("three"),ed=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:t,tube:e,tubularSegments:r,radialSegments:o,p:n,q:s}=i.parameters,a=t*.5;a!==e&&(a-=e);let l=new Zu.TorusKnotBufferGeometry(a,e,r,o,n,s);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var td=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){let e=Object.assign({},t?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Ce?i.shape:new Ce,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:t=100,height:e,cornerRadius:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s,isRect:a}=i.parameters,l=i.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=at.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(p,{userData:{...i,type:"TriangleGeometry"}})}};var $e=require("three");var Jv,Qs=new Promise(i=>{Jv=i});var _d=require("three");var to=require("three");var Sa=require("three");var _l=require("three");var He=require("three");var Ol=require("three");var rd=require("three"),Pt=class extends rd.Color{constructor(e,r,o,n){super(e,r,o);this.isColorA=!0;this.a=n}setRGBA(e,r,o,n){super.setRGB(e,r,o),this.a=n}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}};function Re(i,t){let e;if(typeof i=="string"){let r=t?.getColor(i);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 Pt(0,0,0,0))}else return"a"in i?new Pt(i.r,i.g,i.b,i.a):new Pt(i.r,i.g,i.b,1);return e}var Dl=i=>"isEntity"in i,fr=i=>"isAbstractMesh"in i,gr=i=>i!==null&&i.isBooleanMesh,od=i=>i.objectType==="CombinedCamera";var Br=i=>"objectHelper"in i;function Qv(i,t){let e=!1;t.position&&(i.position.fromArray(t.position),e=!0),t.rotation&&(i.rotation.fromArray(t.rotation),e=!0),t.scale&&(e=!0,i.scale.fromArray(t.scale)),t.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(e=!0,i.hiddenMatrix.fromArray(t.hiddenMatrix??Hr.identity)),e&&(i.updateMatrix(),gr(i.parent)&&fr(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),t.position&&t.rotation&&t.scale&&t.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(t.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=t.isUpVectorFlipped),i.updateUp())}function Zv(i,t){Qv(i,t),t.name!==void 0&&(i.name=t.name),t.visible!==void 0&&(i.isEntity?i.visibility=t.visible:i.visible=t.visible)}function nd(i,t,e){Zv(i,t),t.color!==void 0&&(i.color=Re(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof Ol.HemisphereLight)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof Ol.HemisphereLight)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&Br(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function id(i,t){i.shadow.camera.right=t/2,i.shadow.camera.left=-t/2,i.shadow.camera.top=t/2,i.shadow.camera.bottom=-t/2,i.shadow.needsUpdate=!0}var cn=new He.Box3,yr=new He.Vector3,xr=new He.Vector3,hn=new He.Matrix4,ad=[new He.Vector3(-1,1,1),new He.Vector3(-1,-1,1),new He.Vector3(1,-1,1),new He.Vector3(1,1,1),new He.Vector3(-1,1,-1),new He.Vector3(-1,-1,-1),new He.Vector3(1,-1,-1),new He.Vector3(1,1,-1)],eb=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],tb=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function rb(i,t,e=0,r=t.count){let o=1/0,n=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<n&&(n=u),d<s&&(s=d),p>a&&(a=p),u>l&&(l=u),d>c&&(c=d)}return i.min.set(o,n,s),i.max.set(a,l,c),i}var sd=(i,t,e,r)=>{if(fr(i)){let o=i.geometry.userData.parameters,n=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?yr.copy(i.originalGeometry.boundingSphere.center):n!==void 0&&(rb(cn,n,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:n.count),cn.getCenter(yr)),i.forceComputeSize?cn.getSize(xr).multiplyScalar(.5):xr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(Br(i)&&r===!0){let o=i.geometryHelper.getAttribute("position");cn.setFromArray(o.array),cn.getCenter(yr),cn.getSize(xr).multiplyScalar(.5)}else yr.setScalar(0),xr.setScalar(0);hn.copy(t).multiply(i.matrixWorld),xr.x===0&&xr.y===0&&xr.z===0?e.push(new He.Vector3(yr.x,yr.y,yr.z).applyMatrix4(hn)):ad.forEach(o=>{e.push(o.clone().multiply(xr).add(yr).applyMatrix4(hn))})},ii=class extends He.Box3{constructor(){super(...arguments);this.matrix=new He.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(r=>r.clone()),this.faces=e.faces.map(r=>r.clone()),this.edges=e.edges.map(r=>r.clone()),this.centerEdges=e.centerEdges.map(r=>r.clone()),this}setFromObjectSize(e,r=!1){e.updateWorldMatrix(!1,r),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new He.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,r)}expandByObjectSize(e,r,o=!1){let n=[];return o===!0?e.traverseEntity(s=>{s.visible&&sd(s,r,n,e.enableHelper===!0)}):sd(e,r,n,e.enableHelper===!0),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(hn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(xr).multiplyScalar(.5),this.getCenter(yr),hn.copy(this.matrix).setPosition(yr),this.vertices=ad.map(e=>e.clone().multiply(xr).applyMatrix4(hn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=eb.map(([e,r])=>new He.Line3(this.vertices[e],this.vertices[r])),this.centerEdges=this.edges.map(e=>e.getCenter(new He.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=tb.map(([e,r])=>this.vertices[e].clone().add(this.vertices[r]).multiplyScalar(.5))}};var Zs=require("three");var ea=i=>class extends i{hasEntityChild(){return this.children.some(e=>Dl(e))}isDescendantOf(e){e instanceof Zs.Object3D&&(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 Zs.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Dl(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 n=e.children[o];this.add(n.clone())}return this}};var qt=i=>"isEntity"in i,ld=i=>"isAbstractMesh"in i,$t=i=>class extends ea(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new _l.Matrix4;this._singleBBox=new ii;this._recursiveBBox=new ii;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)qt(o)&&o.traverseEntity(n=>{Br(n)&&n.visible&&(n.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=>{qt(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)qt(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 n=this.parent;if(r&&n!==null&&n.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 n of r.children)qt(n)&&this.add(n.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 n of r.children)qt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new _l.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)qt(n)&&n.hiddenMatrix.premultiply(r)}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return ko(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(r)};return ko(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}};var Qe=require("three");var yo=class extends Qe.Object3D{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Qe.Vector3),n=.1;this.parameters=gs.defaultData(o.toArray(),n),ao(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}refreshClonerMasks(){for(let e of this.children)e.layers.mask=this.object.layers.mask}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;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;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 n=this.object.shallowClone(!1);n.visible=!0,this.add(n),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*Qe.MathUtils.DEG2RAD,n=r.end*Qe.MathUtils.DEG2RAD,s=o-n,a=new Qe.Euler(r.rotation[0]*Qe.MathUtils.DEG2RAD,r.rotation[1]*Qe.MathUtils.DEG2RAD,r.rotation[2]*Qe.MathUtils.DEG2RAD),l;switch(r.axis){case"z":l=new Qe.Vector3(0,0,1);break;case"y":l=new Qe.Vector3(0,1,0);break;default:case"x":l=new Qe.Vector3(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 Qe.Euler(r.rotation[0]*Qe.MathUtils.DEG2RAD,r.rotation[1]*Qe.MathUtils.DEG2RAD,r.rotation[2]*Qe.MathUtils.DEG2RAD);for(let[n,s]of this.children.entries())s.hiddenMatrix.identity(),s.scale.x=1+(r.scale[0]-1)*n,s.scale.y=1+(r.scale[1]-1)*n,s.scale.z=1+(r.scale[2]-1)*n,s.rotation.x=o.x*n,s.rotation.y=o.y*n,s.rotation.z=o.z*n,s.position.x=r.position[0]*n,s.position.y=r.position[1]*n,s.position.z=r.position[2]*n}_updateGrid(e){let r=0,o=e.grid;if(o.useCenter===!0){let n={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 Qe.Vector3(o.size[0]*(o.count[0]-n.x)*.5,o.size[1]*(o.count[1]-n.y)*.5,o.size[2]*(o.count[2]-n.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 n=0;n<o.count[0];n++)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]*n,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),ao(this.parameters,e),this.update(),this}};var gt=require("three");var ve=require("three");var cd=require("three");var ze=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 n in r)n!=="type"&&n!=="calpha"&&(this.uniforms[`f${this.id}_${n}`]=r[n]);for(let n in o)this.defines[n]=o[n]}}copy(t){this.id=t.id,this.type=t.type,this.defines={...t.defines};for(let e in t.uniforms)this.getName(e)==="transmissionSamplerMap"||this.getName(e)==="transmissionDepthMap"||this.getName(e)==="normalMap"||this.getName(e)==="depthMap"||(this.uniforms[e]?this.uniforms[e].copy(t.uniforms[e]):this.uniforms[e]=t.uniforms[e].clone());return this}clone(){return new ze(this.id).copy(this)}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 n=this.uniforms[`f${this.id}_${r}`].value;n!==void 0&&(Array.isArray(n)?t[r]=n.map(s=>s.clone?s.clone():s):t[r]=n.clone?n.clone():n)}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),n=t.uniforms[e].value;if(n.value instanceof cd.Texture){if(o.image!==n.image)return!1}else if(Array.isArray(n)){let s=o;for(let a=0,l=s.length;a<l;++a)if(s[a]!==n[a])return!1}else{let s=o;if(s.equals){if(!s.equals(n))return!1}else if(o!==n)return!1}}return!0}dispose(){}};function hd(i){let t=i instanceof ze?i.type:i;return t==="texture"||t==="displace_map"||t==="matcap"}var pd=require("three"),he=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=pd.MathUtils.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e??{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r??{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r??{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e??this.getType(t,e);let o=t.getNodeData(r??this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,n,s){return""}generate(t,e,r,o,n){return""}parse(t,e,r,o){}appendDepsNode(t,e,r){e.deps=(e.deps||0)+1;let o=t.getTypeLength(r);(o>(e.outputMax||0)||this.getType(t,r))&&(e.outputMax=o,e.output=r)}setName(t){this.name=t}getName(){return this.name}getType(t,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof he&&(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)}};var ud=require("three"),le=class extends he{constructor(e,r){super(e);this.scope="";r=r??{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r??this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=ud.MathUtils.generateUUID()),o=e.getUUID(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,n);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,n,s){return this.getShared(e,r)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),s,this.getLabel()).name}};var _e=class extends le{constructor(e,r){r=r??{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,r,o,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,r))}copy(e){return super.copy(e),this.readonly=e.readonly,this}};var Pe=class extends _e{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof Pt?e:new Pt(e||0,r,o,n)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,r,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??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,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,r)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,r))}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",n,r)}};var X=class extends _e{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,r,o,n,s,a){return e.format(this.value+(this.value%1?"":".0"),n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var ye=class extends _e{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,r,o,n,s,a){return e.format(this.value.toString(),n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var Qr=class extends _e{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,r,o,n){return e.format(this.value?"true":"false",n,r)}copy(e){return super.copy(e),this.value=e.value,this}};var Bl=require("three");var lt=class extends _e{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof Bl.Vector2?e:new Bl.Vector2(e,r)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,r,o,n,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var El=require("three");var mt=class extends _e{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof El.Vector3?e:new El.Vector3(e,r,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,r,o,n,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var vr=class extends _e{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Pt?e:new Pt(e.r,e.g,e.b,e.a)}generateReadonly(e,r,o,n,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this}};var Gl=require("three");var Er=class extends _e{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Gl.Vector4?new Array(e).fill(r):new Array(e).fill(new Gl.Vector4(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var tt=class extends _e{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}};var Rl=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}},rt=new Rl;var pn=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),r)}copy(e){return super.copy(e),this.index=e.index,this}};rt.addKeyword("uv",function(){return new pn});rt.addKeyword("uv2",function(){return new pn(1)});var ta=require("three");var ob=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,dd=/[a-z_0-9]+/gi,K=class extends le{constructor(e,r,o,n,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,n)}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,n,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=dd.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],d=u[0],m=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&m&&rt.containsKeyword(d)){let x=this.keywords[d];if(!x){let y=rt.getKeywordData(d);y.cache&&(x=e.keywords[d]),x=x||rt.getKeyword(d,e),y.cache&&(e.keywords[d]=x)}g=x.build(e)}d!==g&&c[u.index+l-1]!=="."&&(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&&rt.contains(g)&&e.include(rt.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,n){if(this.src=e||"",this.includes=r??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let s=ob.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(dd);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}};var xo=class extends le{constructor(e=new he,r){super("v4");this.nodeType="ColorSpace";this.factor=new he;this.input=e,this.method=r??xo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case ta.LinearEncoding:return["Linear"];case ta.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,r){let o=this.input.build(e,"v4"),n=this.getType(e),s=xo.Nodes[this.method],a=e.include(s);if(a===xo.LINEAR_TO_LINEAR)return e.format(o,n,r);if(s.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(a+"( "+o+", "+l+" )",n,r)}else return e.format(a+"( "+o+" )",n,r)}fromEncoding(e){let r=xo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=xo.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}},St=xo;St.Nodes={LinearToLinear:new K(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
2
|
-
|
|
3
|
-
`)),
|
|
4
|
-
`))
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
var Tf=Object.create;var ki=Object.defineProperty;var Nf=Object.getOwnPropertyDescriptor;var Cf=Object.getOwnPropertyNames;var Lf=Object.getPrototypeOf,If=Object.prototype.hasOwnProperty;var Pf=(i,r)=>()=>(r||i((r={exports:{}}).exports,r),r.exports),uc=(i,r)=>{for(var e in r)ki(i,e,{get:r[e],enumerable:!0})},pc=(i,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of Cf(r))!If.call(i,o)&&o!==e&&ki(i,o,{get:()=>r[o],enumerable:!(t=Nf(r,o))||t.enumerable});return i};var Af=(i,r,e)=>(e=i!=null?Tf(Lf(i)):{},pc(r||!i||!i.__esModule?ki(e,"default",{value:i,enumerable:!0}):e,i)),Mf=i=>pc(ki({},"__esModule",{value:!0}),i);var Jd=Pf((Pa,Qd)=>{(function(i,r){typeof Pa=="object"&&typeof Qd<"u"?r(Pa):typeof define=="function"&&define.amd?define(["exports"],r):r((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(Pa,function(i){"use strict";i.SVD=function(r,e,t,o,n){if(e=e===void 0||e,t=t===void 0||t,n=1e-64/(o=o||Math.pow(2,-52)),!r)throw new TypeError("Matrix a is not defined");var s,a,l,c,u,m,p,d,f,g,x,y,v=r[0].length,P=r.length;if(P<v)throw new TypeError("Invalid matrix: m < n");for(var S=[],b=[],E=[],w=e==="f"?P:v,h=g=p=0;h<P;h++)b[h]=new Array(w).fill(0);for(h=0;h<v;h++)E[h]=new Array(v).fill(0);var _,N=new Array(v).fill(0);for(h=0;h<P;h++)for(s=0;s<v;s++)b[h][s]=r[h][s];for(h=0;h<v;h++){for(S[h]=p,f=0,l=h+1,s=h;s<P;s++)f+=Math.pow(b[s][h],2);if(f<n)p=0;else for(d=(m=b[h][h])*(p=m<0?Math.sqrt(f):-Math.sqrt(f))-f,b[h][h]=m-p,s=l;s<v;s++){for(f=0,a=h;a<P;a++)f+=b[a][h]*b[a][s];for(m=f/d,a=h;a<P;a++)b[a][s]=b[a][s]+m*b[a][h]}for(N[h]=p,f=0,s=l;s<v;s++)f+=Math.pow(b[h][s],2);if(f<n)p=0;else{for(d=(m=b[h][h+1])*(p=m<0?Math.sqrt(f):-Math.sqrt(f))-f,b[h][h+1]=m-p,s=l;s<v;s++)S[s]=b[h][s]/d;for(s=l;s<P;s++){for(f=0,a=l;a<v;a++)f+=b[s][a]*b[h][a];for(a=l;a<v;a++)b[s][a]=b[s][a]+f*S[a]}}g<(x=Math.abs(N[h])+Math.abs(S[h]))&&(g=x)}if(t)for(h=v-1;0<=h;h--){if(p!==0){for(d=b[h][h+1]*p,s=l;s<v;s++)E[s][h]=b[h][s]/d;for(s=l;s<v;s++){for(f=0,a=l;a<v;a++)f+=b[h][a]*E[a][s];for(a=l;a<v;a++)E[a][s]=E[a][s]+f*E[a][h]}}for(s=l;s<v;s++)E[h][s]=0,E[s][h]=0;E[h][h]=1,p=S[h],l=h}if(e){if(e==="f")for(h=v;h<P;h++){for(s=v;s<P;s++)b[h][s]=0;b[h][h]=1}for(h=v-1;0<=h;h--){for(l=h+1,p=N[h],s=l;s<w;s++)b[h][s]=0;if(p!==0){for(d=b[h][h]*p,s=l;s<w;s++){for(f=0,a=l;a<P;a++)f+=b[a][h]*b[a][s];for(m=f/d,a=h;a<P;a++)b[a][s]=b[a][s]+m*b[a][h]}for(s=h;s<P;s++)b[s][h]=b[s][h]/p}else for(s=h;s<P;s++)b[s][h]=0;b[h][h]=b[h][h]+1}}for(o*=g,a=v-1;0<=a;a--)for(var I=0;I<50;I++){for(_=!1,l=a;0<=l;l--){if(Math.abs(S[l])<=o){_=!0;break}if(Math.abs(N[l-1])<=o)break}if(!_){for(u=0,c=l-(f=1),h=l;h<a+1&&(m=f*S[h],S[h]=u*S[h],!(Math.abs(m)<=o));h++)if(p=N[h],N[h]=Math.sqrt(m*m+p*p),u=p/(d=N[h]),f=-m/d,e)for(s=0;s<P;s++)x=b[s][c],y=b[s][h],b[s][c]=x*u+y*f,b[s][h]=-x*f+y*u}if(y=N[a],l===a){if(y<0&&(N[a]=-y,t))for(s=0;s<v;s++)E[s][a]=-E[s][a];break}for(g=N[l],m=(((x=N[a-1])-y)*(x+y)+((p=S[a-1])-(d=S[a]))*(p+d))/(2*d*x),p=Math.sqrt(m*m+1),m=((g-y)*(g+y)+d*(x/(m<0?m-p:m+p)-d))/g,h=l+(f=u=1);h<a+1;h++){if(p=S[h],x=N[h],d=f*p,p*=u,y=Math.sqrt(m*m+d*d),m=g*(u=m/(S[h-1]=y))+p*(f=d/y),p=-g*f+p*u,d=x*f,x*=u,t)for(s=0;s<v;s++)g=E[s][h-1],y=E[s][h],E[s][h-1]=g*u+y*f,E[s][h]=-g*f+y*u;if(y=Math.sqrt(m*m+d*d),m=(u=m/(N[h-1]=y))*p+(f=d/y)*x,g=-f*p+u*x,e)for(s=0;s<P;s++)x=b[s][h-1],y=b[s][h],b[s][h-1]=x*u+y*f,b[s][h]=-x*f+y*u}S[l]=0,S[a]=m,N[a]=g}for(h=0;h<v;h++)N[h]<o&&(N[h]=0);return{u:b,q:N,v:E}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});var Yb={};uc(Yb,{default:()=>Aa});module.exports=Mf(Yb);var Ma=require("three");function _a(i,r){return Object.setPrototypeOf(i,r),i}function mc(i){return Array.isArray(i)?i:[i]}var Of=typeof global=="object"&&global&&global.Object===Object&&global,Hi=Of;var _f=typeof self=="object"&&self&&self.Object===Object&&self,Df=Hi||_f||Function("return this")(),$e=Df;var Ef=$e.Symbol,xt=Ef;var dc=Object.prototype,Bf=dc.hasOwnProperty,Gf=dc.toString,zn=xt?xt.toStringTag:void 0;function Rf(i){var r=Bf.call(i,zn),e=i[zn];try{i[zn]=void 0;var t=!0}catch{}var o=Gf.call(i);return t&&(r?i[zn]=e:delete i[zn]),o}var fc=Rf;var zf=Object.prototype,Vf=zf.toString;function Ff(i){return Vf.call(i)}var hc=Ff;var Uf="[object Null]",jf="[object Undefined]",gc=xt?xt.toStringTag:void 0;function kf(i){return i==null?i===void 0?jf:Uf:gc&&gc in Object(i)?fc(i):hc(i)}var Et=kf;function Hf(i){return i!=null&&typeof i=="object"}var dt=Hf;var Wf="[object Symbol]";function qf(i){return typeof i=="symbol"||dt(i)&&Et(i)==Wf}var _o=qf;function $f(i,r){for(var e=-1,t=i==null?0:i.length,o=Array(t);++e<t;)o[e]=r(i[e],e,i);return o}var Wi=$f;var Xf=Array.isArray,Xe=Xf;var Yf=1/0,yc=xt?xt.prototype:void 0,xc=yc?yc.toString:void 0;function vc(i){if(typeof i=="string")return i;if(Xe(i))return Wi(i,vc)+"";if(_o(i))return xc?xc.call(i):"";var r=i+"";return r=="0"&&1/i==-Yf?"-0":r}var bc=vc;function Kf(i){var r=typeof i;return i!=null&&(r=="object"||r=="function")}var ft=Kf;function Qf(i){return i}var qi=Qf;var Jf="[object AsyncFunction]",Zf="[object Function]",eh="[object GeneratorFunction]",th="[object Proxy]";function rh(i){if(!ft(i))return!1;var r=Et(i);return r==Zf||r==eh||r==Jf||r==th}var Do=rh;var oh=$e["__core-js_shared__"],$i=oh;var Sc=function(){var i=/[^.]+$/.exec($i&&$i.keys&&$i.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function nh(i){return!!Sc&&Sc in i}var wc=nh;var ih=Function.prototype,sh=ih.toString;function ah(i){if(i!=null){try{return sh.call(i)}catch{}try{return i+""}catch{}}return""}var Pr=ah;var lh=/[\\^$.*+?()[\]{}|]/g,ch=/^\[object .+?Constructor\]$/,uh=Function.prototype,ph=Object.prototype,mh=uh.toString,dh=ph.hasOwnProperty,fh=RegExp("^"+mh.call(dh).replace(lh,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function hh(i){if(!ft(i)||wc(i))return!1;var r=Do(i)?fh:ch;return r.test(Pr(i))}var Tc=hh;function gh(i,r){return i?.[r]}var Nc=gh;function yh(i,r){var e=Nc(i,r);return Tc(e)?e:void 0}var Ct=yh;var xh=Ct($e,"WeakMap"),Xi=xh;var Cc=Object.create,vh=function(){function i(){}return function(r){if(!ft(r))return{};if(Cc)return Cc(r);i.prototype=r;var e=new i;return i.prototype=void 0,e}}(),Lc=vh;function bh(i,r,e){switch(e.length){case 0:return i.call(r);case 1:return i.call(r,e[0]);case 2:return i.call(r,e[0],e[1]);case 3:return i.call(r,e[0],e[1],e[2])}return i.apply(r,e)}var Ic=bh;function Sh(i,r){var e=-1,t=i.length;for(r||(r=Array(t));++e<t;)r[e]=i[e];return r}var Yi=Sh;var wh=800,Th=16,Nh=Date.now;function Ch(i){var r=0,e=0;return function(){var t=Nh(),o=Th-(t-e);if(e=t,o>0){if(++r>=wh)return arguments[0]}else r=0;return i.apply(void 0,arguments)}}var Pc=Ch;function Lh(i){return function(){return i}}var Ac=Lh;var Ih=function(){try{var i=Ct(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Eo=Ih;var Ph=Eo?function(i,r){return Eo(i,"toString",{configurable:!0,enumerable:!1,value:Ac(r),writable:!0})}:qi,Mc=Ph;var Ah=Pc(Mc),Ki=Ah;function Mh(i,r){for(var e=-1,t=i==null?0:i.length;++e<t&&r(i[e],e,i)!==!1;);return i}var Oc=Mh;var Oh=9007199254740991,_h=/^(?:0|[1-9]\d*)$/;function Dh(i,r){var e=typeof i;return r=r??Oh,!!r&&(e=="number"||e!="symbol"&&_h.test(i))&&i>-1&&i%1==0&&i<r}var Qi=Dh;function Eh(i,r,e){r=="__proto__"&&Eo?Eo(i,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[r]=e}var Bo=Eh;function Bh(i,r){return i===r||i!==i&&r!==r}var Vr=Bh;var Gh=Object.prototype,Rh=Gh.hasOwnProperty;function zh(i,r,e){var t=i[r];(!(Rh.call(i,r)&&Vr(t,e))||e===void 0&&!(r in i))&&Bo(i,r,e)}var Ji=zh;function Vh(i,r,e,t){var o=!e;e||(e={});for(var n=-1,s=r.length;++n<s;){var a=r[n],l=t?t(e[a],i[a],a,e,i):void 0;l===void 0&&(l=i[a]),o?Bo(e,a,l):Ji(e,a,l)}return e}var Ft=Vh;var _c=Math.max;function Fh(i,r,e){return r=_c(r===void 0?i.length-1:r,0),function(){for(var t=arguments,o=-1,n=_c(t.length-r,0),s=Array(n);++o<n;)s[o]=t[r+o];o=-1;for(var a=Array(r+1);++o<r;)a[o]=t[o];return a[r]=e(s),Ic(i,this,a)}}var Zi=Fh;function Uh(i,r){return Ki(Zi(i,r,qi),i+"")}var Dc=Uh;var jh=9007199254740991;function kh(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=jh}var es=kh;function Hh(i){return i!=null&&es(i.length)&&!Do(i)}var Fr=Hh;function Wh(i,r,e){if(!ft(e))return!1;var t=typeof r;return(t=="number"?Fr(e)&&Qi(r,e.length):t=="string"&&r in e)?Vr(e[r],i):!1}var Ec=Wh;function qh(i){return Dc(function(r,e){var t=-1,o=e.length,n=o>1?e[o-1]:void 0,s=o>2?e[2]:void 0;for(n=i.length>3&&typeof n=="function"?(o--,n):void 0,s&&Ec(e[0],e[1],s)&&(n=o<3?void 0:n,o=1),r=Object(r);++t<o;){var a=e[t];a&&i(r,a,t,n)}return r})}var Bc=qh;var $h=Object.prototype;function Xh(i){var r=i&&i.constructor,e=typeof r=="function"&&r.prototype||$h;return i===e}var Go=Xh;function Yh(i,r){for(var e=-1,t=Array(i);++e<i;)t[e]=r(e);return t}var Gc=Yh;var Kh="[object Arguments]";function Qh(i){return dt(i)&&Et(i)==Kh}var Da=Qh;var Rc=Object.prototype,Jh=Rc.hasOwnProperty,Zh=Rc.propertyIsEnumerable,eg=Da(function(){return arguments}())?Da:function(i){return dt(i)&&Jh.call(i,"callee")&&!Zh.call(i,"callee")},lo=eg;function tg(){return!1}var zc=tg;var Uc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vc=Uc&&typeof module=="object"&&module&&!module.nodeType&&module,rg=Vc&&Vc.exports===Uc,Fc=rg?$e.Buffer:void 0,og=Fc?Fc.isBuffer:void 0,ng=og||zc,Ro=ng;var ig="[object Arguments]",sg="[object Array]",ag="[object Boolean]",lg="[object Date]",cg="[object Error]",ug="[object Function]",pg="[object Map]",mg="[object Number]",dg="[object Object]",fg="[object RegExp]",hg="[object Set]",gg="[object String]",yg="[object WeakMap]",xg="[object ArrayBuffer]",vg="[object DataView]",bg="[object Float32Array]",Sg="[object Float64Array]",wg="[object Int8Array]",Tg="[object Int16Array]",Ng="[object Int32Array]",Cg="[object Uint8Array]",Lg="[object Uint8ClampedArray]",Ig="[object Uint16Array]",Pg="[object Uint32Array]",_e={};_e[bg]=_e[Sg]=_e[wg]=_e[Tg]=_e[Ng]=_e[Cg]=_e[Lg]=_e[Ig]=_e[Pg]=!0;_e[ig]=_e[sg]=_e[xg]=_e[ag]=_e[vg]=_e[lg]=_e[cg]=_e[ug]=_e[pg]=_e[mg]=_e[dg]=_e[fg]=_e[hg]=_e[gg]=_e[yg]=!1;function Ag(i){return dt(i)&&es(i.length)&&!!_e[Et(i)]}var jc=Ag;function Mg(i){return function(r){return i(r)}}var zo=Mg;var kc=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vn=kc&&typeof module=="object"&&module&&!module.nodeType&&module,Og=Vn&&Vn.exports===kc,Ea=Og&&Hi.process,_g=function(){try{var i=Vn&&Vn.require&&Vn.require("util").types;return i||Ea&&Ea.binding&&Ea.binding("util")}catch{}}(),Ar=_g;var Hc=Ar&&Ar.isTypedArray,Dg=Hc?zo(Hc):jc,ts=Dg;var Eg=Object.prototype,Bg=Eg.hasOwnProperty;function Gg(i,r){var e=Xe(i),t=!e&&lo(i),o=!e&&!t&&Ro(i),n=!e&&!t&&!o&&ts(i),s=e||t||o||n,a=s?Gc(i.length,String):[],l=a.length;for(var c in i)(r||Bg.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Qi(c,l)))&&a.push(c);return a}var rs=Gg;function Rg(i,r){return function(e){return i(r(e))}}var os=Rg;var zg=os(Object.keys,Object),Wc=zg;var Vg=Object.prototype,Fg=Vg.hasOwnProperty;function Ug(i){if(!Go(i))return Wc(i);var r=[];for(var e in Object(i))Fg.call(i,e)&&e!="constructor"&&r.push(e);return r}var qc=Ug;function jg(i){return Fr(i)?rs(i):qc(i)}var Vo=jg;function kg(i){var r=[];if(i!=null)for(var e in Object(i))r.push(e);return r}var $c=kg;var Hg=Object.prototype,Wg=Hg.hasOwnProperty;function qg(i){if(!ft(i))return $c(i);var r=Go(i),e=[];for(var t in i)t=="constructor"&&(r||!Wg.call(i,t))||e.push(t);return e}var Xc=qg;function $g(i){return Fr(i)?rs(i,!0):Xc(i)}var ir=$g;var Xg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Yg=/^\w*$/;function Kg(i,r){if(Xe(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||_o(i)?!0:Yg.test(i)||!Xg.test(i)||r!=null&&i in Object(r)}var Yc=Kg;var Qg=Ct(Object,"create"),Mr=Qg;function Jg(){this.__data__=Mr?Mr(null):{},this.size=0}var Kc=Jg;function Zg(i){var r=this.has(i)&&delete this.__data__[i];return this.size-=r?1:0,r}var Qc=Zg;var ey="__lodash_hash_undefined__",ty=Object.prototype,ry=ty.hasOwnProperty;function oy(i){var r=this.__data__;if(Mr){var e=r[i];return e===ey?void 0:e}return ry.call(r,i)?r[i]:void 0}var Jc=oy;var ny=Object.prototype,iy=ny.hasOwnProperty;function sy(i){var r=this.__data__;return Mr?r[i]!==void 0:iy.call(r,i)}var Zc=sy;var ay="__lodash_hash_undefined__";function ly(i,r){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Mr&&r===void 0?ay:r,this}var eu=ly;function Fo(i){var r=-1,e=i==null?0:i.length;for(this.clear();++r<e;){var t=i[r];this.set(t[0],t[1])}}Fo.prototype.clear=Kc;Fo.prototype.delete=Qc;Fo.prototype.get=Jc;Fo.prototype.has=Zc;Fo.prototype.set=eu;var Ba=Fo;function cy(){this.__data__=[],this.size=0}var tu=cy;function uy(i,r){for(var e=i.length;e--;)if(Vr(i[e][0],r))return e;return-1}var Ur=uy;var py=Array.prototype,my=py.splice;function dy(i){var r=this.__data__,e=Ur(r,i);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():my.call(r,e,1),--this.size,!0}var ru=dy;function fy(i){var r=this.__data__,e=Ur(r,i);return e<0?void 0:r[e][1]}var ou=fy;function hy(i){return Ur(this.__data__,i)>-1}var nu=hy;function gy(i,r){var e=this.__data__,t=Ur(e,i);return t<0?(++this.size,e.push([i,r])):e[t][1]=r,this}var iu=gy;function Uo(i){var r=-1,e=i==null?0:i.length;for(this.clear();++r<e;){var t=i[r];this.set(t[0],t[1])}}Uo.prototype.clear=tu;Uo.prototype.delete=ru;Uo.prototype.get=ou;Uo.prototype.has=nu;Uo.prototype.set=iu;var jr=Uo;var yy=Ct($e,"Map"),kr=yy;function xy(){this.size=0,this.__data__={hash:new Ba,map:new(kr||jr),string:new Ba}}var su=xy;function vy(i){var r=typeof i;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?i!=="__proto__":i===null}var au=vy;function by(i,r){var e=i.__data__;return au(r)?e[typeof r=="string"?"string":"hash"]:e.map}var Hr=by;function Sy(i){var r=Hr(this,i).delete(i);return this.size-=r?1:0,r}var lu=Sy;function wy(i){return Hr(this,i).get(i)}var cu=wy;function Ty(i){return Hr(this,i).has(i)}var uu=Ty;function Ny(i,r){var e=Hr(this,i),t=e.size;return e.set(i,r),this.size+=e.size==t?0:1,this}var pu=Ny;function jo(i){var r=-1,e=i==null?0:i.length;for(this.clear();++r<e;){var t=i[r];this.set(t[0],t[1])}}jo.prototype.clear=su;jo.prototype.delete=lu;jo.prototype.get=cu;jo.prototype.has=uu;jo.prototype.set=pu;var Fn=jo;var Cy="Expected a function";function Ga(i,r){if(typeof i!="function"||r!=null&&typeof r!="function")throw new TypeError(Cy);var e=function(){var t=arguments,o=r?r.apply(this,t):t[0],n=e.cache;if(n.has(o))return n.get(o);var s=i.apply(this,t);return e.cache=n.set(o,s)||n,s};return e.cache=new(Ga.Cache||Fn),e}Ga.Cache=Fn;var mu=Ga;var Ly=500;function Iy(i){var r=mu(i,function(t){return e.size===Ly&&e.clear(),t}),e=r.cache;return r}var du=Iy;var Py=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ay=/\\(\\)?/g,My=du(function(i){var r=[];return i.charCodeAt(0)===46&&r.push(""),i.replace(Py,function(e,t,o,n){r.push(o?n.replace(Ay,"$1"):t||e)}),r}),fu=My;function Oy(i){return i==null?"":bc(i)}var hu=Oy;function _y(i,r){return Xe(i)?i:Yc(i,r)?[i]:fu(hu(i))}var ko=_y;var Dy=1/0;function Ey(i){if(typeof i=="string"||_o(i))return i;var r=i+"";return r=="0"&&1/i==-Dy?"-0":r}var ns=Ey;function By(i,r){r=ko(r,i);for(var e=0,t=r.length;i!=null&&e<t;)i=i[ns(r[e++])];return e&&e==t?i:void 0}var gu=By;function Gy(i,r){for(var e=-1,t=r.length,o=i.length;++e<t;)i[o+e]=r[e];return i}var Ho=Gy;var yu=xt?xt.isConcatSpreadable:void 0;function Ry(i){return Xe(i)||lo(i)||!!(yu&&i&&i[yu])}var xu=Ry;function vu(i,r,e,t,o){var n=-1,s=i.length;for(e||(e=xu),o||(o=[]);++n<s;){var a=i[n];r>0&&e(a)?r>1?vu(a,r-1,e,t,o):Ho(o,a):t||(o[o.length]=a)}return o}var bu=vu;function zy(i){var r=i==null?0:i.length;return r?bu(i,1):[]}var Su=zy;function Vy(i){return Ki(Zi(i,void 0,Su),i+"")}var wu=Vy;var Fy=os(Object.getPrototypeOf,Object),Wo=Fy;var Uy="[object Object]",jy=Function.prototype,ky=Object.prototype,Tu=jy.toString,Hy=ky.hasOwnProperty,Wy=Tu.call(Object);function qy(i){if(!dt(i)||Et(i)!=Uy)return!1;var r=Wo(i);if(r===null)return!0;var e=Hy.call(r,"constructor")&&r.constructor;return typeof e=="function"&&e instanceof e&&Tu.call(e)==Wy}var is=qy;function $y(i,r,e){var t=-1,o=i.length;r<0&&(r=-r>o?0:o+r),e=e>o?o:e,e<0&&(e+=o),o=r>e?0:e-r>>>0,r>>>=0;for(var n=Array(o);++t<o;)n[t]=i[t+r];return n}var Nu=$y;function Xy(){this.__data__=new jr,this.size=0}var Cu=Xy;function Yy(i){var r=this.__data__,e=r.delete(i);return this.size=r.size,e}var Lu=Yy;function Ky(i){return this.__data__.get(i)}var Iu=Ky;function Qy(i){return this.__data__.has(i)}var Pu=Qy;var Jy=200;function Zy(i,r){var e=this.__data__;if(e instanceof jr){var t=e.__data__;if(!kr||t.length<Jy-1)return t.push([i,r]),this.size=++e.size,this;e=this.__data__=new Fn(t)}return e.set(i,r),this.size=e.size,this}var Au=Zy;function qo(i){var r=this.__data__=new jr(i);this.size=r.size}qo.prototype.clear=Cu;qo.prototype.delete=Lu;qo.prototype.get=Iu;qo.prototype.has=Pu;qo.prototype.set=Au;var ss=qo;function ex(i,r){return i&&Ft(r,Vo(r),i)}var Mu=ex;function tx(i,r){return i&&Ft(r,ir(r),i)}var Ou=tx;var Bu=typeof exports=="object"&&exports&&!exports.nodeType&&exports,_u=Bu&&typeof module=="object"&&module&&!module.nodeType&&module,rx=_u&&_u.exports===Bu,Du=rx?$e.Buffer:void 0,Eu=Du?Du.allocUnsafe:void 0;function ox(i,r){if(r)return i.slice();var e=i.length,t=Eu?Eu(e):new i.constructor(e);return i.copy(t),t}var as=ox;function nx(i,r){for(var e=-1,t=i==null?0:i.length,o=0,n=[];++e<t;){var s=i[e];r(s,e,i)&&(n[o++]=s)}return n}var Gu=nx;function ix(){return[]}var ls=ix;var sx=Object.prototype,ax=sx.propertyIsEnumerable,Ru=Object.getOwnPropertySymbols,lx=Ru?function(i){return i==null?[]:(i=Object(i),Gu(Ru(i),function(r){return ax.call(i,r)}))}:ls,$o=lx;function cx(i,r){return Ft(i,$o(i),r)}var zu=cx;var ux=Object.getOwnPropertySymbols,px=ux?function(i){for(var r=[];i;)Ho(r,$o(i)),i=Wo(i);return r}:ls,cs=px;function mx(i,r){return Ft(i,cs(i),r)}var Vu=mx;function dx(i,r,e){var t=r(i);return Xe(i)?t:Ho(t,e(i))}var us=dx;function fx(i){return us(i,Vo,$o)}var Fu=fx;function hx(i){return us(i,ir,cs)}var ps=hx;var gx=Ct($e,"DataView"),ms=gx;var yx=Ct($e,"Promise"),ds=yx;var xx=Ct($e,"Set"),fs=xx;var Uu="[object Map]",vx="[object Object]",ju="[object Promise]",ku="[object Set]",Hu="[object WeakMap]",Wu="[object DataView]",bx=Pr(ms),Sx=Pr(kr),wx=Pr(ds),Tx=Pr(fs),Nx=Pr(Xi),co=Et;(ms&&co(new ms(new ArrayBuffer(1)))!=Wu||kr&&co(new kr)!=Uu||ds&&co(ds.resolve())!=ju||fs&&co(new fs)!=ku||Xi&&co(new Xi)!=Hu)&&(co=function(i){var r=Et(i),e=r==vx?i.constructor:void 0,t=e?Pr(e):"";if(t)switch(t){case bx:return Wu;case Sx:return Uu;case wx:return ju;case Tx:return ku;case Nx:return Hu}return r});var Xo=co;var Cx=Object.prototype,Lx=Cx.hasOwnProperty;function Ix(i){var r=i.length,e=new i.constructor(r);return r&&typeof i[0]=="string"&&Lx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var qu=Ix;var Px=$e.Uint8Array,Ra=Px;function Ax(i){var r=new i.constructor(i.byteLength);return new Ra(r).set(new Ra(i)),r}var Yo=Ax;function Mx(i,r){var e=r?Yo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var $u=Mx;var Ox=/\w*$/;function _x(i){var r=new i.constructor(i.source,Ox.exec(i));return r.lastIndex=i.lastIndex,r}var Xu=_x;var Yu=xt?xt.prototype:void 0,Ku=Yu?Yu.valueOf:void 0;function Dx(i){return Ku?Object(Ku.call(i)):{}}var Qu=Dx;function Ex(i,r){var e=r?Yo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var hs=Ex;var Bx="[object Boolean]",Gx="[object Date]",Rx="[object Map]",zx="[object Number]",Vx="[object RegExp]",Fx="[object Set]",Ux="[object String]",jx="[object Symbol]",kx="[object ArrayBuffer]",Hx="[object DataView]",Wx="[object Float32Array]",qx="[object Float64Array]",$x="[object Int8Array]",Xx="[object Int16Array]",Yx="[object Int32Array]",Kx="[object Uint8Array]",Qx="[object Uint8ClampedArray]",Jx="[object Uint16Array]",Zx="[object Uint32Array]";function e0(i,r,e){var t=i.constructor;switch(r){case kx:return Yo(i);case Bx:case Gx:return new t(+i);case Hx:return $u(i,e);case Wx:case qx:case $x:case Xx:case Yx:case Kx:case Qx:case Jx:case Zx:return hs(i,e);case Rx:return new t;case zx:case Ux:return new t(i);case Vx:return Xu(i);case Fx:return new t;case jx:return Qu(i)}}var Ju=e0;function t0(i){return typeof i.constructor=="function"&&!Go(i)?Lc(Wo(i)):{}}var gs=t0;var r0="[object Map]";function o0(i){return dt(i)&&Xo(i)==r0}var Zu=o0;var ep=Ar&&Ar.isMap,n0=ep?zo(ep):Zu,tp=n0;var i0="[object Set]";function s0(i){return dt(i)&&Xo(i)==i0}var rp=s0;var op=Ar&&Ar.isSet,a0=op?zo(op):rp,np=a0;var l0=1,c0=2,u0=4,ip="[object Arguments]",p0="[object Array]",m0="[object Boolean]",d0="[object Date]",f0="[object Error]",sp="[object Function]",h0="[object GeneratorFunction]",g0="[object Map]",y0="[object Number]",ap="[object Object]",x0="[object RegExp]",v0="[object Set]",b0="[object String]",S0="[object Symbol]",w0="[object WeakMap]",T0="[object ArrayBuffer]",N0="[object DataView]",C0="[object Float32Array]",L0="[object Float64Array]",I0="[object Int8Array]",P0="[object Int16Array]",A0="[object Int32Array]",M0="[object Uint8Array]",O0="[object Uint8ClampedArray]",_0="[object Uint16Array]",D0="[object Uint32Array]",Oe={};Oe[ip]=Oe[p0]=Oe[T0]=Oe[N0]=Oe[m0]=Oe[d0]=Oe[C0]=Oe[L0]=Oe[I0]=Oe[P0]=Oe[A0]=Oe[g0]=Oe[y0]=Oe[ap]=Oe[x0]=Oe[v0]=Oe[b0]=Oe[S0]=Oe[M0]=Oe[O0]=Oe[_0]=Oe[D0]=!0;Oe[f0]=Oe[sp]=Oe[w0]=!1;function ys(i,r,e,t,o,n){var s,a=r&l0,l=r&c0,c=r&u0;if(e&&(s=o?e(i,t,o,n):e(i)),s!==void 0)return s;if(!ft(i))return i;var u=Xe(i);if(u){if(s=qu(i),!a)return Yi(i,s)}else{var m=Xo(i),p=m==sp||m==h0;if(Ro(i))return as(i,a);if(m==ap||m==ip||p&&!o){if(s=l||p?{}:gs(i),!a)return l?Vu(i,Ou(s,i)):zu(i,Mu(s,i))}else{if(!Oe[m])return o?i:{};s=Ju(i,m,a)}}n||(n=new ss);var d=n.get(i);if(d)return d;n.set(i,s),np(i)?i.forEach(function(x){s.add(ys(x,r,e,x,i,n))}):tp(i)&&i.forEach(function(x,y){s.set(y,ys(x,r,e,y,i,n))});var f=c?l?ps:Fu:l?ir:Vo,g=u?void 0:f(i);return Oc(g||i,function(x,y){g&&(y=x,x=i[y]),Ji(s,y,ys(x,r,e,y,i,n))}),s}var xs=ys;var E0=1,B0=4;function G0(i){return xs(i,E0|B0)}var Un=G0;function R0(i){return function(r,e,t){for(var o=-1,n=Object(r),s=t(r),a=s.length;a--;){var l=s[i?a:++o];if(e(n[l],l,n)===!1)break}return r}}var lp=R0;var z0=lp(),cp=z0;function V0(i,r,e){(e!==void 0&&!Vr(i[r],e)||e===void 0&&!(r in i))&&Bo(i,r,e)}var jn=V0;function F0(i){return dt(i)&&Fr(i)}var up=F0;function U0(i,r){if(!(r==="constructor"&&typeof i[r]=="function")&&r!="__proto__")return i[r]}var kn=U0;function j0(i){return Ft(i,ir(i))}var pp=j0;function k0(i,r,e,t,o,n,s){var a=kn(i,e),l=kn(r,e),c=s.get(l);if(c){jn(i,e,c);return}var u=n?n(a,l,e+"",i,r,s):void 0,m=u===void 0;if(m){var p=Xe(l),d=!p&&Ro(l),f=!p&&!d&&ts(l);u=l,p||d||f?Xe(a)?u=a:up(a)?u=Yi(a):d?(m=!1,u=as(l,!0)):f?(m=!1,u=hs(l,!0)):u=[]:is(l)||lo(l)?(u=a,lo(a)?u=pp(a):(!ft(a)||Do(a))&&(u=gs(l))):m=!1}m&&(s.set(l,u),o(u,l,t,n,s),s.delete(l)),jn(i,e,u)}var mp=k0;function dp(i,r,e,t,o){i!==r&&cp(r,function(n,s){if(o||(o=new ss),ft(n))mp(i,r,s,e,dp,t,o);else{var a=t?t(kn(i,s),n,s+"",i,r,o):void 0;a===void 0&&(a=n),jn(i,s,a)}},ir)}var fp=dp;function H0(i){var r=i==null?0:i.length;return r?i[r-1]:void 0}var hp=H0;function W0(i,r){return r.length<2?i:gu(i,Nu(r,0,-1))}var gp=W0;var q0=Bc(function(i,r,e){fp(i,r,e)}),uo=q0;function $0(i,r){return r=ko(r,i),i=gp(i,r),i==null||delete i[ns(hp(r))]}var yp=$0;function X0(i){return is(i)?void 0:i}var xp=X0;var Y0=1,K0=2,Q0=4,J0=wu(function(i,r){var e={};if(i==null)return e;var t=!1;r=Wi(r,function(n){return n=ko(n,i),t||(t=n.length>1),n}),Ft(i,ps(i),e),t&&(e=xs(e,Y0|K0|Q0,xp));for(var o=r.length;o--;)yp(e,r[o]);return e}),Ko=J0;var Qo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function r(t){return e.all.includes(t)}e.is=r})(Qo||(Qo={}));var po;(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 t(n){return n.type==="PerspectiveCamera"?n.perspective.zoom:n.orthographic.zoom}o.getZoom=t})(po||(po={}));var vp;(e=>{function i(t,o){return t[0]===o[0]&&t[1]===o[1]}e.isEqual=i;function r(t,o,n){return[t[0]+(o[0]-t[0])*n,t[1]+(o[1]-t[1])*n]}e.lerp=r})(vp||(vp={}));var Jo;(o=>{function i(n,s){return n[0]===s[0]&&n[1]===s[1]&&n[2]===s[2]}o.isEqual=i;function r(n,s){return[n[0]+s[0],n[1]+s[1],n[2]+s[2]]}o.add=r;function e(n,s){return[n[0]-s[0],n[1]-s[1],n[2]-s[2]]}o.sub=e;function t(n,s,a){return[n[0]+(s[0]-n[0])*a,n[1]+(s[1]-n[1])*a,n[2]+(s[2]-n[2])*a]}o.lerp=t})(Jo||(Jo={}));var bp;(e=>{function i(t,o){return t[0]===o[0]&&t[1]===o[1]&&t[2]===o[2]&&t[3]===o[3]}e.isEqual=i;function r(t,o,n){return[t[0]+(o[0]-t[0])*n,t[1]+(o[1]-t[1])*n,t[2]+(o[2]-t[2])*n,t[3]+(o[3]-t[3])*n]}e.lerp=r})(bp||(bp={}));var Wr;(o=>{o.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function r(n,s){for(let a=0;a<16;a++)if(n[a]!==s[a])return!1;return!0}o.isEqual=r;function e(n){return n??o.identity}o.simplify=e;function t(n,s){let a=s.slice(0);for(var l=0,c=s.length;l<c;l+=3){let u=n[3]*s[l]+n[7]*s[l+1]+n[11]*s[l+2]+n[15];a[l]=(n[0]*s[l]+n[4]*s[l+1]+n[8]*s[l+2]+n[12])/u,a[l+1]=(n[1]*s[l]+n[5]*s[l+1]+n[9]*s[l+2]+n[13])/u,a[l+2]=(n[2]*s[l]+n[6]*s[l+1]+n[10]*s[l+2]+n[14])/u}return a}o.applyMatrix4=t})(Wr||(Wr={}));var Bt;(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 t(c){return{r:Math.round(c.r*255),g:Math.round(c.g*255),b:Math.round(c.b*255),a:1}}l.toRgb255a1=t;function o(c){return{r:c.r,g:c.g,b:c.b}}l.clone=o;function n(c){return c=Math.floor(c),{r:(c>>16&255)/255,g:(c>>8&255)/255,b:(c&255)/255}}l.fromHex=n;function s(c,u){return c.r===u.r&&c.g===u.g&&c.b===u.b}l.equals=s;function a(c,u,m){return{r:c.r+(u.r-c.r)*m,g:c.g+(u.g-c.g)*m,b:c.b+(u.b-c.b)*m}}l.lerp=a})(Bt||(Bt={}));var Gt;(s=>{s.white={...Bt.white,a:1};function r(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=r;function e(a,l){return{...Bt.fromHex(a),a:l}}s.fromHexAndA=e;function t(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=t;function o(a,l){return Bt.equals(a,l)&&a.a===l.a}s.equals=o;function n(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=n})(Gt||(Gt={}));var vs;(r=>r.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(vs||(vs={}));var Sp;(r=>r.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Sp||(Sp={}));var wp;(r=>r.defaultData={control1:[.5,.05],control2:[.1,.3]})(wp||(wp={}));var bs;(r=>{function i(e,t=.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]*t,0,0]},grid:{count:[2,2,2],size:e.map(o=>o*(1+t)),useCenter:!0}}}r.defaultData=i})(bs||(bs={}));var Je=class{modifyById(r,e){let t=this;if(t[r]===void 0)throw new Error("not expected");{let n={...t,[r]:e};return Object.setPrototypeOf(n,Je.prototype),n}}add(r,e){return this.runOp({type:1,id:r,data:e})?.data??this}runOp(r){let e=this;if(r.type===1){let t=e[r.id],o;t===void 0?o={type:2,id:r.id}:o={type:1,id:r.id,data:t};let{id:n,data:s}=r,a={...e,[n]:s};return Object.setPrototypeOf(a,Je.prototype),{data:a,actual:r,reverse:o}}else if(r.type===2){let{id:t}=r,o=e[t];if(o===void 0)return null;{let n={...e};return Object.setPrototypeOf(n,Je.prototype),delete n[t],{data:n,actual:r,reverse:{type:1,id:t,data:o}}}}throw new Error("illegal arg")}};function Hn(i){if(i.deepFreeze!==void 0){i.deepFreeze(i);return}let r=Object.getOwnPropertyNames(i);for(let e of r){let t=i[e];t&&typeof t=="object"&&Hn(t)}return Object.freeze(i)}function Tp(i,r){let e=0;for(;e<i.length&&e<r.length;){if(i[e]<r[e])return-1;if(i[e]>r[e])return 1;e+=1}return e!==r.length?-1:e!==i.length?1:0}var Ss=class extends Error{};function sr(i,r,e){if(i===void 0?r===void 0?(i=0,r=10):i=r-10:r===void 0&&(r=i+10),i>r){let n=i;i=r,r=n}let t=[],o=1/(e+1);for(let n=0;n<e;n++){let s=i+(r-i)*(n+.75+Math.random()*.5)*o;t.push(s)}return t}function ws(i){return i instanceof Uint8Array||i instanceof Uint16Array||i instanceof Uint32Array||i instanceof Int8Array||i instanceof Int16Array||i instanceof Int32Array||i instanceof Float32Array||i instanceof Float64Array}function Np(){return typeof process<"u"}function Cp(i,r){for(let e of i)r(e.id,e.data),Cp(e.children,r)}function Lp(i,r){r(i.id,i.data);for(let e of i.children)Lp(e,r)}var Ut=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Ut.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hn(this[e]),e++}fillCaches0(e,t){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,t);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,t){for(;e;){let o=this.parent(e);if(o===t)return!0;e=o}return!1}data(e){return this.get(e)?.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){return e===null?this:this.get(e)?.children}traverseFrom(e,t){if(e===null)this.traverse(t);else{let o=this.get(e);o&&Lp(o,t)}}traverse(e){Cp(this,e)}totalSize(){return this.fillCaches(),this.objCaches.size}parent(e){return this.fillCaches(),this.parentCaches.get(e)}childrenArray(e){return e===null?this:this.get(e).children}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let n=this.parent(e),s=this.childrenArray(n),a=s.findIndex(u=>u.id===e);if(a<0)throw new Error("not expected");let l=s[a];return s=[...s],s[a]={...l,data:t},this.modifyArrayBy(n,s)}}modifyArrayBy(e,t){let o=e,n=t;for(;o!==null;){let a=n,l=o;if(o=this.parent(o),o===void 0)throw new Error;n=this.childrenArray(o);let c=n.findIndex(u=>u.id===l);if(c<0)throw new Error;n=[...n],n[c]={...n[c],children:a}}Object.setPrototypeOf(n,Ut.prototype);let s=n;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:t}){if(this.get(e)!==void 0)return!0;for(let o of t)if(this.checkDuplicatedIdRec(o))return!0;return!1}addOp(e){let{parent:t,fi:o,id:n,data:s,children:a}=e;if(t!==null&&this.get(t)===void 0)return null;if(this.checkDuplicatedIdRec(e))return null;{let l=t,c=this.childrenArray(l),u={fi:o,id:n,data:s,children:a};return c=[...c,u],c.sort((p,d)=>p.fi-d.fi),e.localIndex=c.indexOf(u),{data:this.modifyArrayBy(l,c),actual:e,reverse:{type:8,id:n}}}}deleteOp(e){let{id:t}=e;if(this.get(t)===null)return null;{let o=this.parent(t);if(o===void 0)return null;let n=this.childrenArray(o),s=n.findIndex(c=>c.id===t);e.localIndex=s,n=[...n];let a=n.splice(s,1)[0];return{data:this.modifyArrayBy(o,n),actual:e,reverse:{type:7,...a,parent:o}}}}moveOp(e){let{parent:t,fi:o,id:n}=e;if(t!==null&&this.get(t)===void 0)return this.deleteOp({type:8,id:n});if(t!==null){let d=t;for(;d!==null;){if(d===void 0)throw new Error;if(d===n)throw new Ss("cyclic tree");d=this.parent(d)}}let s=this.parent(n);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(d=>d.id===n);l=[...l];let u=l.splice(c,1)[0],m=this.modifyArrayBy(s,l);s=t,l=m.childrenArray(s);let p=u.fi;return u={...u,fi:o},l=[...l,u],l.sort((d,f)=>d.fi-f.fi),e.localIndex=l.indexOf(u),m=m.modifyArrayBy(s,l),{data:m,actual:e,reverse:{type:9,parent:a,fi:p,id:n}}}previous(e,t){if(t===null){let n=this.childrenArray(e);return n.length===0?null:n[n.length-1].id}let o=null;for(let n of this.childrenArray(e)){if(n.id===t)return o;o=n.id}return null}traverseSortNext(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),n=o.findIndex(s=>s.id===e)+1;if(n<o.length)return o[n].id;if(t)return this.traverseSortNext(t)}}sortNext(e){let t=this.childrenArray(e);return t.length>0?t[0].id:this.traverseSortNext(e)}traverseSortPrevious(e){let t=this.childrenArray(e);return t.length>0?this.traverseSortPrevious(t[t.length-1].id):e}sortPrevious(e){let t=this.parent(e);if(t!==void 0){let o=this.childrenArray(t),n=o.findIndex(s=>s.id===e)-1;return n>=0?this.traverseSortPrevious(o[n].id):t}}getAllSorted(e){let t=[];for(let o of e){let n=this.getWithSortKey(o.id);n!==void 0&&t.push({...o,...n})}t.sort((o,n)=>Tp(o.sortKey,n.sortKey));for(let o of t)delete o.sortKey;return t}getWithSortKey(e){var t=e;let o=[],n=this.get(t),s=n;if(n!==void 0){for(;t;)o.splice(0,0,n.fi),t=this.parent(t),t!==null&&(n=this.get(t));return{...s,sortKey:o}}}insertBeforeHelper(e,t,o){return this.insertAfterHelper(e,this.previous(e,t),o)}insertAfterHelper(e,t,o){let n=this.childrenArray(e);if(t===null){if(n.length===0)return sr(0,o,o);{let s=n[0].fi;return sr(s-o,s,o)}}else{let s=this.get(t);if(s===void 0||this.parent(t)!==e)throw new Error("illegal args");let a=n.find(l=>l.fi>s.fi);if(a===void 0){let l=n[n.length-1].fi;return sr(l,l+o,o)}else return sr(s.fi,a.fi,o)}}};var Ts;(r=>{function i(e,t){if(Array.isArray(e)){let o=t.props,n={},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");n[l]=s[c],s[c]=o[l],a=!0}return a?{data:s,actual:t,reverse:{type:0,props:n}}:null}else{let o=t.props,n={},s={...e},a=!1;if(o)for(let l of Object.keys(o)){n[l]=s[l];let c=o[l];c===void 0?delete s[l]:s[l]=c,a=!0}return a?{data:s,actual:t,reverse:{type:0,props:n}}:null}}r.runOp=i})(Ts||(Ts={}));var Be=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Be.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hn(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){return this.get(e)?.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,t){if(this.get(e)===void 0)throw new Error("not expected");{let n=this,s=n.findIndex(c=>c.id===e);if(s<0)throw new Error("not expected");let a=n[s];return n=[...n],n[s]={...a,data:t},this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Be.prototype);let t=e;return Np()||t.fillCaches(),t}runOp(e){switch(e.type){case 4:return this.addOp(e);case 5:return this.deleteOp(e);case 6:return this.moveOp(e)}}addOp(e){let{fi:t,id:o,data:n}=e,s=this,a={fi:t,id:o,data:n};return s=[...s,a],s.sort((c,u)=>c.fi-u.fi),e.localIndex=s.indexOf(a),{data:this.modifyArrayBy(s),actual:e,reverse:{type:5,id:o}}}deleteOp(e){let{id:t}=e,o=this,n=o.findIndex(l=>l.id===t);if(n===-1)return null;e.localIndex=n,o=[...o];let s=o.splice(n,1)[0];return{data:this.modifyArrayBy(o),actual:e,reverse:{type:4,...s}}}moveOp(e){let{fi:t,id:o}=e,n=this;n=[...n];let s=n.findIndex(u=>u.id===o);if(s===-1)return null;let a=n[s].fi,l={...n[s],fi:t};return n[s]=l,n.sort((u,m)=>u.fi-m.fi),e.localIndex=n.indexOf(l),{data:this.modifyArrayBy(n),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 t=null;for(let o of this){if(o.id===e)return t;t=o.id}return null}insertBeforeHelper(e,t){return this.insertAfterHelper(this.previous(e),t)}insertAfterHelper(e,t){let o=this;if(e===null){if(o.length===0)return sr(0,t,t);{let n=o[0].fi;return sr(n-t,n,t)}}else{let n=this.get(e);if(n===void 0)throw new Error("illegal args");let s=o.find(a=>a.fi>n.fi);if(s===void 0){let a=o[o.length-1].fi;return sr(a,a+t,t)}else return sr(n.fi,s.fi,t)}}};var Ip=Symbol(),Cs=Symbol(),Zo=class{reportOp(r,e){let t=this;if(e===null)return;t._current=e.data;let o=[];for(;!(t instanceof Ns);){let n=t._path,s=t._current;if(n!==""&&o.splice(0,0,n),t=t._parent,t===null)return;t.update(n,s)}t.push(o,r,e.actual,e.reverse)}deleteChildren(r){if(this._children){let e=this._children[r];if(e){let t=e[Cs];t&&t(),delete this._children[r]}}}},Va=class extends Zo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){if(Array.isArray(this._current)){if(typeof r=="string"&&(r=parseInt(r),isNaN(r)))throw new Error("Invalid path");this._current=[...this._current],this._current[r]=e}else this._current={...this._current,[r]:e}}runOp(r){this.reportOp(r,Ts.runOp(this._current,r))}},Fa=class extends Zo{constructor(r,e,t){super(),this._parent=r,this._path=e,this._current=t}update(r,e){this._current={...this._current,[r]:e},Object.setPrototypeOf(this._current,Je.prototype)}runOp(r){this.reportOp(r,this._current.runOp(r))}},Pp={get(i,r){if(r===Cs)return()=>{i._parent=null};if(r===Ip)return i._current;let{_current:e,_children:t}=i;if(r==="push"&&Array.isArray(e))throw new Error("not supported to expand array");let o=t===void 0?void 0:t[r];if(o!==void 0)return o;let n=e[r],s=Ls(i,r,n);return s!==n?(t===void 0&&(t={},i._children=t),t[r]=s,s):n},has(i,r){return r in i._current},ownKeys(i){return Reflect.ownKeys(i._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(i){return Object.getPrototypeOf(i._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(i,r){let e=i._current,t=Reflect.getOwnPropertyDescriptor(e,r);return t&&{writable:!0,configurable:!0,enumerable:t.enumerable,value:e[r]}}},Z0={...Pp,set(i,r,e){let t={type:0,props:{[r]:ka(e)??e}};return i.deleteChildren(r),i.runOp(t),!0},deleteProperty(i,r){let e={type:0,props:{[r]:void 0}};return i.deleteChildren(r),i.runOp(e),!0}},ev={...Pp,set(i,r,e){return e===void 0?this.deleteProperty(i,r):(i.deleteChildren(r),i.runOp({type:1,id:r,data:e})),!0},deleteProperty(i,r){return i.runOp({type:2,id:r}),!0}},en=class extends Zo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Cs]=()=>{this._parent=null}}unproxy(){return this._current}update(r,e){this._current=this._current.modifyById(r,e)}runOp(r){this.reportOp(r,this._current.runOp(r))}randomId(){return this._current.randomId()}isDescendantOf(r,e){return this._current.isDescendantOf(r,e)}childrenOf(r){return this._current.childrenOf(r)}traverse(r){return this._current.traverse(r)}get(r){return this._current.get(r)}parent(r){return this._current.parent(r)}traverse(r){this._current.traverse((e,t)=>{r(e,this.data(e))})}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let n=e.get(r)?.data,s=Ls(this,r,n);return s!==n?(t===void 0&&(t={},this._children=t),t[r]=s,s):n}add(r,e,t,o,n){this.runOp({type:7,parent:r,fi:e,id:t,data:o,children:n})}move(r,e,t){this.runOp({type:9,parent:r,fi:e,id:t})}insertAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let n=0;n<t.length;n++){let s=t[n];this.add(r,o[n],s.id,s.data,s.children)}}insertBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let n=0;n<t.length;n++){let s=t[n];this.add(r,o[n],s.id,s.data,s.children)}}moveAfter(r,e,t){let o=this._current.insertAfterHelper(r,e,t.length);for(let n=0;n<t.length;n++){let s=t[n];this.move(r,o[n],s)}}moveBefore(r,e,t){let o=this._current.insertBeforeHelper(r,e,t.length);for(let n=0;n<t.length;n++){let s=t[n];this.move(r,o[n],s)}}delete(r){this.deleteChildren(r),this.runOp({type:8,id:r})}sortNext(r){return this._current.sortNext(r)}sortPrevious(r){return this._current.sortPrevious(r)}getAllSorted(r){return this._current.getAllSorted(r)}},tn=class extends Zo{constructor(r,e,t){super(),this._children={},this._parent=r,this._path=e,this._current=t,this[Cs]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(r){let e=this.length;for(let t=0;t<e;t++){let o=this._current[t].id;r(this.data(this._current[t].id),o)}}update(r,e){this._current=this._current.modifyById(r,e)}randomId(){return this._current.randomId()}get(r){return{...this._current.get(r),data:this.data(r)}}data(r){let{_current:e,_children:t}=this,o=t===void 0?void 0:t[r];if(o!==void 0)return o;let n=e.get(r)?.data,s=Ls(this,r,n);return s!==n?(t===void 0&&(t={},this._children=t),t[r]=s,s):n}runOp(r){this.reportOp(r,this._current.runOp(r))}add(r,e,t){this.runOp({type:4,fi:r,id:e,data:t})}move(r,e){this.runOp({type:6,fi:r,id:e})}insertAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(t[o],n.id,n.data)}}insertBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.add(t[o],n.id,n.data)}}moveAfter(r,e){let t=this._current.insertAfterHelper(r,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(t[o],n)}}moveBefore(r,e){let t=this._current.insertBeforeHelper(r,e.length);for(let o=0;o<e.length;o++){let n=e[o];this.move(t[o],n)}}delete(r){this.deleteChildren(r),this.runOp({type:5,id:r})}};function za(i,r,e){if(i.length>0){let t=i[i.length-1];if(t.type===0&&r.type===0&&Is.equal(t.path,e)){Object.assign(t.props,r.props);return}}i.push({...r,path:e})}var Ns=class{constructor(r){this.ts=[],this.actual=[],this.reverse=[],this._current=r}update(r,e){if(r!=="")throw new Error("");this._current=e}push(r,e,t,o){za(this.ts,e,r),za(this.actual,t,r),za(this.reverse,o,r)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Ls(i,r,e){return e instanceof Ut?new en(i,r,e):e instanceof Be?new tn(i,r,e):e instanceof Je?new Proxy(new Fa(i,r,e),ev):e!==null&&typeof e=="object"?ws(e)?e:new Proxy(new Va(i,r,e),Z0):e}function Ua(i){let r=new Ns(i);return[Ls(r,"",i),r]}function ja(i,r){let[e,t]=Ua(i);return r(e),t.result()}function ka(i){return i instanceof en||i instanceof tn?i._current:i!==null&&typeof i=="object"?i[Ip]:i}var Is;(t=>{function i(o,n){if(n.length===o.length)for(var s=0;s<o.length;){if(o[s]!==n[s])return!1;s+=1}else return!1;return!0}t.equal=i;function r(o,n,s){let a=e(s,o);if(a!==void 0&&typeof a=="object"&&a!==null){let l={...n};return Object.keys(a).forEach(c=>{delete l[c]}),l}else return n}t.removeOverridden=r;function e(o,n,s=0){if(n.length<=s)return o;if((o instanceof Ut||o instanceof en)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Be||o instanceof tn)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if(typeof n[s]=="number"&&Array.isArray(o))return e(o[n[s]],n,s+1);if(typeof n[s]=="string"&&typeof o=="object")return e(o[n[s]],n,s+1)}t.zoom=e})(Is||(Is={}));var Ps=class{},Wn=class extends Ps{constructor(e){super();this.id=e}},qn=class extends Ps{constructor(e){super();this.data=e}};var Wa;try{Wa=new TextDecoder}catch{}var te,$r,T=0;var Gp=[],qa=Gp,$a=0,Lt={},Te,qr,jt=0,ar=0,Rt,Or,vt=[],Pe,Ap={useRecords:!1,mapsAsObjects:!0},$n=class{},Ya=new $n;Ya.name="MessagePack 0xC1";var rn=!1,lr=class{constructor(r){r&&(r.useRecords===!1&&r.mapsAsObjects===void 0&&(r.mapsAsObjects=!0),r.structures?r.structures.sharedLength=r.structures.length:r.getStructures&&((r.structures=[]).uninitialized=!0,r.structures.sharedLength=0)),Object.assign(this,r)}unpack(r,e){if(te)return Up(()=>(Ms(),this?this.unpack(r,e):lr.prototype.unpack.call(Ap,r,e)));$r=e>-1?e:r.length,T=0,$a=0,ar=0,qr=null,qa=Gp,Rt=null,te=r;try{Pe=r.dataView||(r.dataView=new DataView(r.buffer,r.byteOffset,r.byteLength))}catch(t){throw te=null,r instanceof Uint8Array?t:new Error("Source must be a Uint8Array or Buffer but was a "+(r&&typeof r=="object"?r.constructor.name:typeof r))}if(this instanceof lr){if(Lt=this,this.structures)return Te=this.structures,As();(!Te||Te.length>0)&&(Te=[])}else Lt=Ap,(!Te||Te.length>0)&&(Te=[]);return As()}unpackMultiple(r,e){let t,o=0;try{rn=!0;let n=r.length,s=this?this.unpack(r,n):Ds.unpack(r,n);if(e){for(e(s);T<n;)if(o=T,e(As())===!1)return}else{for(t=[s];T<n;)o=T,t.push(As());return t}}catch(n){throw n.lastPosition=o,n.values=t,n}finally{rn=!1,Ms()}}_mergeStructures(r,e){r=r||[];for(let t=0,o=r.length;t<o;t++){let n=r[t];n&&(n.isShared=!0,t>=32&&(n.highByte=t-32>>5))}r.sharedLength=r.length;for(let t in e||[])if(t>=0){let o=r[t],n=e[t];n&&(o&&((r.restoreStructures||(r.restoreStructures=[]))[t]=o),r[t]=n)}return this.structures=r}decode(r,e){return this.unpack(r,e)}};function As(){try{if(!Lt.trusted&&!rn){let r=Te.sharedLength||0;r<Te.length&&(Te.length=r)}let i=ze();if(T==$r)Te.restoreStructures&&Mp(),Te=null,te=null,Or&&(Or=null);else if(T>$r){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}else if(!rn)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Te.restoreStructures&&Mp(),Ms(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Mp(){for(let i in Te.restoreStructures)Te[i]=Te.restoreStructures[i];Te.restoreStructures=null}function ze(){let i=te[T++];if(i<160)if(i<128){if(i<64)return i;{let r=Te[i&63]||Lt.getStructures&&Rp()[i&63];return r?(r.read||(r.read=Ka(r,i&63)),r.read()):i}}else if(i<144)if(i-=128,Lt.mapsAsObjects){let r={};for(let e=0;e<i;e++)r[Vp()]=ze();return r}else{let r=new Map;for(let e=0;e<i;e++)r.set(ze(),ze());return r}else{i-=144;let r=new Array(i);for(let e=0;e<i;e++)r[e]=ze();return r}else if(i<192){let r=i-160;if(ar>=T)return qr.slice(T-jt,(T+=r)-jt);if(ar==0&&$r<140){let e=r<16?Qa(r):zp(r);if(e!=null)return e}return Xa(r)}else{let r;switch(i){case 192:return null;case 193:return Rt?(r=ze(),r>0?Rt[1].slice(Rt.position1,Rt.position1+=r):Rt[0].slice(Rt.position0,Rt.position0-=r)):Ya;case 194:return!1;case 195:return!0;case 196:return Ha(te[T++]);case 197:return r=Pe.getUint16(T),T+=2,Ha(r);case 198:return r=Pe.getUint32(T),T+=4,Ha(r);case 199:return mo(te[T++]);case 200:return r=Pe.getUint16(T),T+=2,mo(r);case 201:return r=Pe.getUint32(T),T+=4,mo(r);case 202:if(r=Pe.getFloat32(T),Lt.useFloat32>2){let e=_s[(te[T]&127)<<1|te[T+1]>>7];return T+=4,(e*r+(r>0?.5:-.5)>>0)/e}return T+=4,r;case 203:return r=Pe.getFloat64(T),T+=8,r;case 204:return te[T++];case 205:return r=Pe.getUint16(T),T+=2,r;case 206:return r=Pe.getUint32(T),T+=4,r;case 207:return Lt.int64AsNumber?(r=Pe.getUint32(T)*4294967296,r+=Pe.getUint32(T+4)):r=Pe.getBigUint64(T),T+=8,r;case 208:return Pe.getInt8(T++);case 209:return r=Pe.getInt16(T),T+=2,r;case 210:return r=Pe.getInt32(T),T+=4,r;case 211:return Lt.int64AsNumber?(r=Pe.getInt32(T)*4294967296,r+=Pe.getUint32(T+4)):r=Pe.getBigInt64(T),T+=8,r;case 212:if(r=te[T++],r==114)return Bp(te[T++]&63);{let e=vt[r];if(e)return e.read?(T++,e.read(ze())):e.noBuffer?(T++,e()):e(te.subarray(T,++T));throw new Error("Unknown extension "+r)}case 213:return r=te[T],r==114?(T++,Bp(te[T++]&63,te[T++])):mo(2);case 214:return mo(4);case 215:return mo(8);case 216:return mo(16);case 217:return r=te[T++],ar>=T?qr.slice(T-jt,(T+=r)-jt):rv(r);case 218:return r=Pe.getUint16(T),T+=2,ar>=T?qr.slice(T-jt,(T+=r)-jt):ov(r);case 219:return r=Pe.getUint32(T),T+=4,ar>=T?qr.slice(T-jt,(T+=r)-jt):nv(r);case 220:return r=Pe.getUint16(T),T+=2,_p(r);case 221:return r=Pe.getUint32(T),T+=4,_p(r);case 222:return r=Pe.getUint16(T),T+=2,Dp(r);case 223:return r=Pe.getUint32(T),T+=4,Dp(r);default:if(i>=224)return i-256;if(i===void 0){let e=new Error("Unexpected end of MessagePack data");throw e.incomplete=!0,e}throw new Error("Unknown MessagePack token "+i)}}}var tv=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function Ka(i,r){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>tv.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(ze);return i.highByte===0&&(i.read=Op(r,i.read)),o()}let t={};for(let o=0,n=i.length;o<n;o++){let s=i[o];t[s]=ze()}return t}return e.count=0,i.highByte===0?Op(r,e):e}var Op=(i,r)=>function(){let e=te[T++];if(e===0)return r();let t=i<32?-(i+(e<<5)):i+(e<<5),o=Te[t]||Rp()[t];if(!o)throw new Error("Record id is not defined for "+t);return o.read||(o.read=Ka(o,i)),o.read()};function Rp(){let i=Up(()=>(te=null,Lt.getStructures()));return Te=Lt._mergeStructures(i,Te)}var Xa=Os,rv=Os,ov=Os,nv=Os;function Os(i){let r;if(i<16&&(r=Qa(i)))return r;if(i>64&&Wa)return Wa.decode(te.subarray(T,T+=i));let e=T+i,t=[];for(r="";T<e;){let o=te[T++];if((o&128)===0)t.push(o);else if((o&224)===192){let n=te[T++]&63;t.push((o&31)<<6|n)}else if((o&240)===224){let n=te[T++]&63,s=te[T++]&63;t.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=te[T++]&63,s=te[T++]&63,a=te[T++]&63,l=(o&7)<<18|n<<12|s<<6|a;l>65535&&(l-=65536,t.push(l>>>10&1023|55296),l=56320|l&1023),t.push(l)}else t.push(o);t.length>=4096&&(r+=it.apply(String,t),t.length=0)}return t.length>0&&(r+=it.apply(String,t)),r}function _p(i){let r=new Array(i);for(let e=0;e<i;e++)r[e]=ze();return r}function Dp(i){if(Lt.mapsAsObjects){let r={};for(let e=0;e<i;e++)r[Vp()]=ze();return r}else{let r=new Map;for(let e=0;e<i;e++)r.set(ze(),ze());return r}}var it=String.fromCharCode;function zp(i){let r=T,e=new Array(i);for(let t=0;t<i;t++){let o=te[T++];if((o&128)>0){T=r;return}e[t]=o}return it.apply(String,e)}function Qa(i){if(i<4)if(i<2){if(i===0)return"";{let r=te[T++];if((r&128)>1){T-=1;return}return it(r)}}else{let r=te[T++],e=te[T++];if((r&128)>0||(e&128)>0){T-=2;return}if(i<3)return it(r,e);let t=te[T++];if((t&128)>0){T-=3;return}return it(r,e,t)}else{let r=te[T++],e=te[T++],t=te[T++],o=te[T++];if((r&128)>0||(e&128)>0||(t&128)>0||(o&128)>0){T-=4;return}if(i<6){if(i===4)return it(r,e,t,o);{let n=te[T++];if((n&128)>0){T-=5;return}return it(r,e,t,o,n)}}else if(i<8){let n=te[T++],s=te[T++];if((n&128)>0||(s&128)>0){T-=6;return}if(i<7)return it(r,e,t,o,n,s);let a=te[T++];if((a&128)>0){T-=7;return}return it(r,e,t,o,n,s,a)}else{let n=te[T++],s=te[T++],a=te[T++],l=te[T++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){T-=8;return}if(i<10){if(i===8)return it(r,e,t,o,n,s,a,l);{let c=te[T++];if((c&128)>0){T-=9;return}return it(r,e,t,o,n,s,a,l,c)}}else if(i<12){let c=te[T++],u=te[T++];if((c&128)>0||(u&128)>0){T-=10;return}if(i<11)return it(r,e,t,o,n,s,a,l,c,u);let m=te[T++];if((m&128)>0){T-=11;return}return it(r,e,t,o,n,s,a,l,c,u,m)}else{let c=te[T++],u=te[T++],m=te[T++],p=te[T++];if((c&128)>0||(u&128)>0||(m&128)>0||(p&128)>0){T-=12;return}if(i<14){if(i===12)return it(r,e,t,o,n,s,a,l,c,u,m,p);{let d=te[T++];if((d&128)>0){T-=13;return}return it(r,e,t,o,n,s,a,l,c,u,m,p,d)}}else{let d=te[T++],f=te[T++];if((d&128)>0||(f&128)>0){T-=14;return}if(i<15)return it(r,e,t,o,n,s,a,l,c,u,m,p,d,f);let g=te[T++];if((g&128)>0){T-=15;return}return it(r,e,t,o,n,s,a,l,c,u,m,p,d,f,g)}}}}}function Ha(i){return Lt.copyBuffers?Uint8Array.prototype.slice.call(te,T,T+=i):te.subarray(T,T+=i)}function mo(i){let r=te[T++];if(vt[r])return vt[r](te.subarray(T,T+=i));throw new Error("Unknown extension type "+r)}var Ep=new Array(4096);function Vp(){let i=te[T++];if(i>=160&&i<192){if(i=i-160,ar>=T)return qr.slice(T-jt,(T+=i)-jt);if(!(ar==0&&$r<180))return Xa(i)}else return T--,ze();let r=(i<<5^(i>1?Pe.getUint16(T):i>0?te[T]:0))&4095,e=Ep[r],t=T,o=T+i-3,n,s=0;if(e&&e.bytes==i){for(;t<o;){if(n=Pe.getUint32(t),n!=e[s++]){t=1879048192;break}t+=4}for(o+=3;t<o;)if(n=te[t++],n!=e[s++]){t=1879048192;break}if(t===o)return T=t,e.string;o-=3,t=T}for(e=[],Ep[r]=e,e.bytes=i;t<o;)n=Pe.getUint32(t),e.push(n),t+=4;for(o+=3;t<o;)n=te[t++],e.push(n);let a=i<16?Qa(i):zp(i);return a!=null?e.string=a:e.string=Xa(i)}var Bp=(i,r)=>{var e=ze();let t=i;r!==void 0&&(i=i<32?-((r<<5)+i):(r<<5)+i,e.highByte=r);let o=Te[i];return o&&o.isShared&&((Te.restoreStructures||(Te.restoreStructures=[]))[i]=o),Te[i]=e,e.read=Ka(e,t),e.read()},Fp=typeof self=="object"?self:global;vt[0]=()=>{};vt[0].noBuffer=!0;vt[101]=()=>{let i=ze();return(Fp[i[0]]||Error)(i[1])};vt[105]=i=>{let r=Pe.getUint32(T-4);Or||(Or=new Map);let e=te[T],t;e>=144&&e<160||e==220||e==221?t=[]:t={};let o={target:t};Or.set(r,o);let n=ze();return o.used?Object.assign(t,n):(o.target=n,n)};vt[112]=i=>{let r=Pe.getUint32(T-4),e=Or.get(r);return e.used=!0,e.target};vt[115]=()=>new Set(ze());var Ja=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");vt[116]=i=>{let r=i[0],e=Ja[r];if(!e)throw new Error("Could not find typed array for code "+r);return new Fp[e](Uint8Array.prototype.slice.call(i,1).buffer)};vt[120]=()=>{let i=ze();return new RegExp(i[0],i[1])};vt[98]=i=>{let r=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=T;T+=r-4,Rt=[ze(),ze()],Rt.position0=0,Rt.position1=0;let t=T;T=e;try{return ze()}finally{T=t}};vt[255]=i=>i.length==4?new Date((i[0]*16777216+(i[1]<<16)+(i[2]<<8)+i[3])*1e3):i.length==8?new Date(((i[0]<<22)+(i[1]<<14)+(i[2]<<6)+(i[3]>>2))/1e6+((i[3]&3)*4294967296+i[4]*16777216+(i[5]<<16)+(i[6]<<8)+i[7])*1e3):i.length==12?new Date(((i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3])/1e6+((i[4]&128?-281474976710656:0)+i[6]*1099511627776+i[7]*4294967296+i[8]*16777216+(i[9]<<16)+(i[10]<<8)+i[11])*1e3):new Date("invalid");function Up(i){let r=$r,e=T,t=$a,o=jt,n=ar,s=qr,a=qa,l=Or,c=Rt,u=new Uint8Array(te.slice(0,$r)),m=Te,p=Te.slice(0,Te.length),d=Lt,f=rn,g=i();return $r=r,T=e,$a=t,jt=o,ar=n,qr=s,qa=a,Or=l,Rt=c,te=u,rn=f,Te=m,Te.splice(0,Te.length,...p),Lt=d,Pe=new DataView(te.buffer,te.byteOffset,te.byteLength),g}function Ms(){te=null,Or=null,Te=null}function jp(i){i.unpack?vt[i.type]=i.unpack:vt[i.type]=i}var _s=new Array(147);for(let i=0;i<256;i++)_s[i]=+("1e"+Math.floor(45.15-i*.30103));var Ds=new lr({useRecords:!1}),iv=Ds.unpack,sv=Ds.unpackMultiple,av=Ds.unpack,Es={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},lv=new Float32Array(1),LP=new Uint8Array(lv.buffer,0,4);var Bs;try{Bs=new TextEncoder}catch{}var Gs,el,Rs=typeof Buffer<"u",Za=Rs?Buffer.allocUnsafeSlow:Uint8Array,qp=Rs?Buffer:Uint8Array,kp=Rs?4294967296:2144337920,R,ke,C=0,cr,ur=null,cv=/[\u0080-\uFFFF]/,Xn=Symbol("record-id"),fo=class extends lr{constructor(r){super(r),this.offset=0;let e,t,o,n,s,a,l=0,c=qp.prototype.utf8Write?function(h,_,N){return R.utf8Write(h,_,N)}:Bs&&Bs.encodeInto?function(h,_){return Bs.encodeInto(h,R.subarray(_)).written}:!1,u=this;r||(r={});let m=r&&r.sequential,p=r.structures||r.saveStructures,d=r.maxSharedStructures;if(d==null&&(d=p?32:0),d>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=r.maxOwnStructures;f==null&&(f=p?32:64),m&&!r.saveStructures&&(this.structures=[]);let g=d>32||f+d>64,x=d+64,y=d+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],P=0,S=0;this.pack=this.encode=function(h,_){if(R||(R=new Za(8192),ke=new DataView(R.buffer,0,8192),C=0),cr=R.length-10,cr-C<2048?(R=new Za(R.length),ke=new DataView(R.buffer,0,R.length),cr=R.length-10,C=0):C=C+7&2147483640,t=C,a=u.structuredClone?new Map:null,u.bundleStrings?(ur=["",""],R[C++]=214,R[C++]=98,ur.position=C-t,C+=4):ur=null,o=u.structures,o){o.uninitialized&&(o=u._mergeStructures(u.getStructures()));let N=o.sharedLength||0;if(N>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 I=0;I<N;I++){let L=o[I];if(!L)continue;let A,k=o.transitions;for(let W=0,ne=L.length;W<ne;W++){let ue=L[W];A=k[ue],A||(A=k[ue]=Object.create(null)),k=A}k[Xn]=I+64}l=N}m||(o.nextId=N+64)}n&&(n=!1),s=o||[];try{if(b(h),ur){ke.setUint32(ur.position+t,C-ur.position-t);let N=ur;ur=null,b(N[0]),b(N[1])}if(u.offset=C,a&&a.idsToInsert){C+=a.idsToInsert.length*6,C>cr&&w(C),u.offset=C;let N=pv(R.subarray(t,C),a.idsToInsert);return a=null,N}return _&Xp?(R.start=t,R.end=C,R):R.subarray(t,C)}finally{if(o){if(S<10&&S++,P>1e4)o.transitions=null,S=0,P=0,v.length>0&&(v=[]);else if(v.length>0&&!m){for(let N=0,I=v.length;N<I;N++)v[N][Xn]=0;v=[]}if(n&&u.saveStructures){let N=o.sharedLength||d;o.length>N&&(o=o.slice(0,N));let I=R.subarray(t,C);return u.saveStructures(o,l)===!1?(u._mergeStructures(u.getStructures()),u.pack(h)):(l=N,I)}}_&xv&&(C=t)}};let b=h=>{C>cr&&(R=w(C));var _=typeof h,N;if(_==="string"){let I=h.length;if(ur&&I>=8&&I<4096){let k=cv.test(h);ur[k?0:1]+=h,R[C++]=193,b(k?-I:I);return}let L;I<32?L=1:I<256?L=2:I<65536?L=3:L=5;let A=I*3;if(C+A>cr&&(R=w(C+A)),I<64||!c){let k,W,ne,ue=C+L;for(k=0;k<I;k++)W=h.charCodeAt(k),W<128?R[ue++]=W:W<2048?(R[ue++]=W>>6|192,R[ue++]=W&63|128):(W&64512)===55296&&((ne=h.charCodeAt(k+1))&64512)===56320?(W=65536+((W&1023)<<10)+(ne&1023),k++,R[ue++]=W>>18|240,R[ue++]=W>>12&63|128,R[ue++]=W>>6&63|128,R[ue++]=W&63|128):(R[ue++]=W>>12|224,R[ue++]=W>>6&63|128,R[ue++]=W&63|128);N=ue-C-L}else N=c(h,C+L,A);N<32?R[C++]=160|N:N<256?(L<2&&R.copyWithin(C+2,C+1,C+1+N),R[C++]=217,R[C++]=N):N<65536?(L<3&&R.copyWithin(C+3,C+2,C+2+N),R[C++]=218,R[C++]=N>>8,R[C++]=N&255):(L<5&&R.copyWithin(C+5,C+3,C+3+N),R[C++]=219,ke.setUint32(C,N),C+=4),C+=N}else if(_==="number")if(h>>>0===h)h<64?R[C++]=h:h<256?(R[C++]=204,R[C++]=h):h<65536?(R[C++]=205,R[C++]=h>>8,R[C++]=h&255):(R[C++]=206,ke.setUint32(C,h),C+=4);else if(h>>0===h)h>=-32?R[C++]=256+h:h>=-128?(R[C++]=208,R[C++]=h+256):h>=-32768?(R[C++]=209,ke.setInt16(C,h),C+=2):(R[C++]=210,ke.setInt32(C,h),C+=4);else{let I;if((I=this.useFloat32)>0&&h<4294967296&&h>=-2147483648){R[C++]=202,ke.setFloat32(C,h);let L;if(I<4||(L=h*_s[(R[C]&127)<<1|R[C+1]>>7])>>0===L){C+=4;return}else C--}R[C++]=203,ke.setFloat64(C,h),C+=8}else if(_==="object")if(!h)R[C++]=192;else{if(a){let L=a.get(h);if(L){if(!L.id){let A=a.idsToInsert||(a.idsToInsert=[]);L.id=A.push(L)}R[C++]=214,R[C++]=112,ke.setUint32(C,L.id),C+=4;return}else a.set(h,{offset:C-t})}let I=h.constructor;if(I===Object)E(h,!0);else if(I===Array){N=h.length,N<16?R[C++]=144|N:N<65536?(R[C++]=220,R[C++]=N>>8,R[C++]=N&255):(R[C++]=221,ke.setUint32(C,N),C+=4);for(let L=0;L<N;L++)b(h[L])}else if(I===Map){N=h.size,N<16?R[C++]=128|N:N<65536?(R[C++]=222,R[C++]=N>>8,R[C++]=N&255):(R[C++]=223,ke.setUint32(C,N),C+=4);for(let[L,A]of h)b(L),b(A)}else{for(let L=0,A=Gs.length;L<A;L++){let k=el[L];if(h instanceof k){let W=Gs[L];if(W.write){W.type&&(R[C++]=212,R[C++]=W.type,R[C++]=0),b(W.write.call(this,h));return}let ne=R,ue=ke,se=C;R=null;let K;try{K=W.pack.call(this,h,U=>(R=ne,ne=null,C+=U,C>cr&&w(C),{target:R,targetView:ke,position:C-U}),b)}finally{ne&&(R=ne,ke=ue,C=se,cr=R.length-10)}K&&(K.length+C>cr&&w(K.length+C),C=uv(K,R,C,W.type));return}}E(h,!h.hasOwnProperty)}}else if(_==="boolean")R[C++]=h?195:194;else if(_==="bigint"){if(h<BigInt(1)<<BigInt(63)&&h>=-(BigInt(1)<<BigInt(63)))R[C++]=211,ke.setBigInt64(C,h);else if(h<BigInt(1)<<BigInt(64)&&h>0)R[C++]=207,ke.setBigUint64(C,h);else if(this.largeBigIntToFloat)R[C++]=203,ke.setFloat64(C,Number(h));else throw new RangeError(h+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");C+=8}else if(_==="undefined")this.encodeUndefinedAsNil?R[C++]=192:(R[C++]=212,R[C++]=0,R[C++]=0);else if(_==="function")b(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+_)},E=this.useRecords===!1?this.variableMapSize?h=>{let _=Object.keys(h),N=_.length;N<16?R[C++]=128|N:N<65536?(R[C++]=222,R[C++]=N>>8,R[C++]=N&255):(R[C++]=223,ke.setUint32(C,N),C+=4);let I;for(let L=0;L<N;L++)b(I=_[L]),b(h[I])}:(h,_)=>{R[C++]=222;let N=C-t;C+=2;let I=0;for(let L in h)(_||h.hasOwnProperty(L))&&(b(L),b(h[L]),I++);R[N+++t]=I>>8,R[N+t]=I&255}:h=>{let _=Object.keys(h),N,I=s.transitions||(s.transitions=Object.create(null)),L=0;for(let k=0,W=_.length;k<W;k++){let ne=_[k];N=I[ne],N||(N=I[ne]=Object.create(null),L++),I=N}let A=I[Xn];if(A)A>=96&&g?(R[C++]=((A-=96)&31)+96,R[C++]=A>>5):R[C++]=A;else{A=s.nextId,A||(A=64),A<x&&this.shouldShareStructure&&!this.shouldShareStructure(_)?(A=s.nextOwnId,A<y||(A=x),s.nextOwnId=A+1):(A>=y&&(A=x),s.nextId=A+1);let k=_.highByte=A>=96&&g?A-96>>5:-1;I[Xn]=A,s[A-64]=_,A<x?(_.isShared=!0,s.sharedLength=A-63,n=!0,k>=0?(R[C++]=(A&31)+96,R[C++]=k):R[C++]=A):(k>=0?(R[C++]=213,R[C++]=114,R[C++]=(A&31)+96,R[C++]=k):(R[C++]=212,R[C++]=114,R[C++]=A),L&&(P+=S*L),v.length>=f&&(v.shift()[Xn]=0),v.push(I),b(_))}for(let k=0,W=_.length;k<W;k++)b(h[_[k]])},w=h=>{let _;if(h>16777216){if(h-t>kp)throw new Error("Packed buffer would be larger than maximum buffer size");_=Math.min(kp,Math.round(Math.max((h-t)*(h>67108864?1.25:2),4194304)/4096)*4096)}else _=(Math.max(h-t<<2,R.length-1)>>12)+1<<12;let N=new Za(_);return ke=new DataView(N.buffer,0,_),R.copy?R.copy(N,0,t,h):N.set(R.slice(t,h)),C-=t,t=0,cr=N.length-10,R=N}}useBuffer(r){R=r,ke=new DataView(R.buffer,R.byteOffset,R.byteLength),C=0}};el=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,$n];Gs=[{pack(i,r,e){let t=i.getTime()/1e3;if((this.useTimestamp32||i.getMilliseconds()===0)&&t>=0&&t<4294967296){let{target:o,targetView:n,position:s}=r(6);o[s++]=214,o[s++]=255,n.setUint32(s,t)}else if(t>0&&t<17179869184){let{target:o,targetView:n,position:s}=r(10);o[s++]=215,o[s++]=255,n.setUint32(s,i.getMilliseconds()*4e6+(t/1e3/4294967296>>0)),n.setUint32(s+4,t)}else if(isNaN(t)){if(this.onInvalidDate)return r(0),e(this.onInvalidDate());let{target:o,targetView:n,position:s}=r(3);o[s++]=212,o[s++]=255,o[s++]=255}else{let{target:o,targetView:n,position:s}=r(15);o[s++]=199,o[s++]=12,o[s++]=255,n.setUint32(s,i.getMilliseconds()*1e6),n.setBigInt64(s+4,BigInt(Math.floor(t)))}}},{pack(i,r,e){let t=Array.from(i),{target:o,position:n}=r(this.structuredClone?3:0);this.structuredClone&&(o[n++]=212,o[n++]=115,o[n++]=0),e(t)}},{pack(i,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=101,t[o++]=0),e([i.name,i.message])}},{pack(i,r,e){let{target:t,position:o}=r(this.structuredClone?3:0);this.structuredClone&&(t[o++]=212,t[o++]=120,t[o++]=0),e([i.source,i.flags])}},{pack(i,r){this.structuredClone?Hp(i,16,r):Wp(Rs?Buffer.from(i):new Uint8Array(i),r)}},{pack(i,r){let e=i.constructor;e!==qp&&this.structuredClone?Hp(i,Ja.indexOf(e.name),r):Wp(i,r)}},{pack(i,r){let{target:e,position:t}=r(1);e[t]=193}}];function Hp(i,r,e,t){let o=i.byteLength;if(o+1<256){var{target:n,position:s}=e(4+o);n[s++]=199,n[s++]=o+1}else if(o+1<65536){var{target:n,position:s}=e(5+o);n[s++]=200,n[s++]=o+1>>8,n[s++]=o+1&255}else{var{target:n,position:s,targetView:a}=e(7+o);n[s++]=201,a.setUint32(s,o+1),s+=4}n[s++]=116,n[s++]=r,n.set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s)}function Wp(i,r){let e=i.byteLength;var t,o;if(e<256){var{target:t,position:o}=r(e+2);t[o++]=196,t[o++]=e}else if(e<65536){var{target:t,position:o}=r(e+3);t[o++]=197,t[o++]=e>>8,t[o++]=e&255}else{var{target:t,position:o,targetView:n}=r(e+5);t[o++]=198,n.setUint32(o,e),o+=4}t.set(i,o)}function uv(i,r,e,t){let o=i.length;switch(o){case 1:r[e++]=212;break;case 2:r[e++]=213;break;case 4:r[e++]=214;break;case 8:r[e++]=215;break;case 16:r[e++]=216;break;default:o<256?(r[e++]=199,r[e++]=o):o<65536?(r[e++]=200,r[e++]=o>>8,r[e++]=o&255):(r[e++]=201,r[e++]=o>>24,r[e++]=o>>16&255,r[e++]=o>>8&255,r[e++]=o&255)}return r[e++]=t,r.set(i,e),e+=o,e}function pv(i,r){let e,t=r.length*6,o=i.length-t;for(r.sort((n,s)=>n.offset>s.offset?1:-1);e=r.pop();){let n=e.offset,s=e.id;i.copyWithin(n+t,n,o),t-=6;let a=n+t;i[a++]=214,i[a++]=105,i[a++]=s>>24,i[a++]=s>>16&255,i[a++]=s>>8&255,i[a++]=s&255,o=n}return i}function ho(i){if(i.Class){if(!i.pack&&!i.write)throw new Error("Extension has no pack or write function");if(i.pack&&!i.type)throw new Error("Extension has no type (numeric code to identify the extension)");el.unshift(i.Class),Gs.unshift(i)}jp(i)}var $p=new fo({useRecords:!1}),mv=$p.pack,dv=$p.pack;var{NEVER:fv,ALWAYS:hv,DECIMAL_ROUND:gv,DECIMAL_FIT:yv}=Es,Xp=512,xv=1024;var Yp=new fo({structuredClone:!0});ho({Class:Je.prototype.constructor,type:1,write(i){return{...i}},read(i){return Object.setPrototypeOf(i,Je.prototype),i}});ho({Class:Be.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Be.prototype),i}});ho({Class:Ut.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Ut.prototype),i}});ho({Class:Wn.prototype.constructor,type:4,write(i){return i.id},read(i){return new Wn(i)}});ho({Class:qn.prototype.constructor,type:5,write(i){return i.data},read(i){return new qn(i)}});function vv(i){var r=0;if(i.length===0)return r;for(let e=0;e<i.length;e++){let t=i[e];r=(r<<5)-r+t,r=r&r}return r}function tl(i){if(ws(i))return i;if(Array.isArray(i))return i.map(tl);if(typeof i=="object"&&i!==null){let r={};for(let e of Object.keys(i).sort())r[e]=tl(i[e]);return Object.setPrototypeOf(r,Object.getPrototypeOf(i)),r}else return i}var zs;(t=>{function i(o){return Yp.pack(o)}t.serialize=i;function r(o){return Yp.unpack(o)}t.deserialize=r;function e(o){return vv(i(tl(o))).toString()}t.checksum=e})(zs||(zs={}));var Vs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function r(t){return e.all.includes(t)}e.is=r})(Vs||(Vs={}));var Fs;(e=>{function i(t){return r(t)}e.defaultData=i;function r(t){if(t==="PointLight")return{type:t,color:Gt.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(t==="SpotLight")return{type:t,color:Gt.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,helper:!0,shadowResolution:1024,shadowRadius:1};if(t==="DirectionalLight")return{type:t,color:Gt.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(Fs||(Fs={}));var rl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function r(t,o){return t.castShadow===o.castShadow&&t.receiveShadow===o.receiveShadow}e.equals=r})(rl||(rl={}));var ol;(e=>{e.defaultData={flatShading:!1,wireframe:!1,side:0};function r(t,o){return t.flatShading===o.flatShading&&t.side===o.side&&t.wireframe===o.wireframe}e.equals=r})(ol||(ol={}));var Us;(r=>r.defaultData={...ol.defaultData,...rl.defaultData,cloner:null,booleanExclude:null})(Us||(Us={}));var nl=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(nl||{}),il=(t=>(t[t.Top=1]="Top",t[t.Center=2]="Center",t[t.Bottom=3]="Bottom",t))(il||{}),sl=(t=>(t[t.None=1]="None",t[t.Upper=2]="Upper",t[t.Lower=3]="Lower",t))(sl||{}),js;(r=>r.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:Gt.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(js||(js={}));var Xr;(t=>{function i(o,n){return o==="light"&&n?r(n):e(o)}t.defaultData=i;function r(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:Bt.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],[0,0,0,1]],steps:[0,1,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:{...Bt.fromHex(6710886),a:1},colorB:{...Bt.fromHex(6710886),a:1},colorC:{...Bt.fromHex(16777215),a:1},colorD:{...Bt.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:Gt.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{type:"toon",alpha:1,visible:!0,mode:0,positioning:2,colors:[[0,0,0,1],[.5,.5,.5,1],[.5,.5,.5,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,.475,.525,1,1,1,1,1,1,1],num:4,source:[0,1e3,0],isWorldSpace:!0,noiseStrength:0,noiseScale:1,shadowColor:Gt.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{type:"outline",alpha:1,visible:!0,mode:0,outlineColor:Gt.fromHexAndA(0,1),contourColor:Gt.fromHexAndA(0,1),outlineWidth:2,contourWidth:5,outlineThreshold:.4,contourThreshold:0,outlineSmoothing:0,contourFrequency:10,contourDirection:[0,1,0],positionalLines:!1,compensation:!0};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(Xr||(Xr={}));var _r;(a=>{function i(l){return!l.layers.some(u=>{if(u.data.type==="texture"&&u.data.projection!==0||u.data.type==="depth"&&!u.data.isWorldSpace||u.data.type==="noise"||u.data.type==="displace")return!0})&&!e(l)}a.isMergable=i;function r(l){let c="";return l.layers.forEach(u=>{Object.entries(u.data).forEach(([m,p])=>{c+=`${m}${p}`,Array.isArray(p)?p.forEach(d=>c+=`${d}`):typeof p=="object"?Object.values(p).forEach(d=>{typeof d=="number"?c+=`${d.toFixed(4)}`:c+=`${d}`}):c+=`${p}`})}),c}a.getHash=r;function e(l){let c=0;for(let u of l.layers)"alpha"in u.data&&u.data.type!=="light"&&u.data.type!=="fresnel"&&(c+=(1-c)*u.data.alpha);return c<1}a.isTransparent=e;function t(){return{layers:new Be}}a.defaultEmptyData=t;function o(l="layer1",c="layer2"){return n("phong",l,c)}a.defaultData=o;function n(l,c="layer1",u="layer2"){let m=new Be;return m.push({fi:0,data:Xr.defaultData("light",l),id:c}),m.push({fi:1,data:Xr.defaultData("color"),id:u}),{layers:m}}a.defaultTwoLayerData=n;function s(l,c="basic",u="layer1",m="layer2"){let p=Xr.defaultData("texture");Object.assign(p.texture,{image:l});let d=new Be;return d.push({fi:0,data:p,id:u}),d.push({fi:1,data:Xr.defaultData("light",c),id:m}),{layers:d}}a.defaultTwoLayerTextureData=s})(_r||(_r={}));var on;(r=>{function i(){return{points:new Be,roundness:0,shapeHoles:[],isClosed:!1}}r.defaultData=i})(on||(on={}));var ks;(r=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}r.is2DParametricMesh=i})(ks||(ks={}));var Yn;(r=>{function i(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:on.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(e==="BooleanGeometry")return{type:e,operation:2,width:0,height:0,depth:0,phongAngle:35};throw new Error("not implemented")}r.defaultData=i})(Yn||(Yn={}));var Kn;(o=>{o.identity={...vs.identity,hiddenMatrix:Wr.identity};function r(n){return{position:n.position,rotation:n.rotation,scale:n.scale,hiddenMatrix:n.hiddenMatrix}}o.fromObject=r;function e(n,s){return{position:s?.position||n.position,rotation:s?.rotation||n.rotation,scale:s?.scale||n.scale,hiddenMatrix:s?.hiddenMatrix||n.hiddenMatrix}}o.merge=e;function t(n,s){return{position:Jo.isEqual(n.position,s.position)?null:s.position,rotation:Jo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Jo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Wr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=t})(Kn||(Kn={}));var Dr;(r=>r.defaultData={states:new Be,events:new Be,visible:!0,raycastLock:!1,...Kn.identity})(Dr||(Dr={}));var Kp;(r=>r.defaultData={type:"Empty",...Dr.defaultData})(Kp||(Kp={}));var Hs;(r=>r.defaultData={type:"Mesh",...Dr.defaultData,...Us.defaultData})(Hs||(Hs={}));var Qp;(r=>r.defaultData={type:"TextFrame",...Dr.defaultData,...js.defaultData})(Qp||(Qp={}));var Ws;(r=>r.defaultData={...Dr.defaultData,...Kn.identity,...po.defaultData})(Ws||(Ws={}));var Jp;(r=>{function i(e){return{...Dr.defaultData,...Fs.defaultData(e)}}r.defaultData=i})(Jp||(Jp={}));var Zp;(t=>(t.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Wr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Be,events:new Be,...po.defaultData},t.defaultMeshObject={name:"Rectangle",...Dr.defaultData,...Hs.defaultData,geometry:Yn.defaultData("RectangleGeometry"),material:_r.defaultTwoLayerData("basic","layer1","layer2")},t.defaultBooleanObject={name:"Boolean",...Dr.defaultData,...Hs.defaultData,geometry:Yn.defaultData("BooleanGeometry"),material:_r.defaultTwoLayerData("phong","layer1","layer2")}))(Zp||(Zp={}));var em;(e=>{function i(t,o){if(o===void 0)return t;let n={...t};return"material"in n&&"material"in o&&o.material&&(n.material=ja(n.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),n.materials&&o.materials&&(n.materials=ja(n.materials,s=>{for(let a=0;a<n.materials.length;a++){let l=o.materials[a];if(typeof l!="string")for(let[c,u]of Object.entries(l.layers)){let m=s[a]?.layers?.data(c);m&&uo(m,u)}}}).data),n}e.patchMaterialState=i;function r(t,o){if(o===void 0)return t;let n={...t};if(Object.assign(n,Kn.merge(n,o)),Qo.is(t.type)){n.orthographic={...n.orthographic},n.perspective={...n.perspective};let s=o;s.orthographic?.zoom!==void 0&&(n.orthographic.zoom=s.orthographic.zoom),s.perspective?.zoom!==void 0&&(n.perspective.zoom=s.perspective.zoom),s.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=s.isUpVectorFlipped),s.targetOffset!==void 0&&(n.targetOffset=s.targetOffset)}else if(t.type==="Mesh")n.geometry={...n.geometry},Object.assign(n.geometry,o.geometry),n=i(n,o);else if(Vs.is(t.type)){let s=o;s.intensity!==void 0&&(n.intensity=s.intensity),s.color!==void 0&&(typeof s.color=="string"?n.color=s.color:n.color=Bt.clone(s.color))}return n}e.patch=r})(em||(em={}));var qs;(s=>{let i=["/_assets/_textures/texture_checkboard_default.png","/_assets/_textures/texture_dots_01.png","/_assets/_textures/texture_wood_01.jpg","/_assets/_textures/texture_wood_02.jpg","/_assets/_textures/texture_rock_01.jpg","/_assets/_textures/texture_rock_02.jpg","/_assets/_textures/texture_grass_01.jpg","/_assets/_textures/texture_grass_02.jpg","/_assets/_textures/texture_concrete_01.jpg","/_assets/_textures/texture_concrete_02.jpg","/_assets/_textures/texture_paper_01.jpg","/_assets/_textures/texture_roof_01.jpg","/_assets/_textures/texture_wall_02.jpg","/_assets/_textures/texture_planet_earth_color.jpg","/_assets/_textures/texture_planet_earth_clouds.jpg","/_assets/_textures/texture_planet_mars.jpg","/_assets/_textures/texture_space.jpg"],r=["/_assets/_textures/matcap_5_18.png","/_assets/_textures/matcap_5_1.png","/_assets/_textures/matcap_4_3.png","/_assets/_textures/matcap_2_7.png","/_assets/_textures/matcap_2_4.png","/_assets/_textures/matcap_1_11.png"];function e(){let a={},l=0;for(let c of i)a[`image_${l}`]={data:c,name:`Image ${l}`,asset:!1},l++;l=0;for(let c of r)a[`matcap_${l}`]={data:c,name:`Matcap ${l}`,asset:!1},l++;return a}s.defaultImages=e;function t(){let a={};return a["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},a}s.defaultColors=t;function o(){return{materials:new Je,images:new Je,colors:new Je,penumbraSize:[.5,.5,.5]}}s.emptyData=o;function n(){return{materials:new Je,images:_a(e(),Je.prototype),colors:_a(t(),Je.prototype),penumbraSize:new Array(5).fill(.5)}}s.defaultData=n})(qs||(qs={}));var $s;(r=>r.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",asset:!1})($s||($s={}));var tm=require("three"),ut=class extends tm.Color{constructor(e,t,o,n){super(e,t,o);this.isColorA=!0;this.a=n}setRGBA(e,t,o,n){super.setRGB(e,t,o),this.a=n}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 nm=require("three");var De=require("three"),om=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},i.parameters),t=e.width/2,o=e.radiusTop??t,n=e.radiusBottom??t;return o===n?(o=t,n=t):o>n?(o=t,n=n*t/o):(o=o*t/n,n=t),{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),radiusTop:o,radiusBottom:n})}}static build(i){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,radiusTop:c,radiusBottom:u,cornerRadius:m,cornerSegments:p,hollow:d}=i.parameters,f;return m||d?f=new Qn(c,u,t,o,n,s,a,l*Math.PI/180,m,m,p,d):f=new De.CylinderBufferGeometry(c,u,t,o,n,s,a,l*Math.PI/180),f.scale(1,1,e/r),Object.assign(f,{userData:{...i,type:"CylinderGeometry"}})}};function Yr(i,r,e){e.x=i.x*r.x,e.y=i.y,e.z=i.x*r.y}function rm(i){return new De.Vector2(i.y,-i.x)}var Qn=class extends De.BufferGeometry{constructor(r,e,t,o,n,s,a,l,c,u,m,p,d=!1){super(),this.type="RoundedCylinderBufferGeometry",r=r!==void 0?r:1,e=e!==void 0?e:1,t=t||1,o=Math.floor(o)||8,n=Math.floor(n)||1,s=s!==void 0?s:!1,a=a!==void 0?a:0,l=l!==void 0?l:Math.PI*2,s&&(c=0,u=0);let f=[],g=[],x=[],y=[],v=0,P=t/2,S=new De.Vector3,b=new De.Vector3;d&&r==0&&(r=c),d&&e==0&&(e=u);let E=new De.Vector2(r,P),w=new De.Vector2(e,-P),h=null,_=null,N=null,I=null,L=E.clone().sub(w),A=0,k=0,W=0;p>0&&(A=Math.min(r,e)*(1-p),k=r-A,W=e-A);let ne=E.clone();ne.x-=A;let ue=Math.PI-L.angle(),se=L.angle(),K=Math.tan(se/2),U=Math.tan(ue/2),z=K+U,B=p?z:U,D=p?z:K;if(c=Math.min(c,(r-k)/B,L.length()/z),u=Math.min(u,(e-W)/D,L.length()/z),c>0){let F=c/K;h=E.clone().sub(new De.Vector2(F,c)),p&&(N=h.clone(),N.x-=A-z*c),E.sub(L.clone().setLength(F))}if(u>0){let F=u/U;_=w.clone().sub(new De.Vector2(F,-u)),w.add(L.clone().setLength(F)),p&&(I=_.clone(),I.x-=A-z*u,ne.sub(L.clone().setLength(F)))}L=E.clone().sub(w);let M=L.length()<.5,G=[];for(let F=0;F<=o;F++){let O=[],q=F/o,Z=q*l+a,ee=new De.Vector2(Math.sin(Z),Math.cos(Z));I&&_?(Q(O,q,ee,ue,u,I,-1,!0),Q(O,q,ee,se,u,_,-1,!1)):_?(j(O,ee,_.x,0,-1),Q(O,q,ee,se,u,_,-1,!1)):s||j(O,ee,e,W,-1);let H=rm(L).normalize();if(Yr(H,ee,S),!M)for(let J=0;J<=n;J++){let $=J/n,re=L.clone().multiplyScalar($).add(w);Yr(re,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/t),O.push(v++)}if(N&&h?(Q(O,q,ee,ue,c,h,1,!1),Q(O,q,ee,se,c,N,1,!0)):h?(Q(O,q,ee,ue,c,h,1,!1),j(O,ee,h.x,0,1)):s||j(O,ee,r,k,1),p&&!M){let J=rm(L).multiplyScalar(-1).normalize();Yr(J,ee,S);for(let $=0;$<=n;$++){let re=$/n,ce=L.clone().multiplyScalar(-re).add(ne);Yr(ce,ee,b),g.push(b.x,b.y,b.z),x.push(S.x,S.y,S.z),y.push(q,.5+b.y/t),O.push(v++)}}p&&!s&&O.push(O[0]),G.push(O)}for(let F=0;F<G.length-1;F++)for(let O=0;O<G[0].length-1;O++){if(s&&p&&O==n)continue;let q=G[F][O],Z=G[F+1][O],ee=G[F+1][O+1],H=G[F][O+1],J=g[ee*3+0],$=g[ee*3+2];f.push(q,Z,H),(J!=0||$!=0)&&f.push(Z,ee,H)}l<Math.PI*2&&(V(-1,G[0],a),V(1,G[G.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new De.Float32BufferAttribute(g,3)),this.setAttribute("normal",new De.Float32BufferAttribute(x,3)),this.setAttribute("uv",new De.Float32BufferAttribute(y,2));function Q(F,O,q,Z,ee,H,J,$){for(let re=0;re<m+1;re++){let ce=re/m,ie=J<0?ce:1-ce;$&&(ie-=1),ie*=Z;let fe=new De.Vector2(Math.sin(ie),Math.cos(ie)*J),Re=fe.clone().multiplyScalar(ee).add(H);Yr(Re,q,b),g.push(b.x,b.y,b.z),Yr(fe,q,S),x.push(S.x,S.y,S.z),y.push(O,.5+b.y/t),F.push(v++)}}function j(F,O,q,Z,ee){let H=new De.Vector3,J=new De.Vector2,$=[q,Z];ee<0&&$.reverse();for(let re of $)J.set(re,P*ee),Yr(J,O,H),g.push(H.x,H.y,H.z),x.push(0,ee,0),y.push(.5,.5),F.push(v++)}function V(F,O,q){let Z=new De.Vector2(Math.sin(q),Math.cos(q)),ee=new De.Vector2(-Math.cos(q),Math.sin(q)),H=new De.Vector3,J=F<0?(ce,ie,fe)=>f.push(ce,ie,fe):(ce,ie,fe)=>f.push(ce,fe,ie),$=new De.Vector2((r+e+k+W)/4,0);Yr($,Z,H),g.push(H.x,H.y,H.z),x.push(ee.x,0,ee.y),y.push(.5,.5);let re=v++;for(let ce of O){let ie=g.slice(ce*3,ce*3+3);g.push(...ie),x.push(ee.x,0,ee.y);let fe=y.slice(ce*2,ce*2+2);y.push(...fe),v++}for(let ce=re+1;ce<v-1;ce++)J(re,ce,ce+1);J(re,v-1,re+1)}}};var im=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:r,depth:e,height:t,radialSegments:o,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:l,cornerRadiusTop:c,cornerRadiusBottom:u,cornerSegments:m}=i.parameters,p;return c>0||u>0||l<360?p=new Qn(0,r/2,t,o,n,s,a,l*Math.PI/180,c,u,m,0,!0):p=new nm.ConeBufferGeometry(r/2,t,o,n,s),p.scale(1,1,e/r),Object.assign(p,{userData:{...i,type:"ConeGeometry"}})}};var It=require("three"),sm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:r,height:e,depth:t,widthSegments:o,heightSegments:n,depthSegments:s,cornerRadius:a,cornerSegments:l}=i.parameters,c;return a==0?c=new It.BoxBufferGeometry(r,e,t,o,n,s):c=new ll(r,e,t,o,n,s,a,l),Object.assign(c,{userData:{...i,type:"CubeGeometry"}})}},al=Math.PI/2,ll=class extends It.BufferGeometry{constructor(r=1,e=1,t=1,o=1,n=1,s=1,a=0,l=4){super(),this.type="BoxBufferGeometry";let c=this;o=Math.floor(o),n=Math.floor(n),s=Math.floor(s),l=Math.floor(l),a=Math.min(a,r/2,e/2,t/2);let u=[],m=[],p=[],d=[],f=0,g=0;x("z","y","x",-1,-1,t,e,r,s,n,0),x("z","y","x",1,-1,t,e,-r,s,n,1),x("x","z","y",1,1,r,t,e,o,s,2),x("x","z","y",1,-1,r,t,-e,o,s,3),x("x","y","z",1,-1,r,e,t,o,n,4),x("x","y","z",-1,-1,r,e,-t,o,n,5),a>0&&(y("z","y","x",-1,-1,1,t,e,r,s,0),y("z","y","x",1,-1,-1,t,e,r,s,1),y("z","y","x",-1,1,-1,t,e,r,s,1),y("z","y","x",1,1,1,t,e,r,s,0),y("x","y","z",-1,-1,-1,r,e,t,o,0),y("x","y","z",1,-1,1,r,e,t,o,1),y("x","y","z",-1,1,1,r,e,t,o,0),y("x","y","z",1,1,-1,r,e,t,o,1),y("y","x","z",-1,-1,1,e,r,t,n,0),y("y","x","z",1,-1,-1,e,r,t,n,1),y("y","x","z",1,1,1,e,r,t,n,1),y("y","x","z",-1,1,-1,e,r,t,n,0),v(1,1,1),v(-1,1,1),v(1,-1,1),v(-1,-1,1),v(1,1,-1),v(-1,1,-1),v(1,-1,-1),v(-1,-1,-1)),this.setIndex(u),this.setAttribute("position",new It.Float32BufferAttribute(m,3)),this.setAttribute("normal",new It.Float32BufferAttribute(p,3)),this.setAttribute("uv",new It.Float32BufferAttribute(d,2));function x(P,S,b,E,w,h,_,N,I,L,A){let k=(h-2*a)/I,W=(_-2*a)/L,ne=h/2-a,ue=_/2-a,se=N/2,K=I+1,U=L+1,z=0,B=0,D=new It.Vector3;for(let M=0;M<U;M++){let G=M*W-ue;for(let Q=0;Q<K;Q++){let j=Q*k-ne;D[P]=j*E,D[S]=G*w,D[b]=se,m.push(D.x,D.y,D.z),D[P]=0,D[S]=0,D[b]=N>0?1:-1,p.push(D.x,D.y,D.z),d.push(Q/I),d.push(1-M/L),z+=1}}for(let M=0;M<L;M++)for(let G=0;G<I;G++){let Q=f+G+K*M,j=f+G+K*(M+1),V=f+(G+1)+K*(M+1),F=f+(G+1)+K*M;u.push(Q,j,F),u.push(j,V,F),B+=6}c.addGroup(g,B,A),g+=B,f+=z}function y(P,S,b,E,w,h,_,N,I,L,A){let k=(_-2*a)/L,W=_/2-a,ne=N/2-a,ue=I/2,se=L+1,K=0,U=0,z=new It.Vector3,B=new It.Vector3;for(let D=0;D<l+1;D++){let M=D/l*al,G=Math.sin(M)*a,Q=(1-Math.cos(M))*a,j=Math.sin(M),V=Math.cos(M);z[S]=(ne+G)*w,z[b]=(ue-Q)*h,B[P]=0,B[S]=j*Math.sign(z[S]),B[b]=V*Math.sign(z[b]);for(let F=0;F<se;F++){let O=F*k-W;z[P]=O*E,m.push(z.x,z.y,z.z),p.push(B.x,B.y,B.z),d.push(F/L),d.push(0),K+=1}}for(let D=0;D<l;D++)for(let M=0;M<L;M++){let G=f+M+se*D,Q=f+M+se*(D+1),j=f+(M+1)+se*(D+1),V=f+(M+1)+se*D;u.push(G,Q,V),u.push(Q,j,V),U+=6}c.addGroup(g,U,A),g+=U,f+=K}function v(P,S,b){let E=new It.Vector3,w=new It.Vector3(r/2,e/2,t/2);w.subScalar(a);let h=[],_=P*S*b>0?(I,L,A)=>u.push(I,L,A):(I,L,A)=>u.push(I,A,L);for(let I=0;I<=l;I++){let L=[],A=al*(1-I/l),k=Math.cos(A),W=Math.sin(A),ne=0;for(let ue=0;ue<=I;ue++){let se=Math.cos(ne),K=Math.sin(ne);E.x=k*se,E.y=W,E.z=k*K;let U=w.clone().addScaledVector(E,a);m.push(P*U.x,S*U.y,b*U.z),p.push(P*E.x,S*E.y,b*E.z),d.push(0,0),L.push(f++),ne+=al/I}h.push(L)}let N=h.length-1;for(let I=0;I<N;I++){let L=h[I],A=h[I+1],k=L.length-1;_(L[0],A[1],A[0]);for(let W=1;W<=k;W++)_(L[W-1],L[W],A[W]),_(L[W],A[W+1],A[W])}}}};var Ve=require("three"),Kr=class extends Ve.BufferGeometry{constructor(r=[],e=[],t="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];u(),m(),this.setAttribute("position",new Ve.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Ve.Float32BufferAttribute(c,3)),this.setAttribute("uv",new Ve.Float32BufferAttribute(l,2));return;function u(){n=Math.min(1-1e-5,n),n==0&&(s=0);let d={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[t],f=new Ve.Vector3,g=f.clone(),x=new Ve.Triangle,y=n*o,v=o-y,P=s+1,S=new Ve.Vector3,b=(K,U)=>S.subVectors(K,U).normalize(),E=(K,U)=>Array(K).fill(void 0).map(U),w=E(r.length/3,(K,U)=>new Ve.Vector3().fromArray(r,U*3).setLength(o)),h=[],_=1e6;for(let K=0;K<w.length;K++){let U=w[K],z=[],B,D,M,G=1e10,Q=-1;for(;(Q=e.indexOf(K,Q+1))!=-1;){let O=Q-Q%3;B=e[O+(Q+1)%3],D=e[O+(Q+2)%3],M=U.distanceToSquared(w[B]),G=Math.min(G,M),z.push([B,D,M])}G+=1e-6;let j=[],V=0,F=z.length;for(let O=0;O<F;O++){[B,D,M]=z[V];let q=h[B]?.includes(K)==!0;M<=G&&j.push(B+ +q*_),V=z.findIndex(Z=>Z[0]==D)}h.push(j)}let N=[];{let K=0,U=0,z,B,D=d==3;for(let M=0;M<=s;M++){z=M*(M+1)/2,B=(M+1)*(M+2)/2;for(let G=0;G<s-M;G++)[K,U]=[z+G+M+2,B+G+M+3],N.push(z,B,...D?[U,z]:[K,B],U,K),[z,B]=[K,U];N.push(z,B,z+s+2)}}let I=f.clone(),L=f.clone(),A=f.clone(),k=f.clone(),W=f.clone(),ne=[],ue=E(w.length,()=>E(d,()=>f.clone()));for(let K=0;K<w.length;K++){f.copy(w[K]).normalize(),I.copy(f).multiplyScalar(v);let U=h[K];for(let j=0;j<U.length;j++){let V=U[j],F=U[(j+1)%d];x.setFromPointsAndIndices(w,K,V%_,F%_),x.b.sub(x.a).setLength(1e10).add(x.a),x.c.sub(x.a).setLength(1e10).add(x.a),x.closestPointToPoint(I,ue[K][j])}let z=[],B=[],D=[],M=new Ve.Vector3;s==0&&[...ue[K]].reduce((j,V)=>j.add(V),M).multiplyScalar(1/d);for(let j=0;j<d;j++){let V=[],F=(j-1+d)%d,O=ue[K][F],q=ue[K][j];f.copy(O).sub(I),g.copy(q).sub(I);let Z=I.angleTo(f),ee=f.angleTo(g),H=Math.cos(Z)*y;s==0?L.copy(M):L.copy(I).setLength(v+H),B.push(H);let J=[L,O,q];for(let $=0;$<2;$++){let re=J[$],ce=J[$+1];k.subVectors(re,I),W.subVectors(ce,I),A.crossVectors(k,W).normalize();for(let ie=0;ie<P;ie++){let fe=[Z,ee][$]*ie/P;f.copy(k).applyAxisAngle(A,fe).add(I),z.push(f.clone()),$&&(b(f,I),V.push([ie==0?re:f.clone(),S.clone()]))}$&&(b(ce,I),V.push([ce,S.clone()]))}D.push(V)}ne.push(D);let G=2*P,Q=2;for(let j=0;j<d;j++){let V=G*j,F=G*((j+1)%d),O=[z[V]];for(let Z=1;Z<P;Z++){k=z[V+Z],W=z[F+Z],O.push(k);for(let ee=1,H=Z-Q+1;ee<=H;ee++)f.lerpVectors(k,W,ee/(H+1)),f.sub(I).setLength(B[j]).add(I),O.push(f.clone());O.push(W)}for(let Z=0;Z<P;Z++)O.push(z[Z+P+V]);O.push(z[F+P]);let q=N.map(Z=>O[Z]);a.push(...q.map(Z=>[Z.x,Z.y,Z.z]).flat()),c.push(...q.map(Z=>(b(Z,I),[S.x,S.y,S.z])).flat())}}let se=[];for(let K=0;K<h.length;K++)for(let U=0;U<d;U++){let z=h[K][U];if(z<_){let B=h[z].findIndex(G=>G%_==K),D=ne[K][U],M=ne[z][B];for(let G=0;G<P;G++){let Q=D[G],j=M[P-G],V=D[G+1],F=M[P-(G+1)];[Q,j,V,V,j,F].forEach(O=>{a.push(O[0].x,O[0].y,O[0].z),c.push(O[1].x,O[1].y,O[1].z)})}se.push(D[0][0],M[P][0],D[P][0],M[0][0])}}for(;se.length;){let K,U,z,B;[K,U]=se.splice(0,2);let D=[K];for(;K!=U;)D.push(U),z=se.indexOf(U),B=z%2,U=se.splice(z-B,2)[1-B];S.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let M=S.dot(D[0])<0;M&&S.negate();for(let G=1;G<=D.length-2;G++)[D[G+ +M],D[G+1-+M],D[0]].forEach(Q=>{a.push(Q.x,Q.y,Q.z),c.push(S.x,S.y,S.z)})}}function m(){let p=new Ve.Vector3;for(let w=0;w<a.length;w+=3){p.x=a[w+0],p.y=a[w+1],p.z=a[w+2];let h=b(p)/2/Math.PI+.5,_=E(p)/Math.PI+.5;l.push(h,1-_)}let d=new Ve.Vector3,f=new Ve.Vector3,g=new Ve.Vector3,x=new Ve.Vector3,y=new Ve.Vector2,v=new Ve.Vector2,P=new Ve.Vector2,S=(w,h,_,N)=>{N<0&&w.x===1&&(l[h]=w.x-1),_.x===0&&_.z===0&&(l[h]=N/2/Math.PI+.5)};for(let w=0,h=0;w<a.length;w+=9,h+=6){d.set(a[w+0],a[w+1],a[w+2]),f.set(a[w+3],a[w+4],a[w+5]),g.set(a[w+6],a[w+7],a[w+8]),y.set(l[h+0],l[h+1]),v.set(l[h+2],l[h+3]),P.set(l[h+4],l[h+5]),x.copy(d).add(f).add(g).divideScalar(3);let _=b(x);S(y,h+0,d,_),S(v,h+2,f,_),S(P,h+4,g,_)}for(let w=0;w<l.length;w+=6){let h=l[w+0],_=l[w+2],N=l[w+4],I=Math.max(h,_,N),L=Math.min(h,_,N);I>.9&&L<.1&&(h<.2&&(l[w+0]+=1),_<.2&&(l[w+2]+=1),N<.2&&(l[w+4]+=1))}function b(w){return Math.atan2(w.z,-w.x)}function E(w){return Math.atan2(-w.y,Math.sqrt(w.x*w.x+w.z*w.z))}}}static fromJSON(r){return new Kr(r.vertices,r.indices,r.radius,r.corner,r.cornerSides)}};var am=require("three"),lm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:r,height:e,depth:t,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new Jn(r*.5,n,s):new am.DodecahedronBufferGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...i,type:"DodecahedronGeometry"}})}},Jn=class extends Kr{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,n=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,-n,-o,0,-n,o,0,n,-o,0,n,o,-n,-o,0,-n,o,0,n,-o,0,n,o,0,-o,0,-n,o,0,-n,-o,0,n,o,0,n],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,r,e,t),this.type=l}static fromJSON(r){return new Jn(r.radius,r.corner,r.cornerSides)}};var be=require("three");var he=require("three"),Zn=1e-12,nn=class{constructor(r){this.position=new he.Vector2;this.startPosition=new he.Vector2;this.uuid=he.MathUtils.generateUUID();this.position=r.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(r){this.position.copy(this.startPosition).add(r)}copy(r){return this.position.copy(r.position),this.startPosition.copy(r.startPosition),this}clone(){return new nn(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},sn=class extends nn{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new sn(this.parent).copy(this)}},Xt=class extends nn{constructor(e,t){super(t);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new sn(this),new sn(this))}static create(e,t){let o=new Xt(e,new he.Vector2(...t.position));return o.controls[0].position.set(...t.controlPrevious.position),o.controls[1].position.set(...t.controlNext.position),o.roundness=t.roundness,o.areControlsDirectionsMirrored=t.areControlsDirectionsMirrored,o}getOppositeControl(e){let t=this.controls.indexOf(e);return t===0?this.controls[1]:t===1?this.controls[0]:null}applyOffsetToControls(e,t=1){for(let o=0,n=this.controls.length;o<n;o++){let s=this.controls[o];this.position.distanceTo(s.position)<=t?s.position.copy(this.position):s.applyOffset(e)}}controlsMoved(){return!(this.position.equals(this.controls[0].position)&&this.position.equals(this.controls[1].position))}copy(e){return super.copy(e),this.controls[0].copy(e.controls[0]),this.controls[1].copy(e.controls[1]),this.roundness=e.roundness,this.uuid=e.uuid,this}clone(){return new Xt(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){let e=this.curveBefore?.getTangentAt(1),t=this.curveAfter?.getTangentAt(0);return[e,t]}computeNormals(e=new he.Vector2,t=new he.Vector2){let[o,n]=this.computeTangents();return o&&n&&(cm(o,e),cm(n,t)),[e,t]}computeTangent(e=new he.Vector2){let[t,o]=this.computeTangents();return t&&o&&e.copy(t).add(o).normalize(),e}computeNormal(e=new he.Vector2){let[t,o]=this.computeNormals();return e.copy(t).add(o).normalize(),e}};function cm(i,r=new he.Vector2){let e=i.length();return r.set(-i.y/e,i.x/e)}var ul=i=>i,an=new he.Vector2,Xs=new he.Vector2,bv=new he.Vector2,Sv=new he.Vector2,wv=new he.Vector2,Tv=new he.Vector2,pm=new he.Vector3,mm=new he.Vector3;function dm(i){let r=new he.Vector2;r.addVectors(i.v0,an.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new he.Vector2;return e.addVectors(i.v2,Xs.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new he.CubicBezierCurve(i.v0,r,e,i.v2)}function ei(i,r,e=Number.EPSILON){return Math.abs(i-r)<e}function Nv(i,r,e=Number.EPSILON){return i.distanceTo(r)<e}function Cv(i,r,e=Number.EPSILON){return i.distanceTo(r)<e}function pl(i,r,e){let t=Math.sqrt(Math.pow(r.x-i.x,2)+Math.pow(r.y-i.y,2)),o=Math.sqrt(Math.pow(r.x-e.x,2)+Math.pow(r.y-e.y,2)),n=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2));return Math.acos((o*o+t*t-n*n)/(2*o*t))}function fm(i,r,e){return um(i,r)&&um(r,e)&&cl(i.position,r.position,e.position)}function cl(i,r,e){return an.copy(r).sub(i).cross(Xs.copy(e).sub(i))===0}function hm(i,r,e,t,o){let n=Math.sqrt(Math.pow(r.x-i.x,2)+Math.pow(r.y-i.y,2)),s=(i.y+r.y)/2,a=(i.x+r.x)/2,l=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(i.y-r.y)/n,c=Math.sqrt(Math.pow(e,2)-Math.pow(n/2,2))*(r.x-i.x)/n;return t.set(a+l,s+c),o.set(a-l,s-c),[t,o]}function gm(i,r,e){let t=i.distanceTo(e),o=r.distanceTo(e);return t<o?r:i}function ym(i,r,e,t,o,n){let s=r.x-i.x,a=r.y-i.y,l=e.x-i.x,c=e.y-i.y,u=Math.sqrt((s+l)*(s+l)+(a+c)*(a+c)),m;return pl(r,i,e)>Math.PI&&(u*=-1),ei(c,a)?m=(a+c)*(t/u-.5)*8/3/(s-l):m=(s+l)*(t/u-.5)*8/3/(c-a),o.set(r.x-m*a,r.y+m*s),n.set(e.x+m*c,e.y-m*l),[o,n]}function ml(i,r){return i.position.equals(i.controls[1].position)&&r.position.equals(r.controls[0].position)}function um(i,r){return cl(i.position,i.controls[1].position,r.position)&&cl(i.position,r.controls[0].position,r.position)}function xm(i,r,e,t,o=.5){let n=an.subVectors(r,i).multiplyScalar(o).add(i),s=Xs.subVectors(e,r).multiplyScalar(o).add(r),a=bv.subVectors(t,e).multiplyScalar(o).add(e),l=n,c=Sv.subVectors(s,n).multiplyScalar(o).add(n),u=wv.subVectors(a,s).multiplyScalar(o).add(s),m=a,p=Tv.subVectors(u,c).multiplyScalar(o).add(c);return[i.x,i.y,l.x,l.y,c.x,c.y,p.x,p.y,u.x,u.y,m.x,m.y,t.x,t.y]}function vm(i,r,e=12,t=!0){let o=mm.set(0,0,0),n,s=0,a=[];for(let l=0;l<r.length;l++){let c=ul(r[l]),u=an,m=Qr(c,e);a.push(m);for(let p=0;p<=m;p++)if(c instanceof he.CubicBezierCurve||c instanceof he.QuadraticBezierCurve||c instanceof he.LineCurve){if(c.getPoint(p/m,u),o.set(u.x,u.y,0),n!==void 0&&Cv(n,o))continue;n===void 0&&(n=pm),n.copy(o),i.setXYZ(s,o.x,o.y,o.z),s++}}return t&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),i}function bm(i,r,e,t=12,o=!0){let n=mm.set(0,0,0),s=0,a=[];for(let l=0;l<r.length;l++){if(e[l]===!1)continue;let c,u=ul(r[l]),m=an,p=Qr(u,t);a.push(p);for(let d=0;d<=p;d++)if(u instanceof he.CubicBezierCurve||u instanceof he.QuadraticBezierCurve||u instanceof he.LineCurve){if(u.getPoint(d/p,m),n.set(m.x,m.y,0),c?.equals(n))continue;c===void 0?c=pm:(i.setXYZ(s,c.x,c.y,c.z),s++,i.setXYZ(s,n.x,n.y,n.z),s++),c.copy(n)}}return o&&s>1&&!(i.getX(s-1)===i.getX(0)&&i.getY(s-1)===i.getY(0)&&i.getZ(s-1)===i.getZ(0))&&(i.setXYZ(s,i.getX(0),i.getY(0),i.getZ(0)),s++),a}function dl(i,r=12,e=!1){let t=[];for(let o=0,n=i.length;o<n;o++){let s=i[o],a=0;if(e&&s.roundedCurveCorner!==void 0){let l=Qr(s.roundedCurveCorner,r)*.5;o>0&&(t[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Qr(s.curveAfter,r)),t.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(t[i.length-1]+=Qr(i[0].roundedCurveCorner,r)*.5),t}function Qr(i,r=12){return i&&i instanceof he.EllipseCurve?r*2:i&&(i instanceof he.LineCurve||i instanceof he.LineCurve3)?1:i&&i instanceof he.SplineCurve?r*i.points.length:r}function Sm(i,r,e=12,t=!0){let o,n=0;for(let s=0;s<r.length;s++){let a=ul(r[s]),l=Qr(a,e),c=an;for(let u=0;u<=l;u++)if(a instanceof he.CubicBezierCurve||a instanceof he.QuadraticBezierCurve||a instanceof he.LineCurve){if(a.getPoint(u/l,c),o!==void 0&&Nv(o,c,Zn))continue;o===void 0&&(o=Xs),o.copy(c),i.push(c.x,c.y),n++}}return ei(i[0],i[i.length-2],Zn)&&ei(i[1],i[i.length-1],Zn)&&(i.pop(),i.pop()),t&&n>1&&!(ei(i[n-1],i[1],Zn)&&ei(i[n-2],i[0],Zn))&&(i.push(i[0],i[1]),n++),i}var fl=new be.Vector2,Lv=new be.Vector2,Iv=new be.Vector2,Pv=new be.Vector2,Av=new be.Vector2,Mv=new be.Vector2,Le=class extends be.Shape{constructor(e=100,t=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new be.EventDispatcher;this.plane=new be.Plane(new be.Vector3(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=be.MathUtils.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=t}static createFromState(e,t,o){let n=new Le;return n.isClosed=e.isClosed,n.points=e.points.map(s=>Xt.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Le.createFromState(s)),t!==void 0&&o!==void 0&&n.applySize(t,o),n.update(),n}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(e){if(this._roundness!==e){this._roundness=e;for(let t=0,o=this.points.length;t<o;t++)this.points[t].roundness=e;this.needsUpdate=!0}}getPointsIndexesByIds(e){return e.map(t=>this.getPointIndexById(t)).filter(t=>t>=0)}getPointIndexById(e){let t=this.points.length,o=this.points.findIndex(n=>n.uuid===e);if(o<0){let n=t;for(let s=0,a=this.shapeHoles.length;s<a;s++){let l=this.shapeHoles[s],c=l.points.length-1,u=l.getPointIndexById(e);if(u<0)n+=c;else return u+n}}return o}getLineIndexById(e){return this.getPointIndexById(e)}getBezierPoint(e){if(e<=this.points.length-1)return this.points[e];if(this.shapeHoles.length>0)for(let t=0,o=this.shapeHoles.length;t<o;t++){let n=this.shapeHoles[t],s=e-this.points.length;if(s<=n.points.length-1)return n.points[s]}throw new Error("This shape does not have a point for this index: "+e)}getBezierPointIndex(e){let t=this.points.indexOf(e);if(t>=0)return t;if(t=this.points.length,this.shapeHoles.length>0)for(let o=0,n=this.shapeHoles.length;o<n;o++){let s=this.shapeHoles[o],a=s.points.indexOf(e);if(a>=0)return t+a;t+=s.points.length}return-1}getAllPoints(){let e=[].concat(...this.shapeHoles.map(t=>t.points));return[...this.points,...e]}applySize(e,t){e===0&&(e=.001),t===0&&(t=.001),this._width=e,this._height=t}applyScale(e,t){let o=fl.set(e,t);for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n];a.position.multiply(o),a.controls[0].position.multiply(o),a.controls[1].position.multiply(o)}for(let n=0,s=this.shapeHoles.length;n<s;n++)this.shapeHoles[n].applyScale(e,t);this._update(!1)}createPoint(e,t=0,o=be.MathUtils.generateUUID()){let n;e instanceof be.Vector2?n=e:n=new be.Vector2(e,t);let s=new Xt(o,n);return s.roundness=this.roundness,s}addPoint(e){this.points.push(e),this.needsUpdate=!0}addPointAt(e,t){this.points.splice(t,0,e),this.needsUpdate=!0}getPointByUuid(e){for(let t=0,o=this.points.length;t<o;t++){let n=this.points[t];if(n.uuid===e)return n}for(let t=0,o=this.shapeHoles.length;t<o;t++){let s=this.shapeHoles[t].getPointByUuid(e);if(s)return s}}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}removePoint(e){let t=this.points.indexOf(e);t>=0&&this.points.splice(t,1),this.needsUpdate=!0}removePointById(e){let t=this.points.find(o=>o.uuid===e);t&&this.removePoint(t)}update(e=!0){for(let t=0,o=this.shapeHoles.length;t<o;t++)this.shapeHoles[t].update(!1);this._update(e)}extractShapePointsToBuffer(e,t=12,o=!1){this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t);let n=o?this.roundedCurveDivisions:this.curveDivisions;return vm(e,o?this.roundedCurves:this.curves,t,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=dl(this.points,e,!1),this.roundedCurveDivisions=dl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,t,o=12){return bm(e,this.curves,t,o,this.autoClose).reduce((s,a)=>s+a,0)*2}extractShapePointsToFlatArray(e,t=12){return this.subdivision=t,this.curveDivisions===void 0&&this.computeCurveDivisions(t),Sm(e,this.roundedCurves,t,this.autoClose)}getCurveIndexFromVertexId(e,t=!1){let o=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let n=t?this.roundedCurveDivisions:this.curveDivisions,s=0;t&&this.points[0].roundedCurveCorner!==void 0&&(s=Qr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let a=e-s;a<0&&(a+=n.reduce((l,c)=>l+c,0));for(let l=0,c=n.length;l<c;l++){let u=n[l];if(a<o+u)return[l,(a-o+1)/u];o+=u}return[0,1]}getCurveT(e,t,o){let n=this.points[e],s=this.points[e>=this.points.length-1?0:e+1],a=this.curveDivisions,l=a[e];if(ml(n,s)){let m=n.position.distanceTo(s.position);return n.position.distanceTo(fl.set(o.x,o.y))/m}let c=0;for(let m=0;m<e;m++)c+=a[m];return(t-c)/l}dispose(){this.eventDispatcher=null}_applyCurveForPoint(e,t){ml(t,e)?this.lineTo(e.position.x,e.position.y):this.bezierCurveTo(t.controls[1].position.x,t.controls[1].position.y,e.controls[0].position.x,e.controls[0].position.y,e.position.x,e.position.y);let o=this.curves[this.curves.length-1];e.curveBefore=o,t.curveAfter=o;let n=o.clone();e.roundedCurveBefore=n,t.roundedCurveAfter=n,e.roundedCurveCorner=void 0,this.roundedCurves.push(n)}_update(e=!0){if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let o=0,n=this.points.length;o<n;o++){let s=this.points[o];if(o===0)this.moveTo(s.position.x,s.position.y);else{let a=this.points[o-1];this._applyCurveForPoint(s,a)}}let t=this.getLastPoint();if(t?.curveAfter&&(t.curveAfter=void 0),this.isClosed){let o=this.points[0],n=this.points[this.points.length-1];this._applyCurveForPoint(o,n)}if(this.points.length>2){let o=0;for(let n=0,s=this.points.length;n<s;n++){let a=this.points[n],l=this.points[n-1]??this.points[this.points.length-1],c=this.points[n+1]??this.points[0],u=a.roundness,m=l&&c&&fm(l,a,c);if(!a.controlsMoved()&&u>0&&!m){let p=a.curveBefore,d=a.curveAfter;if(p===void 0||d===void 0)continue;let f=a.roundedCurveBefore,g=a.roundedCurveAfter,x=p.getLength(),y=d.getLength(),v=Math.min(u,x*.499),P=Math.min(u,y*.499),S=Math.min(v,P),b=1-S/x,E=S/y,w=p.getPointAt(b,fl),h=d.getPointAt(E,Lv);this._subSplitCurve(p,f,b,w,void 0),this._subSplitCurve(d,g,E,void 0,h);let _;if(this.useCubicForRoundedCorners){let N=pl(w,a.position,h)/2,I=Math.tan(N)*w.distanceTo(a.position),[L,A]=hm(w,h,I,Iv,Pv),k=gm(L,A,a.position),[W,ne]=ym(k,w,h,I,Av,Mv);_=new be.CubicBezierCurve(w.clone(),W.clone(),ne.clone(),h.clone())}else _=new be.QuadraticBezierCurve(w.clone(),a.position.clone(),h.clone());a.roundedCurveCorner=_,this.roundedCurves.splice(n+o,0,_),o++}}}e&&this.eventDispatcher?.dispatchEvent({type:"update"})}_subSplitCurve(e,t,o,n,s){if(e instanceof be.LineCurve)n!==void 0&&t.v2.copy(n),s!==void 0&&t.v1.copy(s);else{let a=e,l=t,c=a.getUtoTmapping(o,0),u=xm(a.v0,a.v1,a.v2,a.v3,c);return n!==void 0&&(l.v0.set(u[0],u[1]),l.v1.set(u[2],u[3]),l.v2.set(u[4],u[5]),l.v3.set(u[6],u[7])),s!==void 0&&(l.v0.set(u[6],u[7]),l.v1.set(u[8],u[9]),l.v2.set(u[10],u[11]),l.v3.set(u[12],u[13])),l}return t}clone(){let e=new Le(this._width,this._height);return e.points=this.points.map(t=>t.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(t=>t.clone()),e}toJSON(){return{points:this.points.reduce((e,t)=>e.concat(t.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){this.points=[],this.pointIDs=0;let t=e.points.length/7;for(let o=0;o<t;o++){let n=o*7,s=e.points[n+0],a=e.points[n+1],l=e.points[n+2],c=e.points[n+3],u=e.points[n+4],m=e.points[n+5],p=e.points[n+6],d=new Xt(be.MathUtils.generateUUID(),new be.Vector2(s,a));d.controls[0].position.set(l,c),d.controls[1].position.set(u,m),d.roundness=p,this.points.push(d)}return this.shapeHoles=e.shapeHoles?.length?e.shapeHoles.map(o=>{let n=new Le;return n.fromJSON(o),n}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let t=(n,s)=>{s instanceof be.CubicBezierCurve&&s.v3.equals(n.position)&&n.controls[0].position.copy(s.v2)},o=n=>{let s=[],a,l;for(a=0,l=n.length;a<l;a++)n[a]instanceof be.QuadraticBezierCurve&&(n[a]=dm(n[a]));for(a=0,l=n.length;a<l;a++){let m=n[a],p=a>0?n[a-1]:null,d;m instanceof be.CubicBezierCurve?(d=this.createPoint(m.v0),d.controls[1].position.copy(m.v1)):m instanceof be.LineCurve&&(d=this.createPoint(m.v1)),d!==void 0&&(p!==null&&t(d,p),s.push(d))}let c=n[n.length-1],u=!1;return c instanceof be.CubicBezierCurve?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),u=!0):c instanceof be.LineCurve&&c.v2.equals(s[0].position)&&(u=!0),this.isClosed=u,s};return this.points=o(e.curves),e instanceof be.Shape&&(this.shapeHoles=e.holes.map(n=>{let s=new Le;return s.fromShape(n),s})),this.update(),this}};var gl=Math.PI*2;function hl({x:i,y:r},e,t,o,n){return{x:i*e+o,y:r*t+n}}function Ov(i,r){let e=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),t=Math.cos(i),o=Math.sin(i),n=Math.cos(i+r),s=Math.sin(i+r);return[{x:t-o*e,y:o+t*e},{x:n+s*e,y:s-n*e},{x:n,y:s}]}function wm(i,r,e,t){let o=i*t-r*e<0?-1:1,n=Math.min(1,Math.max(-1,i*e+r*t));return o*Math.acos(n)}function _v(i,r,e,t,o,n,s,a,l,c){let u=Math.pow(o,2),m=Math.pow(n,2),p=Math.pow(s,2),d=Math.pow(a,2),f=u*m-u*d-m*p;f<0&&(f=0),f/=u*d+m*p,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/n*a,x=f*-n/o*s,y=g+(i+e)/2,v=x+(r+t)/2,P=(s-g)/o,S=(a-x)/n,b=(-s-g)/o,E=(-a-x)/n,w=wm(1,0,P,S),h=wm(P,S,b,E);return!c&&h>0&&(h-=gl),c&&h<0&&(h+=gl),{centerx:y,centery:v,ang1:w,ang2:h}}function Tm({px:i,py:r,cx:e,cy:t,rx:o,ry:n,largeArcFlag:s,sweepFlag:a}){let l=[];if(o===0||n===0)return[];let c=(i-e)/2,u=(r-t)/2;if(c===0&&u===0)return[];o=Math.abs(o),n=Math.abs(n);let m=Math.pow(c,2)/Math.pow(o,2)+Math.pow(u,2)/Math.pow(n,2);m>1&&(o*=Math.sqrt(m),n*=Math.sqrt(m));let p=_v(i,r,e,t,o,n,c,u,s,a),{ang1:d,ang2:f}=p,{centerx:g,centery:x}=p,y=Math.abs(f)/(gl/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);f/=v;for(let P=0;P<v;P++)l.push(Ov(d,f)),d+=f;return l.map(P=>{let{x:S,y:b}=hl(P[0],o,n,g,x),{x:E,y:w}=hl(P[1],o,n,g,x),{x:h,y:_}=hl(P[2],o,n,g,x);return{x1:S,y1:b,x2:E,y2:w,x:h,y:_}})}var yo=require("three");var Ee;(function(i){i[i.ODD=0]="ODD",i[i.NONZERO=1]="NONZERO",i[i.POSITIVE=2]="POSITIVE",i[i.NEGATIVE=3]="NEGATIVE",i[i.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(Ee||(Ee={}));var Ze;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Ze||(Ze={}));function pe(i,r){if(!i)throw r||"Assertion Failed!"}var ae=function(){function i(){}return i.vertEq=function(r,e){return r.s===e.s&&r.t===e.t},i.vertLeq=function(r,e){return r.s<e.s||r.s===e.s&&r.t<=e.t},i.transLeq=function(r,e){return r.t<e.t||r.t===e.t&&r.s<=e.s},i.edgeGoesLeft=function(r){return i.vertLeq(r.Dst,r.Org)},i.edgeGoesRight=function(r){return i.vertLeq(r.Org,r.Dst)},i.vertL1dist=function(r,e){return Math.abs(r.s-e.s)+Math.abs(r.t-e.t)},i.edgeEval=function(r,e,t){pe(i.vertLeq(r,e)&&i.vertLeq(e,t));var o=e.s-r.s,n=t.s-e.s;return o+n>0?o<n?e.t-r.t+(r.t-t.t)*(o/(o+n)):e.t-t.t+(t.t-r.t)*(n/(o+n)):0},i.edgeSign=function(r,e,t){pe(i.vertLeq(r,e)&&i.vertLeq(e,t));var o=e.s-r.s,n=t.s-e.s;return o+n>0?(e.t-t.t)*o+(e.t-r.t)*n:0},i.transEval=function(r,e,t){pe(i.transLeq(r,e)&&i.transLeq(e,t));var o=e.t-r.t,n=t.t-e.t;return o+n>0?o<n?e.s-r.s+(r.s-t.s)*(o/(o+n)):e.s-t.s+(t.s-r.s)*(n/(o+n)):0},i.transSign=function(r,e,t){pe(i.transLeq(r,e)&&i.transLeq(e,t));var o=e.t-r.t,n=t.t-e.t;return o+n>0?(e.s-t.s)*o+(e.s-r.s)*n:0},i.vertCCW=function(r,e,t){return r.s*(e.t-t.t)+e.s*(t.t-r.t)+t.s*(r.t-e.t)>=0},i.interpolate=function(r,e,t,o){return r=r<0?0:r,t=t<0?0:t,r<=t?t===0?(e+o)/2:e+(o-e)*(r/(r+t)):o+(e-o)*(t/(r+t))},i.intersect=function(r,e,t,o,n){var s,a,l;i.vertLeq(r,e)||(l=r,r=e,e=l),i.vertLeq(t,o)||(l=t,t=o,o=l),i.vertLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),i.vertLeq(t,e)?i.vertLeq(e,o)?(s=i.edgeEval(r,t,e),a=i.edgeEval(t,e,o),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,t.s,a,e.s)):(s=i.edgeSign(r,t,e),a=-i.edgeSign(r,o,e),s+a<0&&(s=-s,a=-a),n.s=i.interpolate(s,t.s,a,o.s)):n.s=(t.s+e.s)/2,i.transLeq(r,e)||(l=r,r=e,e=l),i.transLeq(t,o)||(l=t,t=o,o=l),i.transLeq(r,t)||(l=r,r=t,t=l,l=e,e=o,o=l),i.transLeq(t,e)?i.transLeq(e,o)?(s=i.transEval(r,t,e),a=i.transEval(t,e,o),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,t.t,a,e.t)):(s=i.transSign(r,t,e),a=-i.transSign(r,o,e),s+a<0&&(s=-s,a=-a),n.t=i.interpolate(s,t.t,a,o.t)):n.t=(t.t+e.t)/2},i}(),ti=function(){function i(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return i}(),Ys=function(){function i(r){this.side=r,this.next=null,this.Org=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Lface=null,this.activeRegion=null,this.winding=0}return Object.defineProperty(i.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(r){this.Sym.Lface=r},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(r){this.Sym.Org=r},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(r){this.Sym.Lnext=r},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(r){this.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(r){this.Lnext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(r){this.Sym.Onext=r},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(r){this.Sym.Onext.Sym=r},enumerable:!0,configurable:!0}),Object.defineProperty(i.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(r){this.Sym.Lnext.Sym=r},enumerable:!0,configurable:!0}),i}(),ln=function(){function i(){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 i}(),Nm=function(){function i(){var r=new ln,e=new ti,t=new Ys(0),o=new Ys(1);r.next=r.prev=r,r.anEdge=null,e.next=e.prev=e,t.next=t,t.Sym=o,o.next=o,o.Sym=t,this.vHead=r,this.fHead=e,this.eHead=t,this.eHeadSym=o}return i.prototype.makeEdge_=function(r){var e=new Ys(0),t=new Ys(1);r.Sym.side<r.side&&(r=r.Sym);var o=r.Sym.next;return t.next=o,o.Sym.next=e,e.next=r,r.Sym.next=t,e.Sym=t,e.Onext=e,e.Lnext=t,e.Org=null,e.Lface=null,e.winding=0,e.activeRegion=null,t.Sym=e,t.Onext=t,t.Lnext=e,t.Org=null,t.Lface=null,t.winding=0,t.activeRegion=null,e},i.prototype.splice_=function(r,e){var t=r.Onext,o=e.Onext;t.Sym.Lnext=e,o.Sym.Lnext=r,r.Onext=o,e.Onext=t},i.prototype.makeVertex_=function(r,e,t){var o=r;pe(o,"Vertex can't be null!");var n=t.prev;o.prev=n,n.next=o,o.next=t,t.prev=o,o.anEdge=e;var s=e;do s.Org=o,s=s.Onext;while(s!==e)},i.prototype.makeFace_=function(r,e,t){var o=r;pe(o,"Face can't be null");var n=t.prev;o.prev=n,n.next=o,o.next=t,t.prev=o,o.anEdge=e,o.trail=null,o.marked=!1,o.inside=t.inside;var s=e;do s.Lface=o,s=s.Lnext;while(s!==e)},i.prototype.killEdge_=function(r){r.Sym.side<r.side&&(r=r.Sym);var e=r.next,t=r.Sym.next;e.Sym.next=t,t.Sym.next=e},i.prototype.killVertex_=function(r,e){var t=r.anEdge,o=t;do o.Org=e,o=o.Onext;while(o!==t);var n=r.prev,s=r.next;s.prev=n,n.next=s},i.prototype.killFace_=function(r,e){var t=r.anEdge,o=t;do o.Lface=e,o=o.Lnext;while(o!==t);var n=r.prev,s=r.next;s.prev=n,n.next=s},i.prototype.makeEdge=function(){var r=new ln,e=new ln,t=new ti,o=this.makeEdge_(this.eHead);return this.makeVertex_(r,o,this.vHead),this.makeVertex_(e,o.Sym,this.vHead),this.makeFace_(t,o,this.fHead),o},i.prototype.splice=function(r,e){var t=!1,o=!1;if(r!==e){if(e.Org!==r.Org&&(o=!0,this.killVertex_(e.Org,r.Org)),e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(e,r),!o){var n=new ln;this.makeVertex_(n,e,r.Org),r.Org.anEdge=r}if(!t){var s=new ti;this.makeFace_(s,e,r.Lface),r.Lface.anEdge=r}}},i.prototype.delete=function(r){var e=r.Sym,t=!1;if(r.Lface!==r.Rface&&(t=!0,this.killFace_(r.Lface,r.Rface)),r.Onext===r)this.killVertex_(r.Org,null);else if(r.Rface.anEdge=r.Oprev,r.Org.anEdge=r.Onext,this.splice_(r,r.Oprev),!t){var o=new ti;this.makeFace_(o,r,r.Lface)}e.Onext===e?(this.killVertex_(e.Org,null),this.killFace_(e.Lface,null)):(r.Lface.anEdge=e.Oprev,e.Org.anEdge=e.Onext,this.splice_(e,e.Oprev)),this.killEdge_(r)},i.prototype.addEdgeVertex=function(r){var e=this.makeEdge_(r),t=e.Sym;this.splice_(e,r.Lnext),e.Org=r.Dst;var o=new ln;return this.makeVertex_(o,t,e.Org),e.Lface=t.Lface=r.Lface,e},i.prototype.splitEdge=function(r){var e=this.addEdgeVertex(r),t=e.Sym;return this.splice_(r.Sym,r.Sym.Oprev),this.splice_(r.Sym,t),r.Dst=t.Org,t.Dst.anEdge=t.Sym,t.Rface=r.Rface,t.winding=r.winding,t.Sym.winding=r.Sym.winding,t.idx=r.idx,t.Sym.idx=r.Sym.idx,t},i.prototype.connect=function(r,e){var t=!1,o=this.makeEdge_(r),n=o.Sym;if(e.Lface!==r.Lface&&(t=!0,this.killFace_(e.Lface,r.Lface)),this.splice_(o,r.Lnext),this.splice_(n,e),o.Org=r.Dst,n.Org=e.Org,o.Lface=n.Lface=r.Lface,r.Lface.anEdge=n,!t){var s=new ti;this.makeFace_(s,o,r.Lface)}return o},i.prototype.zapFace=function(r){var e=r.anEdge,t,o,n,s,a;o=e.Lnext;do t=o,o=t.Lnext,t.Lface=null,t.Rface===null&&(t.Onext===t?this.killVertex_(t.Org,null):(t.Org.anEdge=t.Onext,this.splice_(t,t.Oprev)),n=t.Sym,n.Onext===n?this.killVertex_(n.Org,null):(n.Org.anEdge=n.Onext,this.splice_(n,n.Oprev)),this.killEdge_(t));while(t!=e);s=r.prev,a=r.next,a.prev=s,s.next=a},i.prototype.countFaceVerts_=function(r){var e=r.anEdge,t=0;do t++,e=e.Lnext;while(e!==r.anEdge);return t},i.prototype.mergeConvexFaces=function(r){var e,t,o,n,s,a,l;for(e=this.fHead.next;e!==this.fHead;e=e.next)if(!!e.inside)for(t=e.anEdge,s=t.Org;o=t.Lnext,n=t.Sym,n&&n.Lface&&n.Lface.inside&&(a=this.countFaceVerts_(e),l=this.countFaceVerts_(n.Lface),a+l-2<=r&&ae.vertCCW(t.Lprev.Org,t.Org,n.Lnext.Lnext.Org)&&ae.vertCCW(n.Lprev.Org,n.Org,t.Lnext.Lnext.Org)&&(o=n.Lnext,this.delete(n),t=null,n=null)),!(t&&t.Lnext.Org===s);)t=o;return!0},i.prototype.check=function(){var r=this.fHead,e=this.vHead,t=this.eHead,o,n,s,a,l,c;for(n=r,n=r;(o=n.next)!==r;n=o){pe(o.prev===n),l=o.anEdge;do pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l),pe(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(pe(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){pe(s.prev===a),l=s.anEdge;do pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l),pe(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(pe(s.prev===a&&s.anEdge===null),c=t,c=t;(l=c.next)!==t;c=l)pe(l.Sym.next===c.Sym),pe(l.Sym!==l),pe(l.Sym.Sym===l),pe(l.Org!==null),pe(l.Dst!==null),pe(l.Lnext.Onext.Sym===l),pe(l.Onext.Sym.Lnext===l);pe(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)},i}(),Cm=function(){function i(){this.handle=null}return i}(),Lm=function(){function i(){this.key=null,this.node=0}return i}(),Dv=function(){function i(r,e){this.leq=e,this.max=0,this.nodes=[],this.handles=[],this.initialized=!1,this.freeList=0,this.size=0,this.max=r,this.nodes=[],this.handles=[];for(var t=0;t<r+1;t++)this.nodes[t]=new Cm,this.handles[t]=new Lm;this.initialized=!1,this.nodes[1].handle=1,this.handles[1].key=null}return i.prototype.floatDown_=function(r){var e=this.nodes,t=this.handles,o,n,s;for(o=e[r].handle;;){if(s=r<<1,s<this.size&&this.leq(t[e[s+1].handle].key,t[e[s].handle].key)&&++s,pe(s<=this.max),n=e[s].handle,s>this.size||this.leq(t[o].key,t[n].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=n,t[n].node=r,r=s}},i.prototype.floatUp_=function(r){var e=this.nodes,t=this.handles,o,n,s;for(o=e[r].handle;;){if(s=r>>1,n=e[s].handle,s===0||this.leq(t[n].key,t[o].key)){e[r].handle=o,t[o].node=r;break}e[r].handle=n,t[n].node=r,r=s}},i.prototype.init=function(){for(var r=this.size;r>=1;--r)this.floatDown_(r);this.initialized=!0},i.prototype.min=function(){return this.handles[this.nodes[1].handle].key},i.prototype.insert=function(r){var e,t;if(e=++this.size,e*2>this.max){this.max*=2;var o,n;for(n=this.nodes.length,this.nodes.length=this.max+1,o=n;o<this.nodes.length;o++)this.nodes[o]=new Cm;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Lm}return this.freeList===0?t=e:(t=this.freeList,this.freeList=this.handles[t].node),this.nodes[e].handle=t,this.handles[t].node=e,this.handles[t].key=r,this.initialized&&this.floatUp_(e),t},i.prototype.extractMin=function(){var r=this.nodes,e=this.handles,t=r[1].handle,o=e[t].key;return this.size>0&&(r[1].handle=r[this.size].handle,e[r[1].handle].node=1,e[t].key=null,e[t].node=this.freeList,this.freeList=t,--this.size,this.size>0&&this.floatDown_(1)),o},i.prototype.delete=function(r){var e=this.nodes,t=this.handles,o;pe(r>=1&&r<=this.max&&t[r].key!==null),o=t[r].node,e[o].handle=e[this.size].handle,t[e[o].handle].node=o,--this.size,o<=this.size&&(o<=1||this.leq(t[e[o>>1].handle].key,t[e[o].handle].key)?this.floatDown_(o):this.floatUp_(o)),t[r].key=null,t[r].node=this.freeList,this.freeList=r},i}(),yl=function(){function i(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return i}(),Im=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),Ev=function(){function i(r,e){this.frame=r,this.leq=e,this.head=new Im,this.head.next=this.head,this.head.prev=this.head}return i.prototype.min=function(){return this.head.next},i.prototype.max=function(){return this.head.prev},i.prototype.insert=function(r){return this.insertBefore(this.head,r)},i.prototype.search=function(r){var e=this.head;do e=e.next;while(e.key!==null&&!this.leq(this.frame,r,e.key));return e},i.prototype.insertBefore=function(r,e){do r=r.prev;while(r.key!==null&&!this.leq(this.frame,r.key,e));var t=new Im;return t.key=e,t.next=r.next,r.next.prev=t,t.prev=r,r.next=t,t},i.prototype.delete=function(r){r.next.prev=r.prev,r.prev.next=r.next},i}(),Bv=function(){function i(){}return i.regionBelow=function(r){return r.nodeUp.prev.key},i.regionAbove=function(r){return r.nodeUp.next.key},i.debugEvent=function(r){},i.addWinding=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},i.edgeLeq=function(r,e,t){var o=r.event,n=e.eUp,s=t.eUp;if(n.Dst===o)return s.Dst===o?ae.vertLeq(n.Org,s.Org)?ae.edgeSign(s.Dst,n.Org,s.Org)<=0:ae.edgeSign(n.Dst,s.Org,n.Org)>=0:ae.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ae.edgeSign(n.Dst,o,n.Org)>=0;var a=ae.edgeEval(n.Dst,o,n.Org),l=ae.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(r,e){e.fixUpperEdge&&pe(e.eUp.winding===0),e.eUp.activeRegion=null,r.dict.delete(e.nodeUp)},i.fixUpperEdge=function(r,e,t){pe(e.fixUpperEdge),r.mesh.delete(e.eUp),e.fixUpperEdge=!1,e.eUp=t,t.activeRegion=e},i.topLeftRegion=function(r,e){var t=e.eUp.Org,o;do e=i.regionAbove(e);while(e.eUp.Org===t);if(e.fixUpperEdge){if(o=r.mesh.connect(i.regionBelow(e).eUp.Sym,e.eUp.Lnext),o===null)return null;i.fixUpperEdge(r,e,o),e=i.regionAbove(e)}return e},i.topRightRegion=function(r){var e=r.eUp.Dst;do r=i.regionAbove(r);while(r.eUp.Dst===e);return r},i.addRegionBelow=function(r,e,t){var o=new yl;return o.eUp=t,o.nodeUp=r.dict.insertBefore(e.nodeUp,o),o.fixUpperEdge=!1,o.sentinel=!1,o.dirty=!1,t.activeRegion=o,o},i.isWindingInside=function(r,e){switch(r.windingRule){case Ee.ODD:return(e&1)!==0;case Ee.NONZERO:return e!==0;case Ee.POSITIVE:return e>0;case Ee.NEGATIVE:return e<0;case Ee.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},i.computeWinding=function(r,e){e.windingNumber=i.regionAbove(e).windingNumber+e.eUp.winding,e.inside=i.isWindingInside(r,e.windingNumber)},i.finishRegion=function(r,e){var t=e.eUp,o=t.Lface;o.inside=e.inside,o.anEdge=t,i.deleteRegion(r,e)},i.finishLeftRegions=function(r,e,t){for(var o,n=null,s=e,a=e.eUp;s!==t;){if(s.fixUpperEdge=!1,n=i.regionBelow(s),o=n.eUp,o.Org!=a.Org){if(!n.fixUpperEdge){i.finishRegion(r,s);break}o=r.mesh.connect(a.Lprev,o.Sym),i.fixUpperEdge(r,n,o)}a.Onext!==o&&(r.mesh.splice(o.Oprev,o),r.mesh.splice(a,o)),i.finishRegion(r,s),a=n.eUp,s=n}return a},i.addRightEdges=function(r,e,t,o,n,s){var a,l,c,u,m=!0;c=t;do pe(ae.vertLeq(c.Org,c.Dst)),i.addRegionBelow(r,e,c.Sym),c=c.Onext;while(c!==o);for(n===null&&(n=i.regionBelow(e).eUp.Rprev),l=e,u=n;a=i.regionBelow(l),c=a.eUp.Sym,c.Org===u.Org;)c.Onext!==u&&(r.mesh.splice(c.Oprev,c),r.mesh.splice(u.Oprev,c)),a.windingNumber=l.windingNumber-c.winding,a.inside=i.isWindingInside(r,a.windingNumber),l.dirty=!0,!m&&i.checkForRightSplice(r,l)&&(i.addWinding(c,u),i.deleteRegion(r,l),r.mesh.delete(u)),m=!1,l=a,u=c;l.dirty=!0,pe(l.windingNumber-c.winding===a.windingNumber),s&&i.walkDirtyRegions(r,l)},i.spliceMergeVertices=function(r,e,t){r.mesh.splice(e,t)},i.vertexWeights=function(r,e,t){var o=ae.vertL1dist(e,r),n=ae.vertL1dist(t,r),s=.5*n/(o+n),a=.5*o/(o+n);r.coords[0]+=s*e.coords[0]+a*t.coords[0],r.coords[1]+=s*e.coords[1]+a*t.coords[1],r.coords[2]+=s*e.coords[2]+a*t.coords[2]},i.getIntersectData=function(r,e,t,o,n,s){e.coords[0]=e.coords[1]=e.coords[2]=0,e.idx=-1,i.vertexWeights(e,t,o),i.vertexWeights(e,n,s)},i.checkForRightSplice=function(r,e){var t=i.regionBelow(e),o=e.eUp,n=t.eUp;if(ae.vertLeq(o.Org,n.Org)){if(ae.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ae.vertEq(o.Org,n.Org)?o.Org!==n.Org&&(r.pq.delete(o.Org.pqHandle),i.spliceMergeVertices(r,n.Oprev,o)):(r.mesh.splitEdge(n.Sym),r.mesh.splice(o,n.Oprev),e.dirty=t.dirty=!0)}else{if(ae.edgeSign(o.Dst,n.Org,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),r.mesh.splice(n.Oprev,o)}return!0},i.checkForLeftSplice=function(r,e){var t=i.regionBelow(e),o=e.eUp,n=t.eUp,s;if(pe(!ae.vertEq(o.Dst,n.Dst)),ae.vertLeq(o.Dst,n.Dst)){if(ae.edgeSign(o.Dst,n.Dst,o.Org)<0)return!1;i.regionAbove(e).dirty=e.dirty=!0,s=r.mesh.splitEdge(o),r.mesh.splice(n.Sym,s),s.Lface.inside=e.inside}else{if(ae.edgeSign(n.Dst,o.Dst,n.Org)>0)return!1;e.dirty=t.dirty=!0,s=r.mesh.splitEdge(n),r.mesh.splice(o.Lnext,n.Sym),s.Rface.inside=e.inside}return!0},i.checkForIntersect=function(r,e){var t=i.regionBelow(e),o=e.eUp,n=t.eUp,s=o.Org,a=n.Org,l=o.Dst,c=n.Dst,u,m,p=new ln,d,f;if(pe(!ae.vertEq(c,l)),pe(ae.edgeSign(l,r.event,s)<=0),pe(ae.edgeSign(c,r.event,a)>=0),pe(s!==r.event&&a!==r.event),pe(!e.fixUpperEdge&&!t.fixUpperEdge),s===a||(u=Math.min(s.t,l.t),m=Math.max(a.t,c.t),u>m))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 i.debugEvent(r),ae.intersect(l,s,c,a,p),pe(Math.min(s.t,l.t)<=p.t),pe(p.t<=Math.max(a.t,c.t)),pe(Math.min(c.s,l.s)<=p.s),pe(p.s<=Math.max(a.s,s.s)),ae.vertLeq(p,r.event)&&(p.s=r.event.s,p.t=r.event.t),d=ae.vertLeq(s,a)?s:a,ae.vertLeq(d,p)&&(p.s=d.s,p.t=d.t),ae.vertEq(p,s)||ae.vertEq(p,a)?(i.checkForRightSplice(r,e),!1):!ae.vertEq(l,r.event)&&ae.edgeSign(l,r.event,p)>=0||!ae.vertEq(c,r.event)&&ae.edgeSign(c,r.event,p)<=0?c===r.event?(r.mesh.splitEdge(o.Sym),r.mesh.splice(n.Sym,o),e=i.topLeftRegion(r,e),o=i.regionBelow(e).eUp,i.finishLeftRegions(r,i.regionBelow(e),t),i.addRightEdges(r,e,o.Oprev,o,o,!0),!0):l===r.event?(r.mesh.splitEdge(n.Sym),r.mesh.splice(o.Lnext,n.Oprev),t=e,e=i.topRightRegion(e),f=i.regionBelow(e).eUp.Rprev,t.eUp=n.Oprev,n=i.finishLeftRegions(r,t,null),i.addRightEdges(r,e,n.Onext,o.Rprev,f,!0),!0):(ae.edgeSign(l,r.event,p)>=0&&(i.regionAbove(e).dirty=e.dirty=!0,r.mesh.splitEdge(o.Sym),o.Org.s=r.event.s,o.Org.t=r.event.t),ae.edgeSign(c,r.event,p)<=0&&(e.dirty=t.dirty=!0,r.mesh.splitEdge(n.Sym),n.Org.s=r.event.s,n.Org.t=r.event.t),!1):(r.mesh.splitEdge(o.Sym),r.mesh.splitEdge(n.Sym),r.mesh.splice(n.Oprev,o),o.Org.s=p.s,o.Org.t=p.t,o.Org.pqHandle=r.pq.insert(o.Org),i.getIntersectData(r,o.Org,s,l,a,c),i.regionAbove(e).dirty=e.dirty=t.dirty=!0,!1)},i.walkDirtyRegions=function(r,e){for(var t=i.regionBelow(e),o,n;;){for(;t.dirty;)e=t,t=i.regionBelow(t);if(!e.dirty&&(t=e,e=i.regionAbove(e),e===null||!e.dirty))return;if(e.dirty=!1,o=e.eUp,n=t.eUp,o.Dst!==n.Dst&&i.checkForLeftSplice(r,e)&&(t.fixUpperEdge?(i.deleteRegion(r,t),r.mesh.delete(n),t=i.regionBelow(e),n=t.eUp):e.fixUpperEdge&&(i.deleteRegion(r,e),r.mesh.delete(o),e=i.regionAbove(t),o=e.eUp)),o.Org!==n.Org)if(o.Dst!==n.Dst&&!e.fixUpperEdge&&!t.fixUpperEdge&&(o.Dst===r.event||n.Dst===r.event)){if(i.checkForIntersect(r,e))return}else i.checkForRightSplice(r,e);o.Org===n.Org&&o.Dst===n.Dst&&(i.addWinding(n,o),i.deleteRegion(r,e),r.mesh.delete(o),e=i.regionAbove(t))}},i.connectRightVertex=function(r,e,t){var o,n=t.Onext,s=i.regionBelow(e),a=e.eUp,l=s.eUp,c=!1;if(a.Dst!==l.Dst&&i.checkForIntersect(r,e),ae.vertEq(a.Org,r.event)&&(r.mesh.splice(n.Oprev,a),e=i.topLeftRegion(r,e),n=i.regionBelow(e).eUp,i.finishLeftRegions(r,i.regionBelow(e),s),c=!0),ae.vertEq(l.Org,r.event)&&(r.mesh.splice(t,l.Oprev),t=i.finishLeftRegions(r,s,null),c=!0),c){i.addRightEdges(r,e,t.Onext,n,n,!0);return}ae.vertLeq(l.Org,a.Org)?o=l.Oprev:o=a,o=r.mesh.connect(t.Lprev,o),i.addRightEdges(r,e,o,o.Onext,o.Onext,!1),o.Sym.activeRegion.fixUpperEdge=!0,i.walkDirtyRegions(r,e)},i.connectLeftDegenerate=function(r,e,t){var o,n,s,a,l;if(o=e.eUp,ae.vertEq(o.Org,t)){pe(!1),i.spliceMergeVertices(r,o,t.anEdge);return}if(!ae.vertEq(o.Dst,t)){r.mesh.splitEdge(o.Sym),e.fixUpperEdge&&(r.mesh.delete(o.Onext),e.fixUpperEdge=!1),r.mesh.splice(t.anEdge,o),i.sweepEvent(r,t);return}pe(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(pe(n!==s),i.deleteRegion(r,l),r.mesh.delete(s),s=n.Oprev),r.mesh.splice(t.anEdge,s),ae.edgeGoesLeft(n)||(n=null),i.addRightEdges(r,e,s.Onext,a,n,!0)},i.connectLeftVertex=function(r,e){var t,o,n,s,a,l,c=new yl;if(c.eUp=e.anEdge.Sym,t=r.dict.search(c).key,o=i.regionBelow(t),!!o){if(s=t.eUp,a=o.eUp,ae.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(r,t,e);return}if(n=ae.vertLeq(a.Dst,s.Dst)?t:o,t.inside||n.fixUpperEdge){if(n===t)l=r.mesh.connect(e.anEdge.Sym,s.Lnext);else{var u=r.mesh.connect(a.Dnext,e.anEdge);l=u.Sym}n.fixUpperEdge?i.fixUpperEdge(r,n,l):i.computeWinding(r,i.addRegionBelow(r,t,l)),i.sweepEvent(r,e)}else i.addRightEdges(r,t,e.anEdge,e.anEdge,null,!0)}},i.sweepEvent=function(r,e){r.event=e,i.debugEvent(r);for(var t=e.anEdge;t.activeRegion===null;)if(t=t.Onext,t===e.anEdge){i.connectLeftVertex(r,e);return}var o=i.topLeftRegion(r,t.activeRegion);pe(o!==null);var n=i.regionBelow(o),s=n.eUp,a=i.finishLeftRegions(r,n,null);a.Onext===s?i.connectRightVertex(r,o,a):i.addRightEdges(r,o,a.Onext,s,s,!0)},i.addSentinel=function(r,e,t,o){var n=new yl,s=r.mesh.makeEdge();s.Org.s=t,s.Org.t=o,s.Dst.s=e,s.Dst.t=o,r.event=s.Dst,n.eUp=s,n.windingNumber=0,n.inside=!1,n.fixUpperEdge=!1,n.sentinel=!0,n.dirty=!1,n.nodeUp=r.dict.insert(n)},i.initEdgeDict=function(r){r.dict=new Ev(r,i.edgeLeq);var e=r.bmax[0]-r.bmin[0],t=r.bmax[1]-r.bmin[1],o=r.bmin[0]-e,n=r.bmax[0]+e,s=r.bmin[1]-t,a=r.bmax[1]+t;i.addSentinel(r,o,n,s),i.addSentinel(r,o,n,a)},i.doneEdgeDict=function(r){for(var e,t=0;(e=r.dict.min().key)!==null;)e.sentinel||(pe(e.fixUpperEdge),pe(++t===1)),pe(e.windingNumber===0),i.deleteRegion(r,e)},i.removeDegenerateEdges=function(r){var e,t,o,n=r.mesh.eHead;for(e=n.next;e!==n;e=t)t=e.next,o=e.Lnext,ae.vertEq(e.Org,e.Dst)&&e.Lnext.Lnext!==e&&(i.spliceMergeVertices(r,o,e),r.mesh.delete(e),e=o,o=e.Lnext),o.Lnext===e&&(o!==e&&((o===t||o===t.Sym)&&(t=t.next),r.mesh.delete(o)),(e===t||e===t.Sym)&&(t=t.next),r.mesh.delete(e))},i.initPriorityQ=function(r){var e,t,o,n=0;for(o=r.mesh.vHead,t=o.next;t!==o;t=t.next)n++;for(n+=8,e=r.pq=new Dv(n,ae.vertLeq),o=r.mesh.vHead,t=o.next;t!==o;t=t.next)t.pqHandle=e.insert(t);return t!==o?!1:(e.init(),!0)},i.donePriorityQ=function(r){r.pq=null},i.removeDegenerateFaces=function(r,e){var t,o,n;for(t=e.fHead.next;t!==e.fHead;t=o)o=t.next,n=t.anEdge,pe(n.Lnext!==n),n.Lnext.Lnext===n&&(i.addWinding(n.Onext,n),r.mesh.delete(n));return!0},i.computeInterior=function(r,e){e===void 0&&(e=!0);var t,o;if(i.removeDegenerateEdges(r),!i.initPriorityQ(r))return!1;for(i.initEdgeDict(r);(t=r.pq.extractMin())!==null;){for(;o=r.pq.min(),!(o===null||!ae.vertEq(o,t));)o=r.pq.extractMin(),i.spliceMergeVertices(r,t.anEdge,o.anEdge);i.sweepEvent(r,t)}return r.event=r.dict.min().key.eUp.Org,i.debugEvent(r),i.doneEdgeDict(r),i.donePriorityQ(r),i.removeDegenerateFaces(r,r.mesh)?(e&&r.mesh.check(),!0):!1},i}(),Gv=function(){function i(){this.mesh=new Nm,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=Ee.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return i.prototype.dot_=function(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]},i.prototype.normalize_=function(r){var e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2];if(!e)throw"Zero-size vector!";e=Math.sqrt(e),r[0]/=e,r[1]/=e,r[2]/=e},i.prototype.longAxis_=function(r){var e=0;return Math.abs(r[1])>Math.abs(r[0])&&(e=1),Math.abs(r[2])>Math.abs(r[e])&&(e=2),e},i.prototype.computeNormal_=function(r){var e,t,o,n,s,a,l=[0,0,0],c=[0,0,0],u=[0,0,0],m=[0,0,0],p=[0,0,0],d=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var x=0;x<3;++x)n=e.coords[x],c[x]=n,f[x]=e,l[x]=n,d[x]=e;for(e=g.next;e!==g;e=e.next)for(var y=0;y<3;++y)n=e.coords[y],n<c[y]&&(c[y]=n,f[y]=e),n>l[y]&&(l[y]=n,d[y]=e);var v=0;if(l[1]-c[1]>l[0]-c[0]&&(v=1),l[2]-c[2]>l[v]-c[v]&&(v=2),c[v]>=l[v]){r[0]=0,r[1]=0,r[2]=1;return}for(a=0,t=f[v],o=d[v],u[0]=t.coords[0]-o.coords[0],u[1]=t.coords[1]-o.coords[1],u[2]=t.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)m[0]=e.coords[0]-o.coords[0],m[1]=e.coords[1]-o.coords[1],m[2]=e.coords[2]-o.coords[2],p[0]=u[1]*m[2]-u[2]*m[1],p[1]=u[2]*m[0]-u[0]*m[2],p[2]=u[0]*m[1]-u[1]*m[0],s=p[0]*p[0]+p[1]*p[1]+p[2]*p[2],s>a&&(a=s,r[0]=p[0],r[1]=p[1],r[2]=p[2]);a<=0&&(r[0]=r[1]=r[2]=0,r[this.longAxis_(u)]=1)},i.prototype.checkOrientation_=function(){for(var r=this.mesh.fHead,e,t=this.mesh.vHead,o,n=0,s=r.next;s!==r;s=s.next)if(o=s.anEdge,!(o.winding<=0))do n+=(o.Org.s-o.Dst.s)*(o.Org.t+o.Dst.t),o=o.Lnext;while(o!==s.anEdge);if(n<0){for(e=t.next;e!==t;e=e.next)e.t=-e.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},i.prototype.projectPolygon_=function(){var r=this.mesh.vHead,e=[0,0,0],t,o,n=!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),n=!0),t=this.sUnit,o=this.tUnit;var s=this.longAxis_(e);t[s]=0,t[(s+1)%3]=1,t[(s+2)%3]=0,o[s]=0,o[(s+1)%3]=0,o[(s+2)%3]=e[s]>0?1:-1;for(var a=r.next;a!==r;a=a.next)a.s=this.dot_(a.coords,t),a.t=this.dot_(a.coords,o);n&&this.checkOrientation_();for(var l=!0,c=r.next;c!==r;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))},i.prototype.addWinding_=function(r,e){r.winding+=e.winding,r.Sym.winding+=e.Sym.winding},i.prototype.tessellateMonoRegion_=function(r,e){var t,o;if(t=e.anEdge,!(t.Lnext!==t&&t.Lnext.Lnext!==t))throw"Mono region invalid";for(;ae.vertLeq(t.Dst,t.Org);t=t.Lprev);for(;ae.vertLeq(t.Org,t.Dst);t=t.Lnext);o=t.Lprev;for(var n=void 0;t.Lnext!==o;)if(ae.vertLeq(t.Dst,o.Org)){for(;o.Lnext!==t&&(ae.edgeGoesLeft(o.Lnext)||ae.edgeSign(o.Org,o.Dst,o.Lnext.Dst)<=0);)n=r.connect(o.Lnext,o),o=n.Sym;o=o.Lprev}else{for(;o.Lnext!==t&&(ae.edgeGoesRight(t.Lprev)||ae.edgeSign(t.Dst,t.Org,t.Lprev.Org)>=0);)n=r.connect(t,t.Lprev),t=n.Sym;t=t.Lnext}if(o.Lnext===t)throw"Mono region invalid";for(;o.Lnext.Lnext!==t;)n=r.connect(o.Lnext,o),o=n.Sym;return!0},i.prototype.tessellateInterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)if(e=t.next,t.inside&&!this.tessellateMonoRegion_(r,t))return!1;return!0},i.prototype.discardExterior_=function(r){for(var e,t=r.fHead.next;t!==r.fHead;t=e)e=t.next,t.inside||r.zapFace(t)},i.prototype.setWindingNumber_=function(r,e,t){for(var o,n=r.eHead.next;n!==r.eHead;n=o)o=n.next,n.Rface.inside!==n.Lface.inside?n.winding=n.Lface.inside?e:-e:t?r.delete(n):n.winding=0},i.prototype.getNeighbourFace_=function(r){return!r.Rface||!r.Rface.inside?-1:r.Rface.n},i.prototype.outputPolymesh_=function(r,e,t,o){var n,s=0,a=0,l;t>3&&r.mergeConvexFaces(t);for(var c=r.vHead.next;c!==r.vHead;c=c.next)c.n=-1;for(var u=r.fHead.next;u!==r.fHead;u=u.next)if(u.n=-1,!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;c.n===-1&&(c.n=a,a++),l++,n=n.Lnext}while(n!==u.anEdge);if(l>t)throw"Face vertex greater that support polygon";u.n=s,++s}this.elementCount=s,e===Ze.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*t,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=r.vHead.next;c!==r.vHead;c=c.next)if(c.n!==-1){var m=c.n*o;this.vertices[m+0]=c.coords[0],this.vertices[m+1]=c.coords[1],o>2&&(this.vertices[m+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var p=0,u=r.fHead.next;u!==r.fHead;u=u.next)if(!!u.inside){n=u.anEdge,l=0;do{var c=n.Org;this.elements[p++]=c.n,l++,n=n.Lnext}while(n!==u.anEdge);for(var d=l;d<t;++d)this.elements[p++]=-1;if(e===Ze.CONNECTED_POLYGONS){n=u.anEdge;do this.elements[p++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==u.anEdge);for(var f=l;f<t;++f)this.elements[p++]=-1}}},i.prototype.outputContours_=function(r,e){var t,o,n=0,s=0;this.vertexCount=0,this.elementCount=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){o=t=a.anEdge;do this.vertexCount++,t=t.Lnext;while(t!==o);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*e,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var l=0,c=0,u=0;n=0;for(var a=r.fHead.next;a!==r.fHead;a=a.next)if(!!a.inside){s=0,o=t=a.anEdge;do this.vertices[l++]=t.Org.coords[0],this.vertices[l++]=t.Org.coords[1],e>2&&(this.vertices[l++]=t.Org.coords[2]),this.vertexIndices[c++]=this.vertexIdCallback?this.vertexIdCallback(t):t.Org.idx,s++,t=t.Lnext;while(t!==o);this.elements[u++]=n,this.elements[u++]=s,n+=s}},i.prototype.addContour=function(r,e){this.mesh===null&&(this.mesh=new Nm),r<2&&(r=2),r>3&&(r=3);for(var t=null,o=0;o<e.length;o+=r)t===null?(t=this.mesh.makeEdge(),this.mesh.splice(t,t.Sym)):(this.mesh.splitEdge(t),t=t.Lnext),t.Org.coords[0]=e[o+0],t.Org.coords[1]=e[o+1],r>2?t.Org.coords[2]=e[o+2]:t.Org.coords[2]=0,t.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(t),t.winding=1,t.Sym.winding=-1},i.prototype.tesselate=function(r,e,t,o,n,s){if(r===void 0&&(r=Ee.ODD),e===void 0&&(e=Ze.POLYGONS),s===void 0&&(s=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,n&&(this.normal[0]=n[0],this.normal[1]=n[1],this.normal[2]=n[2]),this.windingRule=r,o<2&&(o=2),o>3&&(o=3),!this.mesh)return!1;this.projectPolygon_(),Bv.computeInterior(this,s);var a=this.mesh;return e===Ze.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===Ze.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,t,o),!0},i}();function go(i){var r=i.windingRule,e=r===void 0?Ee.ODD:r,t=i.elementType,o=t===void 0?Ze.POLYGONS:t,n=i.polySize,s=n===void 0?3:n,a=i.vertexSize,l=a===void 0?2:a,c=i.normal,u=c===void 0?[0,0,1]:c,m=i.contours,p=m===void 0?[]:m,d=i.strict,f=d===void 0?!0:d,g=i.debug,x=g===void 0?!1:g;if(!p&&f)throw new Error("Contours can't be empty");if(!!p){var y=new Gv;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var v=0;v<p.length;v++)y.addContour(l||2,p[v]);return y.tesselate(e,o,s,l,u,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:x?y.mesh:void 0}}}var mM=Ee.ODD,dM=Ee.NONZERO,fM=Ee.POSITIVE,hM=Ee.NEGATIVE,gM=Ee.ABS_GEQ_TWO,yM=Ze.POLYGONS,xM=Ze.CONNECTED_POLYGONS,vM=Ze.BOUNDARY_CONTOURS;var cn=class extends yo.BufferGeometry{constructor(e,t=12,o={}){super();this.type="ShapeGeometry";this.windingRule=Ee.ODD;this.elementType=Ze.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=t,this._triangulationOptions=Object.assign({windingRule:Ee.ODD,elementType:Ze.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(f=>f.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,u,m;for(let f=0,g=n.length/2;f<g;f++){let x=f*2,y=n[x+0],v=n[x+1];if(u!==void 0&&y!==u&&(l=!1),m!==void 0&&v!==m&&(c=!1),u=y,m=v,!l&&!c)break}!l&&!c&&(a=go({contours:[n,...s],windingRule:this._triangulationOptions.windingRule,elementType:this._triangulationOptions.elementType,polySize:this._triangulationOptions.polySize,vertexSize:this._triangulationOptions.vertexSize,strict:this._triangulationOptions.strict}));let p=a?.vertexCount??1,d=a?.elementCount??1;if(this._positionAttribute=new yo.BufferAttribute(new Float32Array(p*3),3),this._normalAttribute=new yo.BufferAttribute(new Float32Array(p*3),3),this._uvAttribute=new yo.BufferAttribute(new Float32Array(p*2),2),this._indexAttribute=new yo.BufferAttribute(new Uint32Array(d*3),1),a){let f=1/0,g=-1/0,x=1/0,y=-1/0;for(let S=0,b=p;S<b;S++){let E=S*2,w=a.vertices[E+0],h=a.vertices[E+1];w<f&&(f=w),w>g&&(g=w),h<x&&(x=h),h>y&&(y=h)}let v=g-f,P=y-x;for(let S=0,b=p;S<b;S++){let E=S*2,w=a.vertices[E+0],h=a.vertices[E+1],_=(w-f)/v,N=(h-x)/P;this._positionAttribute.setXYZ(S,w,h,0),this._normalAttribute.setXYZ(S,0,0,1),this._uvAttribute.setXY(S,_,N)}for(let S=0,b=d;S<b;S++){let E=S*3,w=a.elements[E+0],h=a.elements[E+1],_=a.elements[E+2];this._indexAttribute.setX(E+0,w),this._indexAttribute.setX(E+1,h),this._indexAttribute.setX(E+2,_)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,(a?.elementCount??1)*3)}clone(){let e=new cn(this._shape,this._curveSegments);return e.userData=Un(this.userData),e}};var xo=require("three");var Ks=class{constructor(r=256,e=!1){this.capacity=r,this.size=0,this.debug=e,this.debug&&console.log(`allocating with cap ${r}`);let t=r*Ks.eSize;this.buffer=new ArrayBuffer(t);let o=Float32Array.BYTES_PER_ELEMENT,n=0;this.positions=new Float32Array(this.buffer,n*o,3*r),n+=3*r,this.normals=new Float32Array(this.buffer,n*o,3*r),n+=3*r,this.uvs=new Float32Array(this.buffer,n*o,2*r)}realloc(r,e=!1){if(r<this.size)throw Error("cannot shrink buffer");if(r<=this.capacity&&!e)return;this.debug&&console.log(`resizing from ${this.capacity} \u2192 ${r}`);let t=r*Ks.eSize,o=new ArrayBuffer(t),n=Float32Array.BYTES_PER_ELEMENT,s=0,a=new Float32Array(o,s*n,3*r);s+=3*r;let l=new Float32Array(o,s*n,3*r);s+=3*r;let c=new Float32Array(o,s*n,2*r);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=r}get(r=1){let e=this.size+r;if(e>this.capacity){let o=this.capacity;for(;e>o;)o*=2;this.realloc(o)}let t=this.size;return this.size=e,t}reserve(r){let e=this.size+r;e>this.capacity&&this.realloc(e)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} \u2192 ${this.size}`),this.realloc(this.size,!0)}},ri=Ks;ri.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var xl=(i,r)=>([e,t])=>(t<e&&(t+=r),(i>=e?i:i+r)<=t),un=class extends xo.BufferGeometry{constructor(e,t,o=0,n=12,s=3){super();this.type="ShapeGeometry";this.vertexCache={};this._shape=e,this._depth=t,this._bevel=o,this._curveSegments=n,this._bevelSegmentsInput=s,o<=0?(this._bevelSize=0,this._bevelSegments=0):(this._bevelSize=Math.min(o,t/2-1e-12),this._bevelSegments=Math.floor(s));let a=this._shape.extractShapePointsToFlatArray([],n),l=this._shape.shapeHoles.map(w=>{let h=w.extractShapePointsToFlatArray([],n),_=[];for(let N=h.length-1;N>=1;N-=2){let I=h[N-1],L=h[N-0];_.push(I,L)}return _}),c=go({windingRule:Ee.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),u=go({windingRule:Ee.ODD,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let m=c.elementCount;if(u){c.elementCount+=u.elementCount;for(let w=0;w<u.elements.length;w++){let h=u.elements[w],_=w%2===0?c.vertexCount:0;c.elements.push(h+_)}for(let w=0;w<u.vertexIndices.length;w++){let h=u.vertexIndices[w],_=c.vertexCount;c.vertexIndices.push(h+_)}for(let w=0;w<u.vertices.length;w++){let h=u.vertices[w];c.vertices.push(h)}}let p=1/0,d=-1/0,f=1/0,g=-1/0;for(let w=0,h=c.vertexCount;w<h;w++){let _=w*2,N=c.vertices[_+0],I=c.vertices[_+1];N<p&&(p=N),N>d&&(d=N),I<f&&(f=I),I>g&&(g=I)}this._minX=p,this._minY=f,this._width=d-p,this._height=g-f;let x=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new ri(x);let y=[],v=[];for(let w=c.elementCount-1;w>=0;w--){let h=w>=m,_=w*2,N=c.elements[_+0],I=c.elements[_+1],L=N+I,A={start:N,count:I,normals:[],continuous:[],concave:[]},k=N,W=L-1,ne=N+1,ue=this._shape.roundedCurves.length;do{let z=k-N,B=c.vertices[W*2+0],D=c.vertices[W*2+1],M=c.vertices[k*2+0],G=c.vertices[k*2+1],Q=c.vertices[ne*2+0],j=c.vertices[ne*2+1],V=M-B,F=G-D,O=Math.sqrt(V*V+F*F);V/=O,F/=O;let q=M-Q,Z=G-j,ee=Math.sqrt(q*q+Z*Z);q/=ee,Z/=ee,A.normals[z*2+0]=-Z,A.normals[z*2+1]=q,A.concave[z]=V*Z-F*q>0;let H=c.vertexIndices[k];if(Array.isArray(H))A.continuous[z]=!1;else{let[J,$]=this._shape.getCurveIndexFromVertexId(H-1,!0);if($>0&&$<1)A.continuous[z]=!0;else{let re=$===1?J+1:J-1;re=(re+ue)%ue;let ce=$===1?0:1,ie=this._shape.roundedCurves[J].getTangent($),fe=this._shape.roundedCurves[re].getTangent(ce);A.continuous[z]=ie.dot(fe)>.95}}h&&(A.normals[z*2+0]*=-1,A.normals[z*2+1]*=-1),[W,k,ne]=[k,ne,ne+1],ne>=L&&(ne-=I)}while(ne!==N+1);let se=[];se.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(N*2,L*2),vertexCount:I,vertexIndices:new Array(I).fill(!0).map((z,B)=>[B,B]),elements:[0,I],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(N*2,L*2)});for(let z=1;z<=this._bevelSegments;z++){let B=z/this._bevelSegments*Math.PI/2,D=(1-Math.cos(B))*this._bevelSize,M=[],G=[],Q=[],j=[],V=0;for(let O=0;O<I;O++){let q=O*2,Z=(O-1+I)%I*2,ee=c.vertices[A.start*2+q+0],H=c.vertices[A.start*2+q+1],J=-A.normals[Z+0]*D,$=-A.normals[Z+1]*D,re=-A.normals[q+0]*D,ce=-A.normals[q+1]*D;if(A.concave[O]||!A.concave[O]&&h){let ie=Math.atan2($,J),fe=Math.atan2(ce,re);fe>ie&&(fe-=Math.PI*2);let Re=fe-ie;if(A.continuous[O]||h){let ge=ie+Re/2,qe=Math.cos(ge)*D,Ce=Math.sin(ge)*D;M[2*V+0]=ee+qe*(h?-1:1),M[2*V+1]=H+Ce*(h?-1:1),j[V]=O,V++}else{let ge=Math.max(1,Math.floor(n/4*Math.abs(Re)/Math.PI));for(let qe=0;qe<=ge;qe++){let Ce=ie+Re*(qe/ge),Tt=Math.cos(Ce)*D,Vt=Math.sin(Ce)*D;M[2*V+0]=ee+Tt,M[2*V+1]=H+Vt,j[V]=O,V++}}}else M[2*V+0]=ee+J,M[2*V+1]=H+$,j[V]=O,G[O]=V,V++,M[2*V+0]=ee,M[2*V+1]=H,j[V]=O,V++,M[2*V+0]=ee+re,M[2*V+1]=H+ce,j[V]=O,Q[O]=V,V++}let F=go({windingRule:Ee.POSITIVE,elementType:Ze.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[M],edgeCreateCallback:O=>{let Z=O.Org.idx,ee=j[Z],H=j[(Z+1)%j.length];O.idx=[ee,H],O.Sym.idx=[H,ee]},vertexIdCallback:O=>{let q=O.Lprev.idx;return[q?q[1]:0,O.idx[0]]}});if(!F)throw console.log("Error"),new Error(`error generating bevel geometry for ${z}'th loop`);if(!F.vertexCount)break;for(let O=0;O<F.vertexIndices.length;O++){let[q,Z]=F.vertexIndices[O];if(q===Z)continue;let ee=Z;Z<q&&(ee+=I);for(let H=q;H<ee;H++){let J=H%I,$=(H+1)%I;if(!A.continuous[J]||!A.continuous[$]){F.vertexIndices[O]=[q,J],F.vertexIndices.splice(O+1,0,[$,Z]),F.vertices.splice((O+1)*2,0,F.vertices[O*2],F.vertices[O*2+1]);break}}}se.push({bevelI:z,angle:B,size:D,boundary:F,reverseMap:j,insetPoints:M})}let K=(z,B,D)=>{let M=0,G=z.boundary.vertexIndices.length;for(;M<G&&D(z.boundary.vertexIndices[B]);)B=(B+1)%G,M++;return M},U=y.length;for(let z=1;z<se.length;z++){let B=se[z-1],D=se[z],M=B.boundary.vertexIndices.length,G=D.boundary.vertexIndices.length;if(!M||!G)break;let Q=A.concave.length,j=0,V=xl(j,I);for(;!B.boundary.vertexIndices.filter(V).length||!D.boundary.vertexIndices.filter(V).length;)j++,V=xl(j,I);let F=B.boundary.vertexIndices.findIndex(V),O=D.boundary.vertexIndices.findIndex(V);do F=(F+1)%M;while(V(B.boundary.vertexIndices[F]));do O=(O+1)%G;while(V(D.boundary.vertexIndices[O]));j=(j+1)%I;let q=j,Z=this.buildBevelVert(A,B,(F-1+M)%M),ee=this.buildBevelVert(A,D,(O-1+G)%G),H=Z,J=ee,$,re,ce=!1;do{V=xl(j,I);let ie=K(B,F,V),fe=K(D,O,V),Re=ce;if(ce=!1,ie&&!fe){for(let ge=0;ge<ie;ge++)$=this.buildBevelVert(A,B,(F+ge)%M,ge/(ie-1)),y.push(H.topN,$.topP,J.topN),y.push($.bottomP,H.bottomN,J.bottomN),H=$;ce=!0}else if(!ie&&fe)for(let ge=0;ge<fe;ge++)re=this.buildBevelVert(A,D,(O+ge)%G,ge/(fe-1)),y.push(J.topN,H.topP,re.topP),y.push(H.bottomP,J.bottomN,re.bottomP),J=re;else if(ie&&fe)if($=this.buildBevelVert(A,B,F,0),re=this.buildBevelVert(A,D,O,0),Re?(y.push(H.topN,re.topP,J.topN),y.push(H.topN,$.topP,re.topP),y.push(re.bottomP,H.bottomN,J.bottomN),y.push(re.bottomP,$.bottomP,H.bottomN)):(y.push(J.topN,H.topN,$.topP),y.push(J.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,J.bottomN),y.push($.bottomP,J.bottomN,re.bottomP)),H=$,J=re,ie===fe)for(let ge=1;ge<ie;ge++)$=this.buildBevelVert(A,B,(F+ge)%M,ge/(ie-1)),re=this.buildBevelVert(A,D,(O+ge)%G,ge/(fe-1)),y.push(H.topN,$.topP,J.topN),y.push(J.topN,$.topP,re.topP),y.push($.bottomP,H.bottomN,J.bottomN),y.push($.bottomP,J.bottomN,re.bottomP),H=$,J=re;else if(ie>fe){let ge=ie/fe,qe=0;for(let Ce=1;Ce<ie;Ce++)$=this.buildBevelVert(A,B,(F+Ce)%M,Ce/(ie-1)),y.push(H.topN,$.topP,J.topN),y.push($.bottomP,H.bottomN,J.bottomN),H=$,Ce>(qe+1)*ge&&(qe++,re=this.buildBevelVert(A,D,(O+qe)%G,qe/(fe-1)),y.push(J.topN,$.topP,re.topP),y.push($.bottomP,J.bottomN,re.bottomP),J=re)}else{let ge=fe/ie,qe=0;for(let Ce=1;Ce<fe;Ce++)re=this.buildBevelVert(A,D,(O+Ce)%G,Ce/(fe-1)),y.push(J.topN,$.topP,re.topP),y.push($.bottomP,J.bottomN,re.bottomP),J=re,Ce>(qe+1)*ge&&(qe++,$=this.buildBevelVert(A,B,(F+qe)%M,qe/(ie-1)),y.push(H.topN,$.topP,J.topN),y.push($.bottomP,H.bottomN,J.bottomN),H=$)}F=(F+ie)%M,O=(O+fe)%G,j=(j+1)%Q}while(j!==q)}{let z=se[0];for(let B=0,D=z.boundary.vertexCount;B<D;B++){let M=this.buildBevelVert(A,z,B),G=this.buildBevelVert(A,z,(B+1)%D);y.push(G.topP,M.topN,M.bottomN),y.push(G.topP,M.bottomN,G.bottomP)}}if(h){let z=[];for(let B=y.length-1;B>=U+2;B-=3){let D=y[B-2],M=y[B-1],G=y[B-0];z.push(G,M,D)}y.splice(U,y.length-U,...z)}if(h){let z=[];for(let B=se[se.length-1].boundary.vertices.length-1;B>=1;B-=2){let D=se[se.length-1].boundary.vertices[B-1],M=se[se.length-1].boundary.vertices[B-0];z.push(D,M)}v.push(z)}if(!h){let z=se[se.length-1],B=go({windingRule:se.length>1?Ee.POSITIVE:Ee.ODD,elementType:Ze.POLYGONS,vertexSize:2,strict:!0,contours:[z.insetPoints,...v]});if(!B)throw new Error("Error generating geometry for surface");l.length===0&&Object.assign(this,{capStartIndex:y.length});for(let D=0;D<B.elementCount*3;D+=3){let M=this.buildSurfaceVert(B,B.elements[D+0]),G=this.buildSurfaceVert(B,B.elements[D+1]),Q=this.buildSurfaceVert(B,B.elements[D+2]);y.push(M.top,G.top,Q.top),y.push(Q.bottom,G.bottom,M.bottom)}}this.vertexCache={}}this._buffer.shrink();let P=new xo.BufferAttribute(Uint32Array.from(y),1),S=new xo.BufferAttribute(this._buffer.positions,3),b=new xo.BufferAttribute(this._buffer.normals,3),E=new xo.BufferAttribute(this._buffer.uvs,2);S.needsUpdate=!0,b.needsUpdate=!0,E.needsUpdate=!0,P.needsUpdate=!0,this.setAttribute("position",S),this.setAttribute("normal",b),this.setAttribute("uv",E),this.setIndex(P)}buildSurfaceVert(e,t){let o=t.toString();if(o in this.vertexCache)return this.vertexCache[o];let n=e.vertices[t*2+0],s=e.vertices[t*2+1],a=(n-this._minX)/this._width,l=(s-this._minY)/this._height,c=this._buffer.get(2),u=c*3,m=c*2,p={top:c+0,bottom:c+1};return this._buffer.positions[u+0]=n,this._buffer.positions[u+1]=s,this._buffer.positions[u+2]=this._depth,this._buffer.normals[u+0]=0,this._buffer.normals[u+1]=0,this._buffer.normals[u+2]=1,this._buffer.uvs[m+0]=a,this._buffer.uvs[m+1]=l,this._buffer.positions[u+3]=n,this._buffer.positions[u+4]=s,this._buffer.positions[u+5]=0,this._buffer.normals[u+3]=0,this._buffer.normals[u+4]=0,this._buffer.normals[u+5]=-1,this._buffer.uvs[m+2]=a,this._buffer.uvs[m+3]=l,this.vertexCache[o]=p,p}buildBevelVert(e,t,o,n=1){let s=`${t.bevelI}:${o}`;if(s in this.vertexCache)return this.vertexCache[s];let[a,l]=t.boundary.vertexIndices[o],c,u,m,p;a!==l?(u=a,c=l,p=!1,m=e.continuous[u]&&e.continuous[c]):(c=a,u=(c-1+e.count)%e.count,p=e.concave[c]&&t.bevelI>0,m=e.continuous[c]||p);let d=Math.cos(t.angle),f=Math.sin(t.angle),g=o*2,x=c*2,y=u*2,v=t.boundary.vertices[g+0],P=t.boundary.vertices[g+1],S=(1-f)*this._bevelSize,b=(v-this._minX)/this._width,E=(P-this._minY)/this._height,w=e.normals[x+0],h=e.normals[x+1],_=e.normals[y+0],N=e.normals[y+1];if(p){let W=_-w,ne=N-h;w=w+W*(1-n),h=h+ne*(1-n);let ue=Math.sqrt(w*w+h*h);w/=ue,h/=ue}let I=this._buffer.get(m?2:4),L=I*3,A=I*2,k={i:o,fi:c,topP:I+0,topN:I+0,bottomP:I+1,bottomN:I+1};return this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=w*d,this._buffer.normals[L+1]=h*d,this._buffer.normals[L+2]=f,this._buffer.uvs[A+0]=b,this._buffer.uvs[A+1]=E,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=w*d,this._buffer.normals[L+4]=h*d,this._buffer.normals[L+5]=-f,this._buffer.uvs[A+2]=E,this._buffer.uvs[A+3]=b,m||(I+=2,L+=6,A+=4,k.topP=I+0,k.bottomP=I+1,this._buffer.positions[L+0]=v,this._buffer.positions[L+1]=P,this._buffer.positions[L+2]=this._depth-S,this._buffer.normals[L+0]=_*d,this._buffer.normals[L+1]=N*d,this._buffer.normals[L+2]=f,this._buffer.uvs[A+0]=b,this._buffer.uvs[A+1]=E,this._buffer.positions[L+3]=v,this._buffer.positions[L+4]=P,this._buffer.positions[L+5]=S,this._buffer.normals[L+3]=_*d,this._buffer.normals[L+4]=N*d,this._buffer.normals[L+5]=-f,this._buffer.uvs[A+2]=E,this._buffer.uvs[A+3]=b),this.vertexCache[s]=k,k}clone(){let e=new un(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Un(this.userData),e}};var bt=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??0),s=i.shape??r?.shape,a=s?.roundness??e.roundness;s!==void 0&&(s instanceof Le?(s.width!==t||s.height!==o)&&s.applySize(t,o):s=new Le(t,o).fromJSON(s),i.parameters?.roundness!==void 0&&i.parameters?.roundness>0&&s.update(!1));let l=s??new Le(t,o);return{parameters:Object.assign(e,{width:t,height:o,depth:n,roundness:a}),shape:l}}static build(i){let{depth:r,extrudeBevelSize:e,extrudeBevelSegments:t,subdivisions:o,roundness:n}=i.parameters;i.shape.roundness=n;let s;return r<=0?s=new cn(i.shape,o):s=new un(i.shape,r,e,o,t),Object.assign(s,{userData:{...i,type:"VectorGeometry"}})}};var mn=require("three"),Am=Math.PI*2,Mm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:r,height:e,spikes:t,angle:o,innerRadius:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c=i.shape,u=r*.5,m=e*.5,p=Rv(c,u,m,o*Math.PI/180,t,n);c.isClosed=!0,c.update();let d=bt.create({shape:c,parameters:{subdivisions:p,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(d,{userData:{...i,type:"EllipseGeometry"}})}};function Rv(i,r,e,t,o,n){if(t>=Am)return o>30||o%4===0?(Vv(i,r,e,n),Math.round(o/4)):Pm(i,t,o,r,e,n);let s={x:0,y:e},a=t+Math.PI*.5,l={x:Math.cos(a)*r,y:Math.sin(a)*e},c=Tm({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:r,ry:e,largeArcFlag:t>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?zv(i,s.x,s.y,c,o,r,e,n):Pm(i,t,o,r,e,n)}function zv(i,r,e,t,o,n,s,a){let l=Math.round(o/t.length);i.addPoint(pn(r,e));for(let c=0,u=t.length;c<u;c++){let m=t[c],p=i.points[c],d=pn(m.x,m.y);p.controls[1].position.set(m.x1,m.y1),d.controls[0].position.set(m.x2,m.y2),i.addPoint(d)}return a>0?Om(i,n,s,a):i.addPoint(pn(0,0)),l}function Pm(i,r,e,t,o,n){let s=-r/e;for(let a=0;a<=e;a++){let l=s*a,c=Math.sin(l)*t,u=Math.cos(l)*o;i.addPoint(pn(c,u))}return r<Am?n>0?Om(i,t,o,n):i.addPoint(pn(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&_m(i,t,o,n)),1}function Vv(i,r,e,t=0,o=0,n=0){let s=.5522847498,a=r*s,l=e*s;i.addPoint(Qs(o-r,n,o-r,n-l,o-r,n+l)),i.addPoint(Qs(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Qs(o+r,n,o+r,n+l,o+r,n-l)),i.addPoint(Qs(o,n-e,o+a,n-e,o-a,n-e)),t>0&&_m(i,r,e,t)}function pn(i,r){return new Xt(mn.MathUtils.generateUUID(),new mn.Vector2(i,r))}function Qs(i,r,e,t,o,n){let s=pn(i,r);return s.controls[0].position.set(e,t),s.controls[1].position.set(o,n),s}function Om(i,r,e,t){Dm(i,r,e,t).forEach(n=>i.addPoint(n))}function _m(i,r,e,t){let o=Dm(i,r,e,t),n=new Le;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Dm(i,r,e,t){let o=t*r/100,n=o*(Math.abs(e)/Math.abs(r)),s=new mn.Vector2(o/r,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=mn.MathUtils.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),u=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(u),l.controls[1].position.copy(c)}),a}var Br=require("three"),Em=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),t=Math.abs(e.width),o=Math.abs(e.height??t),n=Math.abs(e.depth??t),s=Math.abs(Math.min(t,n))/2;return{parameters:Object.assign(e,{width:t,height:o,depth:n,radius:s,segments:Math.round(e.segments),pathSegments:Math.round(e.pathSegments),cornerSegments:Math.round(e.cornerSegments)})}}static build(i){let{width:r,height:e,depth:t,radius:o,revolutions:n,segments:s,pathRadius:a,pathType:l,pathSegments:c,cornerRadius:u,cornerSegments:m}=i.parameters,p=new oi(!1,r,e,t,o,n,s,a,l,c,u,m);return Object.assign(p,{userData:{...i,type:"HelixGeometry"}})}},oi=class extends Br.BufferGeometry{constructor(r=!0,e=1,t=1,o=1,n=1,s=1,a=1,l=1,c=1,u=1,m=1,p=1){super();let d=r&&s===1;d&&(p=0),m>100&&(m=100);let f=()=>new Br.Vector3,g=new Br.Vector3,x=f(),y=f(),v=f(),P,S,b,E,w,h,_,N,I=f(),L=f(),A=f(),k=f(),W=f(),ne=f(),ue=f(),se=f(),K=t-2*l+.001,U=K/s,z=Math.ceil(a*s),B=z+1,D=K/z,M=-K/2,G=u+1,Q=2*Math.PI/u,j=Math.PI/2/p,V=.01,F=Math.min((1-m/100)*l,l-V),O=l-F,q=0,Z=2,ee=p*Z+Z,H=G*ee/Z,J=H+G*B,$=G*(B+ee),[re,ce,ie]=[3,3,2].map(je=>Array($*je).fill(0)),fe=[],Re=n-l;function ge(je,Dt){let nr=Math.PI/2;h=Dt*D,N=2*Math.PI*(h%U)/U+nr,h+=M,_=Math.sin(N)*Re,w=Math.cos(N)*Re,r?je.set(w,_,h):je.set(w,h,_)}ge(g,-1e-10),ge(x,0),I.copy(g),ge(g,1);let qe=g.distanceTo(x),Ce=O+F,Tt=qe*z+2*Ce,Vt=F,Mo=Tt-Ce;for(let je=0;je<=z;je++){ge(y,je),se.subVectors(y,I).normalize(),I.copy(y),ne.copy(y).setComponent(+r+1,0).normalize(),ue.crossVectors(se,ne).normalize();let Dt=je===0,nr=je===z,gf=Dt?3*Math.PI/2:j,yf=Dt?Vt:Mo,xf=Dt?G:J,vf=Dt?0:$-G,bf=se.clone().multiplyScalar(Dt?-O:O).add(y),Sf=se.clone().multiplyScalar(Dt?-1:1).normalize();for(let Ir=0;Ir<G;Ir++){let cc=Ir*Q;if(L.addVectors(g.copy(ne).multiplyScalar(l*Math.cos(cc)),x.copy(ue).multiplyScalar(l*Math.sin(cc))),A.copy(L).normalize(),Dt||nr){d||(q=vf+Ir,[0,1,2].forEach(Nt=>{re[q*3+Nt]=bf.getComponent(Nt),ce[q*3+Nt]=Sf.getComponent(Nt)}),ie[q*2]=+nr,ie[q*2+1]=Ir/u),x.copy(A).multiplyScalar(F),v.addVectors(y,x);for(let Nt=0;Nt<p;Nt++){let Oa=Nt*j+gf;k.addVectors(g.copy(se).multiplyScalar(O*Math.sin(Oa)),x.copy(A).multiplyScalar(O*Math.cos(Oa))),W.copy(k).normalize(),x.addVectors(v,k),k.normalize(),q=xf+Nt*G+Ir,[0,1,2].forEach(ji=>{re[q*3+ji]=x.getComponent(ji),ce[q*3+ji]=W.getComponent(ji)});let wf=+Dt+Math.sin(Oa);ie[q*2]=(yf+O*wf)/Tt,ie[q*2+1]=Ir/u}}x.addVectors(y,L),q=H+je*G+Ir,[0,1,2].forEach(Nt=>{re[q*3+Nt]=x.getComponent(Nt),ce[q*3+Nt]=A.getComponent(Nt)}),ie[q*2]=(Ce+je*qe)/Tt,ie[q*2+1]=Ir/u}}let _t=B+2*p+Z,Oo=1,[Fi,Ui]=d?[Oo,Oo+B-1]:[0,_t-1];for(let je=Fi;je<=Ui-1;je++){let Dt=d&&je===Ui-1;for(let nr=0;nr<G-1;nr++)P=je*G+nr,S=P+1,b=(Dt?nr:P)+G,E=(Dt?nr+1:S)+G,je===0?fe.push(S,E,b):je===_t-2?fe.push(P,S,b):fe.push(P,S,b,S,E,b)}this.setIndex(fe),this.setAttribute("position",new Br.Float32BufferAttribute(re,3)),this.setAttribute("normal",new Br.Float32BufferAttribute(ce,3)),this.setAttribute("uv",new Br.Float32BufferAttribute(ie,2))}};var Bm=require("three");var Gm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:r,height:e,depth:t,detail:o,corner:n,cornerSides:s}=i.parameters,a=o===0&&n!==0?new ni(r*.5,n,s):new Bm.IcosahedronBufferGeometry(r*.5,o);return a.scale(1,e/r,t/r),Object.assign(a,{userData:{...i,type:"IcosahedronGeometry"}})}},ni=class extends Kr{constructor(r=1,e=.2,t=4){let o=(1+Math.sqrt(5))/2,n=[-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(n,s,a,r,e,t),this.type=a}static fromJSON(r){return new ni(r.radius,r.corner,r.cornerSides)}};var Js=require("three"),Rm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){(i.parameters?.points??[]).forEach(t=>{Array.isArray(t)&&(t.x=t[0],t.y=t[1])});let e=Object.assign({},r?.parameters??{width:100,segments:64,verticalSegments:64,points:[{x:0,y:-50,id:0},{x:50,y:-50,id:1},{x:50,y:50,id:2},{x:0,y:50,id:3}]},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{points:r,segments:e,verticalSegments:t}=i.parameters,o=new Js.Shape;o.moveTo(r[0].x,r[0].y),o.bezierCurveTo(r[1].x,r[1].y,r[2].x,r[2].y,r[3].x,r[3].y);let n=new Js.LatheBufferGeometry(o.extractPoints(t).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:{...i,type:"LatheGeometry"}})}};var mr=require("three");var Gr=require("three");var oe=require("three"),pr=new oe.Matrix4,vl=new oe.Object3D,Zs=new oe.Vector3,Jr=class extends oe.EventDispatcher{constructor(){super(),this.uuid=oe.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}applyMatrix4(r){let e=new oe.Matrix3().getNormalMatrix(r);for(let t=0,o=this.vertices.length;t<o;t++)this.vertices[t].applyMatrix4(r);for(let t=0,o=this.faces.length;t<o;t++){let n=this.faces[t];n.normal.applyMatrix3(e).normalize();for(let s=0,a=n.vertexNormals.length;s<a;s++)n.vertexNormals[s].applyMatrix3(e).normalize()}return this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this}rotateX(r){return pr.makeRotationX(r),this.applyMatrix4(pr),this}rotateY(r){return pr.makeRotationY(r),this.applyMatrix4(pr),this}rotateZ(r){return pr.makeRotationZ(r),this.applyMatrix4(pr),this}translate(r,e,t){return pr.makeTranslation(r,e,t),this.applyMatrix4(pr),this}scale(r,e,t){return pr.makeScale(r,e,t),this.applyMatrix4(pr),this}lookAt(r){return vl.lookAt(r),vl.updateMatrix(),this.applyMatrix4(vl.matrix),this}fromBufferGeometry(r){let e=this,t=r.index!==null?r.index:void 0,o=r.attributes;if(o.position===void 0)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;let n=o.position,s=o.normal,a=o.color,l=o.uv,c=o.uv2;c!==void 0&&(this.faceVertexUvs[1]=[]);for(let p=0;p<n.count;p++)e.vertices.push(new oe.Vector3().fromBufferAttribute(n,p)),a!==void 0&&e.colors.push(new oe.Color().fromBufferAttribute(a,p));function u(p,d,f,g){let x=a===void 0?[]:[e.colors[p].clone(),e.colors[d].clone(),e.colors[f].clone()],y=s===void 0?[]:[new oe.Vector3().fromBufferAttribute(s,p),new oe.Vector3().fromBufferAttribute(s,d),new oe.Vector3().fromBufferAttribute(s,f)],v=new dn(p,d,f,y,x,g);e.faces.push(v),l!==void 0&&e.faceVertexUvs[0].push([new oe.Vector2().fromBufferAttribute(l,p),new oe.Vector2().fromBufferAttribute(l,d),new oe.Vector2().fromBufferAttribute(l,f)]),c!==void 0&&e.faceVertexUvs[1].push([new oe.Vector2().fromBufferAttribute(c,p),new oe.Vector2().fromBufferAttribute(c,d),new oe.Vector2().fromBufferAttribute(c,f)])}let m=r.groups;if(m.length>0)for(let p=0;p<m.length;p++){let d=m[p],f=d.start,g=d.count;for(let x=f,y=f+g;x<y;x+=3)t!==void 0?u(t.getX(x),t.getX(x+1),t.getX(x+2),d.materialIndex):u(x,x+1,x+2,d.materialIndex)}else if(t!==void 0)for(let p=0;p<t.count;p+=3)u(t.getX(p),t.getX(p+1),t.getX(p+2));else for(let p=0;p<n.count;p+=3)u(p,p+1,p+2);return this.computeFaceNormals(),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Zs).negate(),this.translate(Zs.x,Zs.y,Zs.z),this}normalize(){this.computeBoundingSphere();let r=this.boundingSphere.center,e=this.boundingSphere.radius,t=e===0?1:1/e,o=new oe.Matrix4;return o.set(t,0,0,-t*r.x,0,t,0,-t*r.y,0,0,t,-t*r.z,0,0,0,1),this.applyMatrix4(o),this}computeFaceNormals(){let r=new oe.Vector3,e=new oe.Vector3;for(let t=0,o=this.faces.length;t<o;t++){let n=this.faces[t],s=this.vertices[n.a],a=this.vertices[n.b],l=this.vertices[n.c];r.subVectors(l,a),e.subVectors(s,a),r.cross(e),r.normalize(),n.normal.copy(r)}}computeVertexNormals(r=!0){let e=new Array(this.vertices.length);for(let t=0,o=this.vertices.length;t<o;t++)e[t]=new oe.Vector3;if(r){let t=new oe.Vector3,o=new oe.Vector3;for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=this.vertices[a.a],c=this.vertices[a.b],u=this.vertices[a.c];t.subVectors(u,c),o.subVectors(l,c),t.cross(o),e[a.a].add(t),e[a.b].add(t),e[a.c].add(t)}}else{this.computeFaceNormals();for(let t=0,o=this.faces.length;t<o;t++){let n=this.faces[t];e[n.a].add(n.normal),e[n.b].add(n.normal),e[n.c].add(n.normal)}}for(let t=0,o=this.vertices.length;t<o;t++)e[t].normalize();for(let t=0,o=this.faces.length;t<o;t++){let n=this.faces[t],s=n.vertexNormals;s.length===3?(s[0].copy(e[n.a]),s[1].copy(e[n.b]),s[2].copy(e[n.c])):(s[0]=e[n.a].clone(),s[1]=e[n.b].clone(),s[2]=e[n.c].clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let r=0,e=this.faces.length;r<e;r++){let t=this.faces[r],o=t.vertexNormals;o.length===3?(o[0].copy(t.normal),o[1].copy(t.normal),o[2].copy(t.normal)):(o[0]=t.normal.clone(),o[1]=t.normal.clone(),o[2]=t.normal.clone())}this.faces.length>0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.__originalFaceNormal?o.__originalFaceNormal.copy(o.normal):o.__originalFaceNormal=o.normal.clone(),o.__originalVertexNormals||(o.__originalVertexNormals=[]);for(let n=0,s=o.vertexNormals.length;n<s;n++)o.__originalVertexNormals[n]?o.__originalVertexNormals[n].copy(o.vertexNormals[n]):o.__originalVertexNormals[n]=o.vertexNormals[n].clone()}let r=new Jr;r.faces=this.faces;for(let e=0,t=this.morphTargets.length;e<t;e++){if(!this.morphNormals[e]){this.morphNormals[e]={},this.morphNormals[e].faceNormals=[],this.morphNormals[e].vertexNormals=[];let n=this.morphNormals[e].faceNormals,s=this.morphNormals[e].vertexNormals;for(let a=0,l=this.faces.length;a<l;a++){let c=new oe.Vector3,u={a:new oe.Vector3,b:new oe.Vector3,c:new oe.Vector3};n.push(c),s.push(u)}}let o=this.morphNormals[e];r.vertices=this.morphTargets[e].vertices,r.computeFaceNormals(),r.computeVertexNormals();for(let n=0,s=this.faces.length;n<s;n++){let a=this.faces[n],l=o.faceNormals[n],c=o.vertexNormals[n];l.copy(a.normal),c.a.copy(a.vertexNormals[0]),c.b.copy(a.vertexNormals[1]),c.c.copy(a.vertexNormals[2])}}for(let e=0,t=this.faces.length;e<t;e++){let o=this.faces[e];o.normal=o.__originalFaceNormal,o.vertexNormals=o.__originalVertexNormals}}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new oe.Box3),this.boundingBox.setFromPoints(this.vertices)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new oe.Sphere),this.boundingSphere.setFromPoints(this.vertices)}merge(r,e,t=0){if(!(r&&r.isGeometry)){console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",r);return}let o,n=this.vertices.length,s=this.vertices,a=r.vertices,l=this.faces,c=r.faces,u=this.colors,m=r.colors;e!==void 0&&(o=new oe.Matrix3().getNormalMatrix(e));for(let p=0,d=a.length;p<d;p++){let g=a[p].clone();e!==void 0&&g.applyMatrix4(e),s.push(g)}for(let p=0,d=m.length;p<d;p++)u.push(m[p].clone());for(let p=0,d=c.length;p<d;p++){let f=c[p],g,x,y=f.vertexNormals,v=f.vertexColors,P=new dn(f.a+n,f.b+n,f.c+n);P.normal.copy(f.normal),o!==void 0&&P.normal.applyMatrix3(o).normalize();for(let S=0,b=y.length;S<b;S++)g=y[S].clone(),o!==void 0&&g.applyMatrix3(o).normalize(),P.vertexNormals.push(g);P.color.copy(f.color);for(let S=0,b=v.length;S<b;S++)x=v[S],P.vertexColors.push(x.clone());P.materialIndex=f.materialIndex+t,l.push(P)}for(let p=0,d=r.faceVertexUvs.length;p<d;p++){let f=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let g=0,x=f.length;g<x;g++){let y=f[g],v=[];for(let P=0,S=y.length;P<S;P++)v.push(y[P].clone());this.faceVertexUvs[p].push(v)}}}mergeMesh(r){if(!(r&&r.isMesh)){console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",r);return}r.matrixAutoUpdate&&r.updateMatrix(),this.merge(r.geometry,r.matrix)}mergeVertices(r=4){let e={},t=[],o=[],n=Math.pow(10,r);for(let l=0,c=this.vertices.length;l<c;l++){let u=this.vertices[l],m=Math.round(u.x*n)+"_"+Math.round(u.y*n)+"_"+Math.round(u.z*n);e[m]===void 0?(e[m]=l,t.push(this.vertices[l]),o[l]=t.length-1):o[l]=o[e[m]]}let s=[];for(let l=0,c=this.faces.length;l<c;l++){let u=this.faces[l];u.a=o[u.a],u.b=o[u.b],u.c=o[u.c];let m=[u.a,u.b,u.c];for(let p=0;p<3;p++)if(m[p]===m[(p+1)%3]){s.push(l);break}}for(let l=s.length-1;l>=0;l--){let c=s[l];this.faces.splice(c,1);for(let u=0,m=this.faceVertexUvs.length;u<m;u++)this.faceVertexUvs[u].splice(c,1)}let a=this.vertices.length-t.length;return this.vertices=t,a}setFromPoints(r){this.vertices=[];for(let e=0,t=r.length;e<t;e++){let o=r[e];this.vertices.push(new oe.Vector3(o.x,o.y,o.z||0))}return this}sortFacesByMaterialIndex(){let r=this.faces,e=r.length;for(let l=0;l<e;l++)r[l]._id=l;function t(l,c){return l.materialIndex-c.materialIndex}r.sort(t);let o=this.faceVertexUvs[0],n=this.faceVertexUvs[1],s,a;o&&o.length===e&&(s=[]),n&&n.length===e&&(a=[]);for(let l=0;l<e;l++){let c=r[l]._id;s&&s.push(o[c]),a&&a.push(n[c])}s&&(this.faceVertexUvs[0]=s),a&&(this.faceVertexUvs[1]=a)}toJSON(){let r={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.parameters!==void 0){let f=this.parameters;for(let g in f)f[g]!==void 0&&(r[g]=f[g]);return r}let e=[];for(let f=0;f<this.vertices.length;f++){let g=this.vertices[f];e.push(g.x,g.y,g.z)}let t=[],o=[],n={},s=[],a={},l=[],c={};for(let f=0;f<this.faces.length;f++){let g=this.faces[f],x=!0,y=!1,v=this.faceVertexUvs[0][f]!==void 0,P=g.normal.length()>0,S=g.vertexNormals.length>0,b=g.color.r!==1||g.color.g!==1||g.color.b!==1,E=g.vertexColors.length>0,w=0;if(w=u(w,0,0),w=u(w,1,x),w=u(w,2,y),w=u(w,3,v),w=u(w,4,P),w=u(w,5,S),w=u(w,6,b),w=u(w,7,E),t.push(w),t.push(g.a,g.b,g.c),t.push(g.materialIndex),v){let h=this.faceVertexUvs[0][f];t.push(d(h[0]),d(h[1]),d(h[2]))}if(P&&t.push(m(g.normal)),S){let h=g.vertexNormals;t.push(m(h[0]),m(h[1]),m(h[2]))}if(b&&t.push(p(g.color)),E){let h=g.vertexColors;t.push(p(h[0]),p(h[1]),p(h[2]))}}function u(f,g,x){return x?f|1<<g:f&~(1<<g)}function m(f){let g=f.x.toString()+f.y.toString()+f.z.toString();return n[g]!==void 0||(n[g]=o.length/3,o.push(f.x,f.y,f.z)),n[g]}function p(f){let g=f.r.toString()+f.g.toString()+f.b.toString();return a[g]!==void 0||(a[g]=s.length,s.push(f.getHex())),a[g]}function d(f){let g=f.x.toString()+f.y.toString();return c[g]!==void 0||(c[g]=l.length/2,l.push(f.x,f.y)),c[g]}return r.data={},r.data.vertices=e,r.data.normals=o,s.length>0&&(r.data.colors=s),l.length>0&&(r.data.uvs=[l]),r.data.faces=t,r}clone(){return new Jr().copy(this)}copy(r){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=r.name;let e=r.vertices;for(let p=0,d=e.length;p<d;p++)this.vertices.push(e[p].clone());let t=r.colors;for(let p=0,d=t.length;p<d;p++)this.colors.push(t[p].clone());let o=r.faces;for(let p=0,d=o.length;p<d;p++)this.faces.push(o[p].clone());for(let p=0,d=r.faceVertexUvs.length;p<d;p++){let f=r.faceVertexUvs[p];this.faceVertexUvs[p]===void 0&&(this.faceVertexUvs[p]=[]);for(let g=0,x=f.length;g<x;g++){let y=f[g],v=[];for(let P=0,S=y.length;P<S;P++){let b=y[P];v.push(b.clone())}this.faceVertexUvs[p].push(v)}}let n=r.morphTargets;for(let p=0,d=n.length;p<d;p++){let f={};if(f.name=n[p].name,n[p].vertices!==void 0){f.vertices=[];for(let g=0,x=n[p].vertices.length;g<x;g++)f.vertices.push(n[p].vertices[g].clone())}if(n[p].normals!==void 0){f.normals=[];for(let g=0,x=n[p].normals.length;g<x;g++)f.normals.push(n[p].normals[g].clone())}this.morphTargets.push(f)}let s=r.morphNormals;for(let p=0,d=s.length;p<d;p++){let f={};if(s[p].vertexNormals!==void 0){f.vertexNormals=[];for(let g=0,x=s[p].vertexNormals.length;g<x;g++){let y=s[p].vertexNormals[g],v={};v.a=y.a.clone(),v.b=y.b.clone(),v.c=y.c.clone(),f.vertexNormals.push(v)}}if(s[p].faceNormals!==void 0){f.faceNormals=[];for(let g=0,x=s[p].faceNormals.length;g<x;g++)f.faceNormals.push(s[p].faceNormals[g].clone())}this.morphNormals.push(f)}let a=r.skinWeights;for(let p=0,d=a.length;p<d;p++)this.skinWeights.push(a[p].clone());let l=r.skinIndices;for(let p=0,d=l.length;p<d;p++)this.skinIndices.push(l[p].clone());let c=r.lineDistances;for(let p=0,d=c.length;p<d;p++)this.lineDistances.push(c[p]);let u=r.boundingBox;u!==null&&(this.boundingBox=u.clone());let m=r.boundingSphere;return m!==null&&(this.boundingSphere=m.clone()),this.elementsNeedUpdate=r.elementsNeedUpdate,this.verticesNeedUpdate=r.verticesNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.lineDistancesNeedUpdate=r.lineDistancesNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,this}toBufferGeometry(){let r=new bl().fromGeometry(this),e=new oe.BufferGeometry,t=new Float32Array(r.vertices.length*3);if(e.setAttribute("position",new oe.BufferAttribute(t,3).copyVector3sArray(r.vertices)),r.normals.length>0){let o=new Float32Array(r.normals.length*3);e.setAttribute("normal",new oe.BufferAttribute(o,3).copyVector3sArray(r.normals))}if(r.colors.length>0){let o=new Float32Array(r.colors.length*3);e.setAttribute("color",new oe.BufferAttribute(o,3).copyColorsArray(r.colors))}if(r.uvs.length>0){let o=new Float32Array(r.uvs.length*2);e.setAttribute("uv",new oe.BufferAttribute(o,2).copyVector2sArray(r.uvs))}if(r.uvs2.length>0){let o=new Float32Array(r.uvs2.length*2);e.setAttribute("uv2",new oe.BufferAttribute(o,2).copyVector2sArray(r.uvs2))}e.groups=r.groups;for(let o in r.morphTargets){let n=[],s=r.morphTargets[o];for(let a=0,l=s.length;a<l;a++){let c=s[a],u=new oe.Float32BufferAttribute(c.data.length*3,3);u.name=c.name,n.push(u.copyVector3sArray(c.data))}e.morphAttributes[o]=n}if(r.skinIndices.length>0){let o=new oe.Float32BufferAttribute(r.skinIndices.length*4,4);e.setAttribute("skinIndex",o.copyVector4sArray(r.skinIndices))}if(r.skinWeights.length>0){let o=new oe.Float32BufferAttribute(r.skinWeights.length*4,4);e.setAttribute("skinWeight",o.copyVector4sArray(r.skinWeights))}return r.boundingSphere!==null&&(e.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(e.boundingBox=r.boundingBox.clone()),e}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(r){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(r)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(r){let e=new oe.BufferGeometry,t=r.geometry;if(r.isPoints||r.isLine){let o=new oe.Float32BufferAttribute(t.vertices.length*3,3),n=new oe.Float32BufferAttribute(t.colors.length*3,3);if(e.setAttribute("position",o.copyVector3sArray(t.vertices)),e.setAttribute("color",n.copyColorsArray(t.colors)),t.lineDistances&&t.lineDistances.length===t.vertices.length){let s=new oe.Float32BufferAttribute(t.lineDistances.length,1);e.setAttribute("lineDistance",s.copyArray(t.lineDistances))}t.boundingSphere!==null&&(e.boundingSphere=t.boundingSphere.clone()),t.boundingBox!==null&&(e.boundingBox=t.boundingBox.clone())}else r.isMesh&&(e=t.toBufferGeometry());return e}};Jr.prototype.isGeometry=!0;var bl=class{constructor(){this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(r){let e=[],t,o,n,s=r.faces;for(o=0;o<s.length;o++){let a=s[o];a.materialIndex!==n&&(n=a.materialIndex,t!==void 0&&(t.count=o*3-t.start,e.push(t)),t={start:o*3,materialIndex:n})}t!==void 0&&(t.count=o*3-t.start,e.push(t)),this.groups=e}fromGeometry(r){let e=r.faces,t=r.vertices,o=r.faceVertexUvs,n=o[0]&&o[0].length>0,s=o[1]&&o[1].length>0,a=r.morphTargets,l=a.length,c;if(l>0){c=[];for(let y=0;y<l;y++)c[y]={name:a[y].name,data:[]};this.morphTargets.position=c}let u=r.morphNormals,m=u.length,p;if(m>0){p=[];for(let y=0;y<m;y++)p[y]={name:u[y].name,data:[]};this.morphTargets.normal=p}let d=r.skinIndices,f=r.skinWeights,g=d.length===t.length,x=f.length===t.length;t.length>0&&e.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let y=0;y<e.length;y++){let v=e[y];this.vertices.push(t[v.a],t[v.b],t[v.c]);let P=v.vertexNormals;if(P.length===3)this.normals.push(P[0],P[1],P[2]);else{let b=v.normal;this.normals.push(b,b,b)}let S=v.vertexColors;if(S.length===3)this.colors.push(S[0],S[1],S[2]);else{let b=v.color;this.colors.push(b,b,b)}if(n===!0){let b=o[0][y];b!==void 0?this.uvs.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",y),this.uvs.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}if(s===!0){let b=o[1][y];b!==void 0?this.uvs2.push(b[0],b[1],b[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",y),this.uvs2.push(new oe.Vector2,new oe.Vector2,new oe.Vector2))}for(let b=0;b<l;b++){let E=a[b].vertices;c[b].data.push(E[v.a],E[v.b],E[v.c])}for(let b=0;b<m;b++){let E=u[b].vertexNormals[y];p[b].data.push(E.a,E.b,E.c)}g&&this.skinIndices.push(d[v.a],d[v.b],d[v.c]),x&&this.skinWeights.push(f[v.a],f[v.b],f[v.c])}return this.computeGroups(r),this.verticesNeedUpdate=r.verticesNeedUpdate,this.normalsNeedUpdate=r.normalsNeedUpdate,this.colorsNeedUpdate=r.colorsNeedUpdate,this.uvsNeedUpdate=r.uvsNeedUpdate,this.groupsNeedUpdate=r.groupsNeedUpdate,r.boundingSphere!==null&&(this.boundingSphere=r.boundingSphere.clone()),r.boundingBox!==null&&(this.boundingBox=r.boundingBox.clone()),this}},dn=class{constructor(r,e,t,o,n,s=0){this.a=r,this.b=e,this.c=t,this.normal=o&&o.isVector3?o:new oe.Vector3,this.vertexNormals=Array.isArray(o)?o:[],this.color=n&&n.isColor?n:new oe.Color,this.vertexColors=Array.isArray(n)?n:[],this.materialIndex=s}clone(){return new this.constructor().copy(this)}copy(r){this.a=r.a,this.b=r.b,this.c=r.c,this.normal.copy(r.normal),this.color.copy(r.color),this.materialIndex=r.materialIndex;for(let e=0,t=r.vertexNormals.length;e<t;e++)this.vertexNormals[e]=r.vertexNormals[e].clone();for(let e=0,t=r.vertexColors.length;e<t;e++)this.vertexColors[e]=r.vertexColors[e].clone();return this}};var Fv=["a","b","c"];function Uv(i,r){switch(r){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Sl(i,r,e){let t=Math.min(i,r),o=Math.max(i,r),n=t+"_"+o;return e.get(n)}function wl(i,r,e,t,o,n){let s=Math.min(i,r),a=Math.max(i,r),l=s+"_"+a,c;if(t.has(l))c=t.get(l);else{let u=e[s],m=e[a];c={a:u,b:m,newEdge:null,faces:[]},t.set(l,c)}c.faces.push(o),n[i].edges.push(c),n[r].edges.push(c)}function jv(i,r,e,t){let o,n,s;for(o=0,n=i.length;o<n;o++)e[o]={edges:[]};for(o=0,n=r.length;o<n;o++)s=r[o],wl(s.a,s.b,i,t,s,e),wl(s.b,s.c,i,t,s,e),wl(s.c,s.a,i,t,s,e)}function ea(i,r,e,t,o){i.push(new dn(r,e,t,void 0,void 0,o))}function fn(i,r){return Math.abs(r-i)/2+Math.min(i,r)}function ta(i,r,e,t){i.push([r.clone(),e.clone(),t.clone()])}var ra=class{constructor(r=1){this.subdivisions=r}modify(r){r instanceof Gr.BufferGeometry?r=new Jr().fromBufferGeometry(r):r=r.clone(),r.mergeVertices();let e=this.subdivisions;for(;e-- >0;)this._smooth(r);return r.computeFaceNormals(),r.computeVertexNormals(),r}_smooth(r){let e=new Gr.Vector3,t,o,n,s,a,l=r.vertices,c=r.faces,u=r.faceVertexUvs[0],m=u!==void 0&&u.length>0,p=[],d=new Map;jv(l,c,p,d);let f=[],g,x,y,v,P,S,b;for(let V of Array.from(d.keys())){for(x=d.get(V),y=new Gr.Vector3,P=3/8,S=1/8,b=x.faces.length,b!=2&&(P=.5,S=0,b!=1),y.addVectors(x.a,x.b).multiplyScalar(P),e.set(0,0,0),s=0;s<b;s++){for(v=x.faces[s],a=0;a<3&&(g=l[Uv(v,Fv[a])],!(g!==x.a&&g!==x.b));a++);g&&e.add(g)}e.multiplyScalar(S),y.add(e),x.newEdge=f.length,f.push(y)}let E,w,h,_,N,I,L,A=[];for(o=0,n=l.length;o<n;o++){for(I=l[o],N=p[o].edges,t=N.length,t==3?E=3/16:t>3&&(E=3/(8*t)),w=1-t*Number(E),h=E,t<=2&&(t==2?(w=3/4,h=1/8):t==1||t==0),L=I.clone().multiplyScalar(w),e.set(0,0,0),s=0;s<t;s++)_=N[s],g=_.a!==I?_.a:_.b,e.add(g);e.multiplyScalar(Number(h)),L.add(e),A.push(L)}let k=A.concat(f),W=A.length,ne,ue,se,K=[],U=[],z,B,D,M,G=new Gr.Vector2,Q=new Gr.Vector2,j=new Gr.Vector2;for(o=0,n=c.length;o<n;o++)v=c[o],ne=Number(Sl(v.a,v.b,d).newEdge)+W,ue=Number(Sl(v.b,v.c,d).newEdge)+W,se=Number(Sl(v.c,v.a,d).newEdge)+W,ea(K,ne,ue,se,v.materialIndex),ea(K,v.a,ne,se,v.materialIndex),ea(K,v.b,ue,ne,v.materialIndex),ea(K,v.c,se,ue,v.materialIndex),m&&(z=u[o],B=z[0],D=z[1],M=z[2],G.set(fn(B.x,D.x),fn(B.y,D.y)),Q.set(fn(D.x,M.x),fn(D.y,M.y)),j.set(fn(B.x,M.x),fn(B.y,M.y)),ta(U,G,Q,j),ta(U,B,G,j),ta(U,D,Q,G),ta(U,M,j,Q));r.vertices=k,r.faces=K,m&&(r.faceVertexUvs[0]=U)}};var et=new mr.Vector3,zm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=i.geometry??r?.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),t;r===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(et),t={width:et.x,height:et.y,depth:et.z,subdivisions:0}):t=r.parameters;let o={...t,...i.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(i){let{width:r,height:e,depth:t,subdivisions:o}=i.parameters,n=i.geometry??new mr.BufferGeometry().copy(new mr.BoxBufferGeometry(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(et)):et.set(s.width,s.height,s.depth),(r!==et.x||e!==et.y||t!==et.z)&&n.scale(et.x===0?1:r/et.x,et.y===0?1:e/et.y,et.z===0?1:t/et.z);let a=n.originalGeometry;return o>0?(a===void 0||s?.subdivisions!==o)&&(a===void 0&&(a=n),n=new ra(o).modify(a).toBufferGeometry()):(a!==void 0&&(n=a),a=void 0,n.getAttribute("normal")===void 0&&n.computeVertexNormals()),a!==void 0&&Object.assign(n,{originalGeometry:a}),delete i.geometry,Object.assign(n,{userData:{...i,type:"NonParametricGeometry"}})}static loadFromUrl(i,r,e){new mr.BufferGeometryLoader(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(et);let s=100/et.x;Object.assign(n.parameters,{width:100,height:et.y*s,depth:et.z*s}),r(this.build(n))})}};var Vm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:r,height:e,spikes:t,cornerRadius:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}=i.parameters,l=i.shape,c=r*.5,u=e*.5,m=0,p=0,d=2*Math.PI/t;for(let g=0;g<t;g++){let x=d*g,y=m+Math.sin(x)*c,v=p+Math.cos(x)*u;l.addPoint(l.createPoint(y,v))}l.isClosed=!0;for(let g=0,x=l.points.length;g<x;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=bt.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:{...i,type:"PolygonGeometry"}})}};var ve=require("three"),Fm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:r,height:e,depth:t,radialSegments:o,heightSegments:n,openEnded:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=new Nl(r*.5,e,o,n,s,a,l);return c.scale(1,1,t/r),Object.assign(c,{userData:{...i,type:"PyramidGeometry"}})}};function ii(i,r,e){e.x=i.x*r.x,e.y=i.y,e.z=i.x*r.y}function Tl(i,r,e,t,o,n){let s=r.clone().sub(i),a=e.clone().sub(i),l=s.angleTo(a);if(s.normalize(),a.normalize(),t===o){let c=s.add(a).normalize();n.copy(i).addScaledVector(c,t/Math.sin(l/2))}else{let c=s.angleTo(a);n.copy(i),n.addScaledVector(s,o/Math.sin(c)),n.addScaledVector(a,t/Math.sin(c))}}function kv(i,r,e){let t=i.clone().sub(r),o=e.clone().sub(r);return t.projectOnVector(o),t.add(r)}var Nl=class extends ve.BufferGeometry{constructor(r=.5,e=1,t=4,o=1,n=!1,s=0,a=4){super(),t=Math.floor(Math.max(3,t)),o=Math.floor(o),a=Math.floor(a);let l=[],c=[],u=[],m=[],p=0,d=e/2,f=Math.PI/t,g=r*Math.cos(Math.PI/t),x=2*Math.PI/t,y=(t-2)*Math.PI/t,v=Math.PI-y,P=new ve.Vector3(0,-d,0),S=new ve.Vector3(0,d,0),b=new ve.Vector2(r,-d),E=new ve.Vector2(g,-d),w=new ve.Vector2(0,S.y).sub(E),h=new ve.Vector2(0,S.y).sub(b),_=new ve.Vector2(w.y,-w.x).normalize(),N=new ve.Vector2(h.y,-h.x).normalize(),L=r*Math.cos(Math.PI/t)*Math.tan((Math.PI-w.angle())/2)-1e-8;s=Math.min(s,L);let A;{let U=new ve.Vector3(_.x,_.y,0),z=new ve.Vector3(Math.cos(x)*U.x,U.y,Math.sin(x)*U.x);A=U.angleTo(z)}let k=s/Math.tan((Math.PI-w.angle())/2),W=s/Math.tan((Math.PI-A)/2),ne=new ve.Vector3;if(!n){c.push(P.x,P.y,P.z),u.push(0,-1,0),m.push(0,0);let U=p++,z=[],B=b.clone(),D=k/Math.cos(Math.PI/t);B.x-=D;for(let M=0;M<t;M++){let G=M/t*Math.PI*2+f,Q=new ve.Vector2(Math.sin(G),Math.cos(G));ii(B,Q,ne),c.push(ne.x,ne.y,ne.z),u.push(0,-1,0),m.push(0,0),z.push(p++)}for(let M=0;M<z.length;M++)l.push(z[M],U,z[(M+1)%z.length])}let ue=[];{let U=new ve.Vector3,z=new ve.Vector3,B=new ve.Vector3,D=new ve.Vector3,M=new ve.Vector3,G=new ve.Vector3;for(let Q=0;Q<t;Q++){let j=Q/t*Math.PI*2+f,V=(Q+.5)/t*Math.PI*2+f,F=(Q+1)/t*Math.PI*2+f,O=new ve.Vector2(Math.sin(j),Math.cos(j)),q=new ve.Vector2(Math.sin(V),Math.cos(V)),Z=new ve.Vector2(Math.sin(F),Math.cos(F));ii(b,O,z),ii(b,Z,B),ii(_,q,U),Tl(S,z,B,W,W,D),c.push(D.x,D.y,D.z),Tl(z,S,B,W,k,M),c.push(M.x,M.y,M.z),Tl(B,z,S,k,W,G),c.push(G.x,G.y,G.z),u.push(U.x,U.y,U.z),u.push(U.x,U.y,U.z),u.push(U.x,U.y,U.z),m.push(0,0),m.push(0,0),m.push(0,0);let ee=p++,H=p++,J=p++;if(l.push(ee,H,J),s>0){{let ce=z.clone().add(B).multiplyScalar(.5),ie=S.clone().sub(ce).normalize(),Re=P.clone().sub(ce).normalize().add(ie).normalize().multiplyScalar(-1),ge=G.clone().sub(M);se(ce,ge,Re,w.angle())}let $,re;{let ce=new ve.Vector3;ii(N,Z,ce);let ie=G.clone().add(D).multiplyScalar(.5);ie=kv(ie,B,S);let fe=G.clone().sub(D);[$,re]=se(ie,fe,ce,A,D.y)}{let ce=$,ie=ce.clone().setY(0).normalize(),fe=new ve.Vector3(0,-1,0),Re=ie.clone().cross(fe);K(ce,ie,fe,Re)}ue.concat(re);{let ce=w.angle(),ie=Math.PI-ce,fe=S.clone();fe.y-=s/Math.sin(ce-Math.PI/2);let Re=new ve.Vector3,ge=[];for(let Ce=0;Ce<a;Ce++){let Tt=[],Vt=Math.PI/2-ie*Ce/a,Mo=Math.cos(Vt),_t=Math.sin(Vt),Oo=V;for(let Fi=0;Fi<=Ce;Fi++){let Ui=Math.cos(Oo),je=Math.sin(Oo);U.x=Mo*je,U.y=_t,U.z=Mo*Ui,Re.copy(fe).addScaledVector(U,s),c.push(Re.x,Re.y,Re.z),u.push(U.x,U.y,U.z),m.push(0,0),Tt.push(p++),Oo+=Math.PI*2/Ce/t}ge.push(Tt)}re.reverse(),ge.push(re);let qe=ge.length-1;for(let Ce=0;Ce<qe;Ce++){let Tt=ge[Ce],Vt=ge[Ce+1],Mo=Tt.length-1;l.push(Vt[1],Tt[0],Vt[0]);for(let _t=1;_t<=Mo;_t++)l.push(Tt[_t],Tt[_t-1],Vt[_t]),l.push(Vt[_t+1],Tt[_t],Vt[_t])}}}}}this.setIndex(l),this.setAttribute("position",new ve.Float32BufferAttribute(c,3)),this.setAttribute("normal",new ve.Float32BufferAttribute(u,3)),this.setAttribute("uv",new ve.Float32BufferAttribute(m,2));function se(U,z,B,D,M){let G=-D/2,Q=(Math.PI-D)/2,j=z.clone().normalize().cross(B);U.addScaledVector(B,-s/Math.sin(Q));let V=new ve.Vector3,F=new ve.Vector3,O=1,q=p,Z=[];for(let ee=0;ee<=a;ee++){let H=G+ee/a*D;F.set(0,0,0),F.addScaledVector(j,Math.sin(H)),F.addScaledVector(B,Math.cos(H));for(let J=0;J<=O;J++){let $=J/O-.5;if(V.copy(U),V.addScaledVector(z,$),V.addScaledVector(F,s),M!=null){let re=Math.max(0,V.y-M);V.addScaledVector(z,-re/z.y)}c.push(V.x,V.y,V.z),u.push(F.x,F.y,F.z),m.push(0,0),J===0&&Z.push(p),p++}}for(let ee=0;ee<a;ee++)for(let H=0;H<O;H++){let J=q+H+(O+1)*ee,$=J+(O+1),re=$+1,ce=J+1;l.push(J,$,ce),l.push($,re,ce)}return[U.clone().addScaledVector(z,.5),Z]}function K(U,z,B,D){let M=Math.PI/2,G=h.angle()-M,Q=[],j=new ve.Vector3,V=new ve.Vector3;for(let O=0;O<=a;O++){let q=[],Z=O/a;for(let ee=0;ee<=O;ee++){let J=((O?ee/O:0)-.5)*v,$=Math.cos(J),re=Math.sin(J),ce=Math.atan(Math.tan(G)*$),ie=(M+ce)*Z,fe=Math.cos(ie),Re=Math.sin(ie);j.set(0,0,0),j.addScaledVector(z,Re*$),j.addScaledVector(B,fe),j.addScaledVector(D,Re*re),V.copy(U).addScaledVector(j,s),c.push(V.x,V.y,V.z),u.push(j.x,j.y,j.z),m.push(0,0),q.push(p++)}Q.push(q)}let F=Q.length-1;for(let O=0;O<F;O++){let q=Q[O],Z=Q[O+1],ee=q.length-1;l.push(q[0],Z[1],Z[0]);for(let H=1;H<=ee;H++)l.push(q[H-1],q[H],Z[H]),l.push(q[H],Z[H+1],Z[H])}}}};var Um=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),t=Object.assign(r?.ui??{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)}),ui:t}}static build(i){let r=i.shape,{width:e,height:t,cornerRadius:o,cornerType:n,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}=i.parameters,c={x:e*.5,y:t*.5},u={x:-c.x,y:-c.y},m={x:c.x,y:c.y};function p(S,b,E){return b>e&&E>t?Math.min(S*e/b,S*t/E):b>e?S*e/b:E>t?S*t/E:S}let d=[];d[0]=o[0]===0?0:p(o[0],o[0]+o[3],o[0]+o[1]),d[1]=o[1]===0?0:p(o[1],o[1]+o[2],o[1]+o[0]),d[2]=o[2]===0?0:p(o[2],o[2]+o[1],o[2]+o[3]),d[3]=o[3]===0?0:p(o[3],o[3]+o[0],o[3]+o[2]);let f=u.x,g=m.x,x=m.y,y=u.y;r.addPoint(r.createPoint(f,x)),r.addPoint(r.createPoint(g,x)),r.addPoint(r.createPoint(g,y)),r.addPoint(r.createPoint(f,y)),r.isClosed=!0;let v=!0;for(let S=0,b=r.points.length;S<b;S++)r.points[S].roundness=d[S],S>0&&d[S]!==d[S-1]&&(v=!1);v&&(r.roundness=d[0]),r.useCubicForRoundedCorners=n!==1,r.update();let P=bt.create({shape:r,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(P,{userData:{...i,type:"RectangleGeometry"}})}};var jm=require("three"),km=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:r=100,height:e=r,depth:t=r,widthSegments:o=64,heightSegments:n=64,phiStart:s,phiLength:a,thetaStart:l,thetaLength:c}=i.parameters,u=new jm.SphereBufferGeometry(.5*r,o,n,s,a,l,c);return u.scale(1,e/r,t/r),Object.assign(u,{userData:{...i,type:"SphereGeometry"}})}};var Hm=require("three"),Wm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:0})}}static build(i){let{width:r=100,height:e=r,widthSegments:t=8,heightSegments:o=8}=i.parameters,n=new Hm.PlaneBufferGeometry(r,e,t,o);return n.scale(1,1,1),Object.assign(n,{userData:{...i,type:"PlaneGeometry"}})}};var Zr=require("three"),qm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width)})}}static build(i){let{width:r,height:e,depth:t,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Cl(r,e,t,o,n,s);return Object.assign(a,{userData:{...i,type:"BackdropGeometry"}})}},Cl=class extends Zr.BufferGeometry{constructor(r=1,e=1,t=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[],u=.001;n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(180-u,o),o*=Math.PI/180;let m=[],p=Math.PI/2,d=(V=0,F=0,O=0)=>new Zr.Vector3(V,F,O),f=d(),g=d(),[x,y,v]=[e/2,r/2,t/2],P=-y,S=+y,[b,E,w]=[d(P,-x,+v),d(P,-x,-v),d(P,+x,-v)],h=(V,F=!1)=>Math.sin(V-Math.PI/(1+ +F)),_=(V,F=!1)=>Math.cos(V-Math.PI/(1+ +F));w.y=Math.sin(o)*e-x;let N=Math.cos(o)*e-v,I=b.z-u;o<=p?(w.z=Math.min(N,I),w.z==I&&(w.y-=(N-I)/Math.tan(p-o))):E.z=Math.min(E.z-N-v,b.z-u),f.subVectors(b,E),g.subVectors(w,E);let L=Math.min(f.length(),g.length())*n/100,A=L*Math.tan(o/2),k=L/Math.cos(o/2),W=f.clone().normalize().add(g.normalize()).setLength(k).add(E);f.set(0,h(o,!0),_(o,!0)),m.push([w,f.clone()]);let ne=(Math.PI-o)/s;for(let V=0;V<=s;V++){let F=p+o+V*ne;f.set(0,Math.sin(F)*A,Math.cos(F)*A),f.add(W),g.set(0,h(F),_(F)),m.push([f.clone(),g.clone()])}m.push([b,d(0,1,0)]);let ue=Math.sin(ne/2)*A*2,se=m.length-1,K=m[0][0].distanceTo(m[1][0]),U=m[se-1][0].distanceTo(m[se][0]),z=K+ue*s+U;m[0].push(1);for(let V=0;V<=s;V++)m[V+1].push(1-(K+V*ue)/z);m[se].push(0);let[B,D,M]=m[0],G,Q,j;for(let V=1;V<m.length;V++)[G,Q,j]=m[V],a.push(P,B.y,B.z,P,G.y,G.z,S,B.y,B.z,S,B.y,B.z,P,G.y,G.z,S,G.y,G.z),l.push(0,D.y,D.z,0,Q.y,Q.z,0,D.y,D.z,0,D.y,D.z,0,Q.y,Q.z,0,Q.y,Q.z),c.push(0,M,0,j,1,M,1,M,0,j,1,j),[B,D,M]=[G,Q,j];this.setAttribute("position",new Zr.Float32BufferAttribute(a,3)),this.setAttribute("normal",new Zr.Float32BufferAttribute(l,3)),this.setAttribute("uv",new Zr.Float32BufferAttribute(c,2))}};var $m=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:r,height:e,innerRadiusPercent:t,spikes:o,cornerRadius:n,angle:s,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}=i.parameters,u=i.shape,m=r*.5,p=e*.5,d=0,f=0,g=s*Math.PI/360/o,x=Math.PI/2*3*-1,y=m*t/100,v=p*t/100;if(o===3&&t===50){g=2*Math.PI/o;for(let S=0;S<o;S++){let b=g*S,E=d+Math.sin(b)*m,w=f+Math.cos(b)*p;u.addPoint(u.createPoint(E,w))}}else for(let S=0;S<o;S++){let b=d+Math.cos(x)*m,E=f+Math.sin(x)*p;u.addPoint(u.createPoint(b,E)),x+=g,b=d+Math.cos(x)*y,E=f+Math.sin(x)*v,S<=o,u.addPoint(u.createPoint(b,E)),x+=g}u.isClosed=!0;for(let S=0,b=u.points.length;S<b;S++)u.points[S].roundness=n;u.roundness=n,u.update();let P=bt.create({shape:u,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(P,{userData:{...i,type:"StarGeometry"}})}};var Xm=require("three"),oa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??0)})}}static build(i){let{width:r,height:e}=i.parameters,t=new Xm.PlaneBufferGeometry(r,e);return Object.assign(t,{userData:{...i,type:"TextFrameGeometry"}})}};var Ym=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),t=Math.abs(e.width),o=Math.abs(e.height??e.width),n=Math.abs(e.depth??e.width*.25);return{parameters:Object.assign(e,{width:t,height:o,depth:n})}}static build(i){let{width:r,height:e,depth:t,radialSegments:o,tubularSegments:n,arc:s,cornerRadius:a,cornerSegments:l}=i.parameters,c=Hv(r,e,t,r*.5,s,n,0,0,o,a,l);return c.scale(1,e/r,1),Object.assign(c,{userData:{...i,type:"TorusGeometry"}})}};function Hv(i,r,e,t,o,n,s,a,l,c,u){return[r,e]=[e,r],s=r/2,o/=2*Math.PI,o==1&&(c=0),new oi(!0,i,r,e,t,o,n,s,a,l,c,u)}var Km=require("three"),Qm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,tubularSegments:64,radialSegments:32,p:2,q:3},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width),depth:Math.abs(e.depth??e.width),tube:e.tube??e.width*.125})}}static build(i){let{width:r,tube:e,tubularSegments:t,radialSegments:o,p:n,q:s}=i.parameters,a=r*.5;a!==e&&(a-=e);let l=new Km.TorusKnotBufferGeometry(a,e,t,o,n,s);return Object.assign(l,{userData:{...i,type:"TorusKnotGeometry"}})}};var Jm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,r){let e=Object.assign({},r?.parameters??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Le?i.shape:new Le,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs(e.height??e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs(e.depth??0)})}}static build(i){let{width:r=100,height:e,cornerRadius:t,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s,isRect:a}=i.parameters,l=i.shape,c=r*.5,u=e*.5;a?(l.addPoint(l.createPoint(-c,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))):(l.addPoint(l.createPoint(0,u)),l.addPoint(l.createPoint(c,-u)),l.addPoint(l.createPoint(-c,-u))),l.isClosed=!0;for(let p=0,d=l.points.length;p<d;p++)l.points[p].roundness=t;l.roundness=t,l.update();let m=bt.create({shape:l,parameters:{roundness:t,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(m,{userData:{...i,type:"TriangleGeometry"}})}};var He=require("three");var Wv,na=new Promise(i=>{Wv=i});var Ad=require("three");var no=require("three");var ga=require("three");var Pl=require("three");var ia=require("three");var Ll=require("three");function Ye(i,r){return r.color(i)}var Il=i=>"isEntity"in i,dr=i=>"isAbstractMesh"in i,fr=i=>i!==null&&i.isBooleanMesh,Zm=i=>i.objectType==="CombinedCamera";var Rr=i=>"objectHelper"in i;function qv(i,r){let e=!1;r.position&&(i.position.fromArray(r.position),e=!0),r.rotation&&(i.rotation.fromArray(r.rotation),e=!0),r.scale&&(e=!0,i.scale.fromArray(r.scale)),r.hiddenMatrix!==void 0&&"hiddenMatrix"in i&&(e=!0,i.hiddenMatrix.fromArray(r.hiddenMatrix??Wr.identity)),e&&(i.updateMatrix(),fr(i.parent)&&dr(i)&&i.invalidateDownstreamBooleanData(!0).recomputeBoolean()),r.position&&r.rotation&&r.scale&&r.hiddenMatrix!==void 0&&i.updateWorldMatrix(!1,!0),i.objectType==="CombinedCamera"&&(r.isUpVectorFlipped!==void 0&&(i.isUpVectorFlipped=r.isUpVectorFlipped),i.updateUp())}function $v(i,r){qv(i,r),r.name!==void 0&&(i.name=r.name),r.visible!==void 0&&(i.isEntity?i.visibility=r.visible:i.visible=r.visible)}function ed(i,r,e){$v(i,r),r.color!==void 0&&(i.color=Ye(r.color,e)),r.intensity!==void 0&&(i.intensity=r.intensity),r.shadows!==void 0&&!(i instanceof Ll.HemisphereLight)&&(i.castShadow=r.shadows),i.shadow&&!(i instanceof Ll.HemisphereLight)&&r.depth!==void 0&&(i.shadow.camera.far=r.depth,i.shadow.needsUpdate=!0),r.helper!==void 0&&Rr(i)&&(i.enableHelper=r.helper,i.gizmos.shadowmap.visible=r.helper)}function td(i,r){i.shadow.camera.right=r/2,i.shadow.camera.left=-r/2,i.shadow.camera.top=r/2,i.shadow.camera.bottom=-r/2,i.shadow.needsUpdate=!0}var sa=i=>class extends i{hasEntityChild(){return this.children.some(e=>Il(e))}isDescendantOf(e){e instanceof ia.Object3D&&(e=e.uuid);let t=this;for(;t.parent;){if(t.parent.uuid===e)return!0;t=t.parent}return!1}attach(e,t){this.updateWorldMatrix(!0,!1);let o=new ia.Matrix4().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),Il(e)?e.hiddenMatrix.premultiply(o):e.applyMatrix4(o),e.updateWorldMatrix(!1,!1),this.add(e),t!==void 0&&(this.children.pop(),this.children.splice(t,0,e)),this}copy(e,t=!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)),t===!0)for(let o=0;o<e.children.length;o++){let n=e.children[o];this.add(n.clone())}return this}};var Fe=require("three");var hn=new Fe.Box3,hr=new Fe.Vector3,gr=new Fe.Vector3,gn=new Fe.Matrix4,od=[new Fe.Vector3(-1,1,1),new Fe.Vector3(-1,-1,1),new Fe.Vector3(1,-1,1),new Fe.Vector3(1,1,1),new Fe.Vector3(-1,1,-1),new Fe.Vector3(-1,-1,-1),new Fe.Vector3(1,-1,-1),new Fe.Vector3(1,1,-1)],Xv=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],Yv=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]];function Kv(i,r,e=0,t=r.count){let o=1/0,n=1/0,s=1/0,a=-1/0,l=-1/0,c=-1/0;for(let u=e;u<t;u++){let m=r.getX(u),p=r.getY(u),d=r.getZ(u);m<o&&(o=m),p<n&&(n=p),d<s&&(s=d),m>a&&(a=m),p>l&&(l=p),d>c&&(c=d)}return i.min.set(o,n,s),i.max.set(a,l,c),i}var rd=(i,r,e,t)=>{if(dr(i)){let o=i.geometry.userData.parameters,n=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?hr.copy(i.originalGeometry.boundingSphere.center):n!==void 0&&(Kv(hn,n,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:n.count),hn.getCenter(hr)),i.forceComputeSize?hn.getSize(gr).multiplyScalar(.5):gr.set(o.width,o.height,o.depth??0).multiplyScalar(.5)}else if(Rr(i)&&t===!0){let o=i.geometryHelper.getAttribute("position");hn.setFromArray(o.array),hn.getCenter(hr),hn.getSize(gr).multiplyScalar(.5)}else hr.setScalar(0),gr.setScalar(0);gn.copy(r).multiply(i.matrixWorld),gr.x===0&&gr.y===0&&gr.z===0?e.push(new Fe.Vector3(hr.x,hr.y,hr.z).applyMatrix4(gn)):od.forEach(o=>{e.push(o.clone().multiply(gr).add(hr).applyMatrix4(gn))})},si=class extends Fe.Box3{constructor(){super(...arguments);this.matrix=new Fe.Matrix4;this.vertices=[];this.faces=[];this.edges=[];this.centerEdges=[]}copy(e){return super.copy(e),this.matrix.copy(e.matrix),this.vertices=e.vertices.map(t=>t.clone()),this.faces=e.faces.map(t=>t.clone()),this.edges=e.edges.map(t=>t.clone()),this.centerEdges=e.centerEdges.map(t=>t.clone()),this}setFromObjectSize(e,t=!1){e.updateWorldMatrix(!1,t),this.makeEmpty(),this.matrix.copy(e.matrixWorld);let o=new Fe.Matrix4().copy(e.matrixWorld).invert();return this.expandByObjectSize(e,o,t)}expandByObjectSize(e,t,o=!1){let n=[];return o===!0?e.traverseEntity(s=>{s.visible&&rd(s,t,n,e.enableHelper===!0)}):rd(e,t,n,e.enableHelper===!0),this.setFromPoints(n)}getCenter(e){return e=super.getCenter(e),e.applyMatrix4(this.matrix),e}getPositionToCenter(e){return e=super.getCenter(e),e.applyMatrix4(gn.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(gr).multiplyScalar(.5),this.getCenter(hr),gn.copy(this.matrix).setPosition(hr),this.vertices=od.map(e=>e.clone().multiply(gr).applyMatrix4(gn))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=Xv.map(([e,t])=>new Fe.Line3(this.vertices[e],this.vertices[t])),this.centerEdges=this.edges.map(e=>e.getCenter(new Fe.Vector3))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=Yv.map(([e,t])=>this.vertices[e].clone().add(this.vertices[t]).multiplyScalar(.5))}};var Yt=i=>"isEntity"in i,nd=i=>"isAbstractMesh"in i,kt=i=>class extends sa(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new Pl.Matrix4;this._singleBBox=new si;this._recursiveBBox=new si;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(t){this.visible=t;for(let o of this.children)Yt(o)&&o.traverseEntity(n=>{Rr(n)&&n.visible&&(n.objectHelper.visible=t)})}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(t=>{Yt(t)&&(t.singleBBoxNeedsUpdate=!0,t.recursiveBBoxNeedsUpdate=!0)}),this.traverseEntity(t=>{t.singleBBoxNeedsUpdate=!0,t.recursiveBBoxNeedsUpdate=!0})}traverseEntity(t){t(this);for(let o of this.children)Yt(o)&&o.traverseEntity(t)}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);for(let o of this.children)o.updateMatrixWorld(t)}updateWorldMatrix(t,o){let n=this.parent;if(t&&n!==null&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.multiplyMatrices(this.hiddenMatrix,this.matrix):(this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.hiddenMatrix),this.matrixWorld.multiplyMatrices(this.matrixWorld,this.matrix)),o)for(let s of this.children)s.updateWorldMatrix(!1,!0)}clone(t){return new this.constructor().copy(this,t)}copy(t,o=!0){if(super.copy(t,!1),this.raycastLock=t.raycastLock,this.scaleLock=t.scaleLock,this.hiddenMatrix.copy(t.hiddenMatrix),o===!0)for(let n of t.children)Yt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let t=new Pl.Matrix4,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),t.copy(this.matrixWorld).invert(),t.multiply(o);for(let n of this.children)Yt(n)&&n.hiddenMatrix.premultiply(t)}toObjectTransformState(t=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Ko(o,t)}fromObjectTransformState(t){return t.position&&this.position.fromArray(t.position),t.rotation&&this.rotation.fromArray(t.rotation),t.scale&&this.scale.fromArray(t.scale),t.hiddenMatrix&&this.hiddenMatrix.fromArray(t.hiddenMatrix),this.updateMatrix(),this}toState(t=[]){let o={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(t)};return Ko(o,t)}fromState(t,o){return t.name&&(this.name=t.name),t.raycastLock!==void 0&&(this.raycastLock=t.raycastLock),t.type!=="OrthographicCamera"&&t.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),t.visible!==void 0&&(this.visibility=t.visible),this.fromObjectTransformState(t),this}};var Ke=require("three");var id=require("three"),Al=class extends id.Object3D{},aa=class extends Al{constructor(e){super();this.object=e;this.matrixAutoUpdate=!0}get castShadow(){return this.object.castShadow}set castShadow(e){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(e){}get isMesh(){return!0}get isLight(){return!1}get isCamera(){return!1}get geometry(){return this.object.geometry}get material(){return this.object.material}};var vo=class extends Ke.Object3D{constructor(e,t={}){super();this.object=e;let o=e.recursiveBBox.getSize(new Ke.Vector3),n=.1;this.parameters=bs.defaultData(o.toArray(),n),uo(this.parameters,t),this.update(),this.setHideBase(this.parameters.hideBase)}setHideBase(e){this.parameters.hideBase=e}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let t=0,o=e-this.children.length;t<o;++t){let n=new aa(this.object);n.visible=!0,this.add(n),this.parameters.hideBase&&this.setHideBase(!0)}else for(let t=0,o=this.children.length-e;t<o;++t)this.remove(this.children[0])}_updateRadial(e){let t=e.radial,o=t.start*Ke.MathUtils.DEG2RAD,n=t.end*Ke.MathUtils.DEG2RAD,s=o-n,a=new Ke.Euler(t.rotation[0]*Ke.MathUtils.DEG2RAD,t.rotation[1]*Ke.MathUtils.DEG2RAD,t.rotation[2]*Ke.MathUtils.DEG2RAD),l;switch(t.axis){case"z":l=new Ke.Vector3(0,0,1);break;case"y":l=new Ke.Vector3(0,1,0);break;default:case"x":l=new Ke.Vector3(1,0,0);break}for(let[c,u]of this.children.entries()){u.scale.x=t.scale[0],u.scale.y=t.scale[1],u.scale.z=t.scale[2],u.position.setScalar(0);let m=s/e.count*c-o;switch(t.axis){case"x":u.rotation.set(0,m,0);break;case"y":u.rotation.set(0,0,m);break;case"z":u.rotation.set(m,0,0);break}u.translateOnAxis(l,t.radius),u.position.x+=t.position[0],u.position.y+=t.position[1],u.position.z+=t.position[2],t.alignment===!0?(u.rotation.x+=a.x,u.rotation.y+=a.y,u.rotation.z+=a.z):u.rotation.copy(a)}}_updateLinear(e){if(e.type!=="linear")throw new Error;let t=e.linear,o=new Ke.Euler(t.rotation[0]*Ke.MathUtils.DEG2RAD,t.rotation[1]*Ke.MathUtils.DEG2RAD,t.rotation[2]*Ke.MathUtils.DEG2RAD);for(let[n,s]of this.children.entries())s.scale.x=1+(t.scale[0]-1)*n,s.scale.y=1+(t.scale[1]-1)*n,s.scale.z=1+(t.scale[2]-1)*n,s.rotation.x=o.x*n,s.rotation.y=o.y*n,s.rotation.z=o.z*n,s.position.x=t.position[0]*n,s.position.y=t.position[1]*n,s.position.z=t.position[2]*n}_updateGrid(e){let t=0,o=e.grid;if(o.useCenter===!0){let n={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 Ke.Vector3(o.size[0]*(o.count[0]-n.x)*.5,o.size[1]*(o.count[1]-n.y)*.5,o.size[2]*(o.count[2]-n.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 u=this.children[t++];u.scale.setScalar(1),u.rotation.set(0,0,0),u.position.x=o.size[0]*a-s.x,u.position.y=o.size[1]*l-s.y,u.position.z=o.size[2]*c-s.z}}else for(let n=0;n<o.count[0];n++)for(let s=0;s<o.count[1];s++)for(let a=0;a<o.count[2];a++){let l=this.children[t++];l.scale.setScalar(1),l.rotation.set(0,0,0),l.position.x=o.size[0]*n,l.position.y=-o.size[1]*s,l.position.z=-o.size[2]*a}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),uo(this.parameters,e),this.update(),this}};var ha=require("three");var Qt=require("three");var ai=class{constructor(r){r=r??{},this.name=r.name,this.type=r.type,this.node=r.node,this.size=r.size,this.needsUpdate=r.needsUpdate}get value(){return this.node.value}set value(r){this.node.value=r}};var sd=require("three"),st=class{constructor(r){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=sd.MathUtils.generateUUID(),this.type=r,this.name=""}analyze(r,e){e=e??{},r.analyzing=!0,this.build(r.addFlow(e.slot,e.cache,e.context),"v4"),r.clearVertexNodeCode(),r.clearFragmentNodeCode(),r.removeFlow(),r.analyzing=!1}analyzeAndFlow(r,e,t){return t=t??{},this.analyze(r,t),this.flow(r,e,t)}flow(r,e,t){t=t??{},r.addFlow(t.slot,t.cache,t.context);let o={result:this.build(r,e),code:r.clearNodeCode(),extra:r.context.extra};return r.removeFlow(),o}build(r,e,t){e=e??this.getType(r,e);let o=r.getNodeData(t??this);return r.analyzing&&this.appendDepsNode(r,o,e),r.nodes.indexOf(this)===-1&&r.nodes.push(this),this.updateFrame!==void 0&&r.updaters.indexOf(this)===-1&&r.updaters.push(this),this.generate(r,e,t)}updateFrame(r){}generateReadonly(r,e,t,o,n,s){return""}generate(r,e,t,o,n){return""}parse(r,e,t,o){}appendDepsNode(r,e,t){e.deps=(e.deps||0)+1;let o=r.getTypeLength(t);(o>(e.outputMax||0)||this.getType(r,t))&&(e.outputMax=o,e.output=t)}setName(r){this.name=r}getName(){return this.name}getType(r,e){return e==="sampler2D"||e==="samplerCube"?e:this.type}getHash(){let r="{",e,t;for(e in this)t=this[e],t instanceof st&&(r+='"'+e+'":'+t.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],t=this[e],r+='"'+e+'":"'+String(t)+'",';return r+='"id":"'+this.uuid+'"}',r}};var Ml=class{constructor(){this.nodes={};this.keywords={}}add(r){this.nodes[r.name]=r}addKeyword(r,e,t){t=t!==void 0?t:!0,this.keywords[r]={callback:e,cache:t}}remove(r){delete this.nodes[r.name]}removeKeyword(r){delete this.keywords[r]}get(r){return this.nodes[r]}getKeyword(r,e){return this.keywords[r].callback(e)}getKeywordData(r){return this.keywords[r]}contains(r){return this.nodes[r]!==void 0}containsKeyword(r){return this.keywords[r]!==void 0}},tt=new Ml;var Ol=require("three");var ad=require("three"),le=class extends st{constructor(e,t){super(e);this.scope="";t=t??{},this.shared=t.shared!==void 0?t.shared:!0,this.unique=t.unique!==void 0?t.unique:!1}build(e,t,o,n){if(t=t??this.getType(e),this.getShared(e,t)){let s=this.getUnique(e,t);s&&this.uuid===void 0&&(this.uuid=ad.MathUtils.generateUUID()),o=e.getUUID(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,t),this.generate(e,t,o)):super.build(e,t,o);if(s)return a.name=a.name||super.build(e,t,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,t,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,t);{c=super.generate(e,t,o,a.output,n);let u=this.generate(e,l,o);return e.addNodeCode(c+" = "+u+";"),e.format(c,l,t)}}return super.build(e,t,o)}getShared(e,t){return t!=="sampler2D"&&t!=="samplerCube"&&this.shared}getUnique(e,t){return this.unique}setLabel(e){return this.label=e,this}getLabel(){return this.label}getUUID(e){let t=this.uuid;return typeof this.scope=="string"&&(t=this.scope+"-"+t),t}getTemp(e,t){t=t||this.uuid;let o=e.getVars()[t];return o?o.name:void 0}generate(e,t,o,n,s){return this.getShared(e,t)||console.error("TempNode is not shared"),o=o??this.uuid,e.getTempVar(o,n??this.getType(e),s,this.getLabel()).name}};var Me=class extends le{constructor(e,t){t=t??{},t.shared=t.shared!==void 0?t.shared:!1;super(e,t);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(e,t,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(e,t,o,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,t)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,t))}};var rt=class extends Me{constructor(e=0,t){super("v2");this.nodeType="Vector2";this.value=e instanceof Ol.Vector2?e:new Ol.Vector2(e,t)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}generateReadonly(e,t,o,n,s,a){return e.format("vec2("+this.value.x+", "+this.value.y+")",n,t)}};var _l=require("three");var pt=class extends Me{constructor(e=0,t,o){super("v3");this.nodeType="Vector3";this.value=e instanceof _l.Vector3?e:new _l.Vector3(e,t,o)}get x(){return this.value.x}set x(e){this.value.x=e}get y(){return this.value.y}set y(e){this.value.y=e}get z(){return this.value.z}set z(e){this.value.z=e}generateReadonly(e,t,o,n,s,a){return e.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",n,t)}};var Ht=class extends Me{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof ut?e:new ut(e.r,e.g,e.b,e.a)}generateReadonly(e,t,o,n,s,a){return e.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",n,t)}};var Qv=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,ld=/[a-z_0-9]+/gi,X=class extends le{constructor(e,t,o,n,s){super(s);this.src="";this.nodeType="Function";this.useKeywords=!0;this.includes=[];this.extensions={};this.keywords={};this.isMethod=s===void 0,this.isInterface=!1,this.parse(e,t,o,n)}getShared(e,t){return!this.isMethod}getType(e){return e.getTypeByFormat(this.type)}getInputByName(e){if(this.inputs){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}}getIncludeByName(e){if(this.includes){let t=this.includes.length;for(;t--;)if(this.includes[t].name===e)return this.includes[t]}}generate(e,t,o,n,s){let a,l=0,c=this.src;if(this.includes)for(let m=0;m<this.includes.length;m++)e.include(this.includes[m],this);for(let m in this.extensions)e.extensions[m]=!0;let u=[];for(;a=ld.exec(this.src);)u.push(a);for(let m=0;m<u.length;m++){let p=u[m],d=p[0],f=this.isMethod?!this.getInputByName(d):!0,g=d;if(this.keywords[d]||this.useKeywords&&f&&tt.containsKeyword(d)){let x=this.keywords[d];if(!x){let y=tt.getKeywordData(d);y.cache&&(x=e.keywords[d]),x=x||tt.getKeyword(d,e),y.cache&&(e.keywords[d]=x)}g=x.build(e)}d!==g&&c[p.index+l-1]!=="."&&(c=c.substring(0,p.index+l)+g+c.substring(p.index+d.length+l),l+=g.length-d.length),this.getIncludeByName(g)===void 0&&tt.contains(g)&&e.include(tt.get(g))}return t==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),t)}parse(e,t,o,n){if(this.src=e||"",this.includes=t??[],this.extensions=o??{},this.keywords=n??{},this.isMethod){let s=Qv.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(ld);if(a){let l=0;for(;l<a.length;){let c=a[l++],u;c==="in"||c==="out"||c==="inout"?u=a[l++]:(u=c,c="");let m=a[l++];this.inputs.push({name:m,type:u,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}};var Jv=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Dl=class extends le{constructor(e="",t){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Dl.PI,void 0,void 0,void 0,t)}getType(e){return e.getTypeByFormat(this.type)}parse(e,t,o,n,s){this.src=e||"";let a,l,c="",u=Jv.exec(e);this.useDefine=s??this.src.charAt(0)==="#",u&&u.length>1?(l=u[1],a=u[2],c=u[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,t){if(t==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),t)}generate(e,t,o,n,s){return e.format(this.name,this.getType(e),t)}},we=Dl;we.PI="PI",we.PI2="PI2",we.RECIPROCAL_PI="RECIPROCAL_PI",we.RECIPROCAL_PI2="RECIPROCAL_PI2",we.LOG2="LOG2",we.EPSILON="EPSILON";var Zv=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
+
)*?)}`,"gim"),eb=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),yn=class extends le{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let t=this.inputs.length;for(;t--;)if(this.inputs[t].name===e)return this.inputs[t]}generate(e,t,o,n,s){return t==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),t)}parse(e=""){this.src=e,this.inputs=[];let t=Zv.exec(e);if(t){let o=t[2],n;for(;n=eb.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=t[1]}else this.name="";this.type=this.name}};var xn=class extends le{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e??0}generate(e,t){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",n=e.isShader("vertex")?"uv"+o:"vUv"+o;return e.format(n,this.getType(e),t)}};tt.addKeyword("uv",function(){return new xn});tt.addKeyword("uv2",function(){return new xn(1)});var la=require("three");var bo=class extends le{constructor(e,t){super("v4");this.nodeType="ColorSpace";this.input=e,this.method=t??bo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case la.LinearEncoding:return["Linear"];case la.sRGBEncoding:return["sRGB"];default:return[]}}generate(e,t){let o=this.input.build(e,"v4"),n=this.getType(e),s=bo.Nodes[this.method],a=e.include(s);if(a===bo.LINEAR_TO_LINEAR)return e.format(o,n,t);if(s.inputs?.length===2){let l=this.factor.build(e,"f");return e.format(a+"( "+o+", "+l+" )",n,t)}else return e.format(a+"( "+o+" )",n,t)}fromEncoding(e){let t=bo.getEncodingComponents(e);this.method="LinearTo"+t[0],this.factor=t[1]}fromDecoding(e){let t=bo.getEncodingComponents(e);this.method=t[0]+"ToLinear",this.factor=t[1]}},St=bo;St.Nodes={LinearToLinear:new X(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
3
|
+
`)),sRGBToLinear:new X(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
4
|
+
`)),LinearTosRGB:new X(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
5
|
+
`))},St.LINEAR_TO_LINEAR="LinearToLinear",St.SRGB_TO_LINEAR="sRGBToLinear",St.LINEAR_TO_SRGB="LinearTosRGB";var Ne=class extends X{constructor(e="",t,o,n,s){super(e,s,n,o,t);this.nodeType="Expression"}};var cd=require("three"),Pt=class extends Me{constructor(e=new cd.Texture,t,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=t??new xn,this.bias=o,this.project=n!==void 0?n:!1}getTexture(e,t){return super.generate(e,t,this.value.uuid,"t")}generate(e,t){if(t==="sampler2D")return this.getTexture(e,t);let o=this.getTexture(e,t),n=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+", "+n+", "+s+" )":l=a+"( "+o+", "+n+" )";let c={include:e.isShader("vertex"),ignoreCache:!0},u=this.getType(e);return e.addContext(c),this.colorSpace=this.colorSpace??new St(new Ne("",u)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,u),e.removeContext(),e.format(l,u,t)}};var Y=class extends Me{constructor(e){super("f");this.nodeType="Float";this.value=e??0}generateReadonly(e,t,o,n,s,a){return e.format(this.value+(this.value%1?"":".0"),n,t)}};var li=class extends le{constructor(e,t){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=t??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,t,o,n,s){n=this.getType(e);let a=this.value,l=a.build(e,t)+"( ",c=[];if(a.inputs){for(let u=0;u<a.inputs.length;u++){let m=a.inputs[u],p=this.inputs[u]||this.inputs[m.name];c.push(p.build(e,e.getTypeByFormat(m.type)))}l+=c.join(", ")+" )"}return e.format(l,n,t)}};var El=class extends le{constructor(e,t,o=El.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=t,this.op=o}getType(e){let t=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(t)?"v4":e.getTypeLength(o)>e.getTypeLength(t)?o:t}generate(e,t){let o=this.getType(e);this.type=o;let n=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+n+" "+this.op+" "+s+" )",o,t)}},At=El;At.ADD="+",At.SUB="-",At.MUL="*",At.DIV="/";var Ae=class extends le{constructor(e,t=Ae.ABS,o,n){super();this.nodeType="Math";this.a=e,typeof t!="string"?this.b=t:n=t,typeof o!="string"?this.c=o:n=o,this.method=n,this.hashProperties=["method"]}getNumInputs(e){switch(this.method){case Ae.MIX:case Ae.CLAMP:case Ae.REFRACT:case Ae.SMOOTHSTEP:case Ae.FACEFORWARD:return 3;case Ae.MIN:case Ae.MAX:case Ae.MOD:case Ae.STEP:case Ae.REFLECT:case Ae.DISTANCE:case Ae.DOT:case Ae.CROSS:case Ae.POW:return 2;default:return 1}}getInputType(e){let t=e.getTypeLength(this.a.getType(e)),o=this.b?e.getTypeLength(this.b.getType(e)):0,n=this.c?e.getTypeLength(this.c.getType(e)):0;return t>o&&t>n?this.a.getType(e):o>n?this.b.getType(e):this.c.getType(e)}getType(e){switch(this.method){case Ae.LENGTH:case Ae.DISTANCE:case Ae.DOT:return"f";case Ae.CROSS:return"v3"}return this.getInputType(e)}generate(e,t){let o,n,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,u=this.getInputType(e),m=this.getType(e);switch(this.type=m,this.method){case Ae.NEGATE:return e.format("( -"+this.a.build(e,u)+" )",u,t);case Ae.INVERT:return e.format("( 1.0 - "+this.a.build(e,u)+" )",u,t);case Ae.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,a===1?"f":u),n=this.b.build(e,u);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,u),n=this.b.build(e,l===1?"f":u);break;case Ae.REFRACT:o=this.a.build(e,u),n=this.b.build(e,u),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,u),n=this.b.build(e,u),s=this.c.build(e,c===1?"f":u);break;default:o=this.a.build(e,u),this.b&&(n=this.b.build(e,u)),this.c&&(s=this.c.build(e,u));break}let p=[];p.push(o),n&&p.push(n),s&&p.push(s);let d=this.getNumInputs(e);if(p.length!==d)throw Error(`Arguments not match used in "${this.method}". Require ${d}, currently ${p.length}.`);return e.format(this.method+"( "+p.join(", ")+" )",m,t)}},de=Ae;de.RAD="radians",de.DEG="degrees",de.EXP="exp",de.EXP2="exp2",de.LOG="log",de.LOG2="log2",de.SQRT="sqrt",de.INV_SQRT="inversesqrt",de.FLOOR="floor",de.CEIL="ceil",de.NORMALIZE="normalize",de.FRACT="fract",de.SATURATE="saturate",de.SIN="sin",de.COS="cos",de.TAN="tan",de.ASIN="asin",de.ACOS="acos",de.ARCTAN="atan",de.ABS="abs",de.SIGN="sign",de.LENGTH="length",de.NEGATE="negate",de.INVERT="invert",de.MIN="min",de.MAX="max",de.MOD="mod",de.STEP="step",de.REFLECT="reflect",de.DISTANCE="distance",de.DOT="dot",de.CROSS="cross",de.POW="pow",de.MIX="mix",de.CLAMP="clamp",de.REFRACT="refract",de.SMOOTHSTEP="smoothstep",de.FACEFORWARD="faceforward";var vn=class extends le{constructor(e,t,o){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=t,this.bias=o}bilinearCubeUV(e,t,o,n){let s=new li(vn.Nodes.bilinearCubeUV,[t,o,n]);this.colorSpaceTL=this.colorSpaceTL??new St(new Ne("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new St(new Ne("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new St(new Ne("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new St(new Ne("","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 Ne(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ne(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ne(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ne(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ne("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,t){if(e.isShader("fragment")){let o=this.uv,n=this.bias||e.context.roughness,s=new li(vn.Nodes.roughnessToMip,[n]),a=new de(s,vn.Nodes.m0,vn.Nodes.cubeUV_maxMipLevel,de.CLAMP),l=new de(a,de.FLOOR),c=new de(a,de.FRACT),u=this.bilinearCubeUV(e,this.value,o,l),m=this.bilinearCubeUV(e,this.value,o,new At(l,new Y(1).setReadonly(!0),At.ADD)),p=new de(u,m,c,de.MIX);return e.format(p.build(e),"v4",t)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t)}},bn=vn;bn.Nodes=function(){let e=new yn(`struct TextureCubeUVData {
|
|
6
|
+
vec4 tl;
|
|
7
|
+
vec4 tr;
|
|
8
|
+
vec4 br;
|
|
9
|
+
vec4 bl;
|
|
10
|
+
vec2 f;
|
|
11
|
+
}`),t=new we("float cubeUV_maxMipLevel 8.0",!0),o=new we("float cubeUV_minMipLevel 4.0",!0),n=new we("float cubeUV_maxTileSize 256.0",!0),s=new we("float cubeUV_minTileSize 16.0",!0),a=new X(`float getFace(vec3 direction) {
|
|
12
|
+
vec3 absDirection = abs(direction);
|
|
13
|
+
float face = -1.0;
|
|
14
|
+
if (absDirection.x > absDirection.z) {
|
|
15
|
+
if (absDirection.x > absDirection.y)
|
|
16
|
+
face = direction.x > 0.0 ? 0.0 : 3.0;
|
|
17
|
+
else
|
|
18
|
+
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
19
|
+
} else {
|
|
20
|
+
if (absDirection.z > absDirection.y)
|
|
21
|
+
face = direction.z > 0.0 ? 2.0 : 5.0;
|
|
22
|
+
else
|
|
23
|
+
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
19
24
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
return face;
|
|
26
|
+
}`);a.useKeywords=!1;let l=new X(`vec2 getUV(vec3 direction, float face) {
|
|
27
|
+
vec2 uv;
|
|
28
|
+
if (face == 0.0) {
|
|
29
|
+
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
30
|
+
} else if (face == 1.0) {
|
|
31
|
+
uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
|
|
32
|
+
} else if (face == 2.0) {
|
|
33
|
+
uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
|
|
34
|
+
} else if (face == 3.0) {
|
|
35
|
+
uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
|
|
36
|
+
} else if (face == 4.0) {
|
|
37
|
+
uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
|
|
38
|
+
} else {
|
|
39
|
+
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
40
|
+
}
|
|
41
|
+
return 0.5 * (uv + 1.0);
|
|
42
|
+
}`);l.useKeywords=!1;let c=new X(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
43
|
+
float face = getFace(direction);
|
|
44
|
+
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
45
|
+
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
46
|
+
float faceSize = exp2(mipInt);
|
|
47
|
+
float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
|
|
48
|
+
vec2 uv = getUV(direction, face) * (faceSize - 1.0);
|
|
49
|
+
vec2 f = fract(uv);
|
|
50
|
+
uv += 0.5 - f;
|
|
51
|
+
if (face > 2.0) {
|
|
52
|
+
uv.y += faceSize;
|
|
53
|
+
face -= 3.0;
|
|
54
|
+
}
|
|
55
|
+
uv.x += face * faceSize;
|
|
56
|
+
if(mipInt < cubeUV_maxMipLevel){
|
|
57
|
+
uv.y += 2.0 * cubeUV_maxTileSize;
|
|
58
|
+
}
|
|
59
|
+
uv.y += filterInt * 2.0 * cubeUV_minTileSize;
|
|
60
|
+
uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
|
|
61
|
+
uv *= texelSize;
|
|
62
|
+
vec4 tl = texture2D(envMap, uv);
|
|
63
|
+
uv.x += texelSize;
|
|
64
|
+
vec4 tr = texture2D(envMap, uv);
|
|
65
|
+
uv.y += texelSize;
|
|
66
|
+
vec4 br = texture2D(envMap, uv);
|
|
67
|
+
uv.x -= texelSize;
|
|
68
|
+
vec4 bl = texture2D(envMap, uv);
|
|
69
|
+
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
70
|
+
}`,[e,a,l,t,o,n,s]);c.useKeywords=!1;let u=new we("float r0 1.0",!0),m=new we("float v0 0.339",!0),p=new we("float m0 -2.0",!0),d=new we("float r1 0.8",!0),f=new we("float v1 0.276",!0),g=new we("float m1 -1.0",!0),x=new we("float r4 0.4",!0),y=new we("float v4 0.046",!0),v=new we("float m4 2.0",!0),P=new we("float r5 0.305",!0),S=new we("float v5 0.016",!0),b=new we("float m5 3.0",!0),E=new we("float r6 0.21",!0),w=new we("float v6 0.0038",!0),h=new we("float m6 4.0",!0),_=[u,m,p,d,f,g,x,y,v,P,S,b,E,w,h],N=new X(`float roughnessToMip(float roughness) {
|
|
71
|
+
float mip = 0.0;
|
|
72
|
+
if (roughness >= r1) {
|
|
73
|
+
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
74
|
+
} else if (roughness >= r4) {
|
|
75
|
+
mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
|
|
76
|
+
} else if (roughness >= r5) {
|
|
77
|
+
mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
|
|
78
|
+
} else if (roughness >= r6) {
|
|
79
|
+
mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
|
|
80
|
+
} else {
|
|
81
|
+
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
82
|
+
}
|
|
83
|
+
return mip;
|
|
84
|
+
}`,_);return{bilinearCubeUV:c,roughnessToMip:N,m0:p,cubeUV_maxMipLevel:t}}();var So=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??So.VIEW}getShared(){return this.scope===So.WORLD}build(e,t,o,n){let s=e.context[this.scope+"Normal"];return s?s.build(e,t,o,n):super.build(e,t,o)}generate(e,t,o,n,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),t)}},at=So;at.LOCAL="local",at.WORLD="world",at.VIEW="view",at.NORMAL="normal";tt.addKeyword("viewNormal",function(){return new at(at.VIEW)});tt.addKeyword("localNormal",function(){return new at(at.NORMAL)});tt.addKeyword("worldNormal",function(){return new at(at.WORLD)});var yr=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??yr.LOCAL}getType(){switch(this.scope){case yr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case yr.LOCAL:case yr.WORLD:return!1}return!0}generate(e,t,o,n,s){let a;switch(this.scope){case yr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case yr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case yr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case yr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),t)}},Mt=yr;Mt.LOCAL="local",Mt.WORLD="world",Mt.VIEW="view",Mt.PROJECTION="projection";tt.addKeyword("position",function(){return new Mt});tt.addKeyword("worldPosition",function(){return new Mt(Mt.WORLD)});tt.addKeyword("viewPosition",function(){return new Mt(Mt.VIEW)});var Kt=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??Kt.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case Kt.SPHERE:return"v2"}return this.type}generate(e,t){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case Kt.VECTOR:{let s=new at(at.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new Mt(Mt.VIEW).build(e,"v3"),u=a?a.build(e,"f"):void 0,m=`reflect( -normalize( ${c} ), ${l} )`;u&&(m=`normalize( mix( ${m}, ${l}, ${u} * ${u} ) )`);let p=`inverseTransformDirection( ${m}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${p};`),n="reflectVec"):n=p;break}case Kt.CUBE:{let s=new Kt(Kt.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case Kt.SPHERE:{let s=new Kt(Kt.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};`),n="reflectSphereVec"):n=a;break}}return e.format(n,this.getType(),t)}else return console.warn("ReflectNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.type,t)}},xr=Kt;xr.CUBE="cube",xr.SPHERE="sphere",xr.VECTOR="vector";var ca=class extends le{constructor(e=new Pt,t,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new bn(this.value,t??new xr(xr.VECTOR),o),this.irradianceNode=new bn(this.value,new at(at.WORLD),new Y(1).setReadonly(!0))}generate(e,t){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,t)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),t))}};var ud=require("three");var ua=class extends Me{constructor(e=new ud.CubeTexture,t,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=t??new xr,this.bias=o}getTexture(e,t){return super.generate(e,t,this.value.uuid,"tc")}generate(e,t){if(t==="samplerCube")return this.getTexture(e,t);let o=this.getTexture(e,t),n=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+n+", "+s+" )":a="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new St(new Ne("",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,t)}};var pd=["x","y","z","w"],tb=["float","vec2","vec3","vec4"],rb={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},ob={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[]"},pa=class{constructor(){this.includes={consts:{},functions:{},structs:{}};this.cache="";this.slot="";this.shader="";this.context={};this.getIncludesCode=function(){function r(e,t){return e.deps.length-t.deps.length}return function(t,o){let n=this.getIncludes(t,o);if(!n)return"";let s="";n=n.sort(r);for(let a=0;a<n.length;a++)n[a].src&&(s+=n[a].src+`
|
|
85
|
+
`);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},this.requires={uv:[],color:[],transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
86
|
+
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
87
|
+
#define SPE_BLENDING_NORMAL 0
|
|
88
|
+
#define SPE_BLENDING_MULTIPLY 1
|
|
89
|
+
#define SPE_BLENDING_SCREEN 2
|
|
90
|
+
#define SPE_BLENDING_OVERLAY 3
|
|
35
91
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
40
|
-
#endif
|
|
92
|
+
vec3 spe_normalBlend( vec3 a, vec3 b, float alpha ) {
|
|
93
|
+
return mix( a, b, alpha );
|
|
94
|
+
}
|
|
41
95
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if ( crop > 0.5 ) {
|
|
45
|
-
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
46
|
-
lalpha = 0.0;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
50
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
51
|
-
return col;
|
|
96
|
+
vec3 spe_multiplyBlend( vec3 a, vec3 b, float alpha ) {
|
|
97
|
+
return mix( a, a * b, alpha );
|
|
52
98
|
}
|
|
53
|
-
`),r=new K(`
|
|
54
|
-
vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
55
|
-
vec3 posN = normalize(vPosition);
|
|
56
|
-
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
57
|
-
float v = 0.5 + asin(posN.y) / 3.1415;
|
|
58
99
|
|
|
59
|
-
|
|
60
|
-
|
|
100
|
+
vec3 spe_screenBlend( vec3 a, vec3 b, float alpha ) {
|
|
101
|
+
vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
|
|
102
|
+
return mix( a, tmp, alpha );
|
|
103
|
+
}
|
|
61
104
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
#else
|
|
67
|
-
vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
68
|
-
#endif
|
|
105
|
+
vec3 spe_overlayBlend( vec3 a, vec3 b, float alpha ) {
|
|
106
|
+
vec3 tmp = mix( 1. - 2. * (1. - a) * (1. - b), 2. * a * b, step( a, vec3(.5) ) );
|
|
107
|
+
return clamp( mix( a, tmp, alpha ), 0.0, 1.0 );
|
|
108
|
+
}
|
|
69
109
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
78
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
79
|
-
return col;
|
|
110
|
+
vec3 spe_blend( vec3 a, vec3 b, float alpha, int mode ) {
|
|
111
|
+
if ( mode == SPE_BLENDING_NORMAL ) return spe_normalBlend( a, b, alpha );
|
|
112
|
+
else if ( mode == SPE_BLENDING_MULTIPLY ) return spe_multiplyBlend( a, b, alpha );
|
|
113
|
+
else if ( mode == SPE_BLENDING_SCREEN ) return spe_screenBlend( a, b, alpha );
|
|
114
|
+
else if ( mode == SPE_BLENDING_OVERLAY ) return spe_overlayBlend( a, b, alpha );
|
|
115
|
+
return vec3( 1.0 );
|
|
80
116
|
}
|
|
81
|
-
|
|
117
|
+
`,"#include <packing>","#include <common>"].join(`
|
|
118
|
+
`),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
|
|
119
|
+
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
120
|
+
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
121
|
+
}`,""].join(`
|
|
122
|
+
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(r,e){this.buildShader("vertex",r),this.buildShader("fragment",e);for(let t=0;t<this.requires.uv.length;t++)if(this.requires.uv[t]){let o=t>0?t+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),t>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(r,e){this.resultCode[r]=e.build(this.setShader(r),"v4")}setMaterial(r,e){return this.material=r,this.renderer=e,this.defines={},this}addFlow(r,e,t){return this.addSlot(r).addCache(e).addContext(t)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(r){return this.cache=r??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(r){return this.context=Object.assign({},this.context,r),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(r){return this.slot=r||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(r,e){this.fragmentVariables[r]===void 0&&(this.addFragmentCode(`${e} ${r};`),this.fragmentVariables[r]="")}addFragmentParsVariable(r,e){this.fragmentParsVariables[r]===void 0&&(this.addFragmentParsCode(`${e} ${r};`),this.fragmentParsVariables[r]="")}addVertexParsVariable(r,e){this.vertexParsVariables[r]===void 0&&(this.addVertexParsCode(`${e} ${r};`),this.vertexParsVariables[r]="")}addVertexCode(r){this.addCode(r,"vertex")}addFragmentCode(r){this.addCode(r,"fragment")}addCode(r,e){this.code[e??this.shader]+=r+`
|
|
123
|
+
`}addVertexNodeCode(r){this.addNodeCode(r,"vertex")}addFragmentNodeCode(r){this.addNodeCode(r,"fragment")}addNodeCode(r,e){this.nodeCode[e??this.shader]+=r+`
|
|
124
|
+
`}clearNodeCode(r){r=r??this.shader;let e=this.nodeCode[r];return this.nodeCode[r]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(r){this.addFinalCode(r,"vertex")}addFragmentFinalCode(r){this.addFinalCode(r,"fragment")}addFinalCode(r,e){this.finalCode[e??this.shader]+=r+`
|
|
125
|
+
`}addVertexParsCode(r){this.addParsCode(r,"vertex")}addFragmentParsCode(r){this.addParsCode(r,"fragment")}addParsCode(r,e){this.parsCode[e??this.shader]+=r+`
|
|
126
|
+
`}addVaryCode(r){this.addVertexParsCode(r),this.addFragmentParsCode(r)}isCache(r){return this.caches.indexOf(r)!==-1}isSlot(r){return this.slots.indexOf(r)!==-1}define(r,e){this.defines[r]=e===void 0?1:e}require(r){this.requires[r]=!0}isDefined(r){return this.defines[r]!==void 0}getVar(r,e,t,o="varying",n="V",s=""){let a=this.getVars(o),l=a[r];if(!l){let c=a.length;l={name:t||"node"+n+c+(s?"_"+s:""),type:e},a.push(l),a[r]=l}return l}getTempVar(r,e,t,o){return this.getVar(r,e,t,this.shader,"T",o)}getAttribute(r,e){if(!this.attributes[r]){let t=this.getVar(r,e);this.addVertexParsCode("attribute "+e+" "+r+";"),this.addVertexFinalCode(t.name+" = "+r+";"),this.attributes[r]={varying:t,name:r,type:e}}return this.attributes[r]}getCode(r){return[this.prefixCode,this.parsCode[r],this.getVarListCode(this.getVars("varying"),"varying"),this.getVarListCode(this.inputs.uniforms[r],"uniform"),this.getVarListCode(this.inputs.arrayUniforms[r],"uniform"),this.getIncludesCode("consts",r),this.getIncludesCode("structs",r),this.getIncludesCode("functions",r),"void main() {",this.getVarListCode(this.getVars(r)),this.code[r],this.resultCode[r],this.finalCode[r],"}"].join(`
|
|
127
|
+
`)}getVarListCode(r,e){e=e??"";let t="";for(let o=0,n=r.length;o<n;++o){let s=r[o],a=s.type,l=s.name,c=s.size,u=this.getFormatByType(a);if(u===void 0)throw new Error("Node pars "+u+" not found.");u.includes("[]")?t+=e+" "+u.substring(0,u.length-2)+" "+l+`[${c}];
|
|
128
|
+
`:t+=e+" "+u+" "+l+`;
|
|
129
|
+
`}return t}getVars(r){return this.inputs.vars[r??this.shader]}getNodeData(r){let e=r instanceof st?r.uuid:r;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(r,e,t,o,n,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new ai({type:e,size:t.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:t,needsUpdate:n});return a.list.push(c),a[r].push(c),a[r][c.name]=c,this.uniforms[c.name]=c,c}else{let a=this.inputs.uniforms,l=a.list.length,c=new ai({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:t,needsUpdate:n});return a.list.push(c),a[r].push(c),a[r][c.name]=c,this.uniforms[c.name]=c,c}}createVertexUniform(r,e,t,o,n){return this.createUniform("vertex",r,e,t,o,n)}createFragmentUniform(r,e,t,o,n){return this.createUniform("fragment",r,e,t,o,n)}include(r,e,t){let o;if(r=typeof r=="string"?tt.get(r):r,this.context.include===!1)return r.name;r instanceof X?o=this.includes.functions:r instanceof we?o=this.includes.consts:r instanceof yn&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(r){let s=n[r.name];if(s||(s=n[r.name]={node:r,deps:[]},n.push(s),s.src=r.build(this,"source")),r instanceof X&&e&&n[e.name]&&n[e.name].deps.indexOf(r)===-1&&(n[e.name].deps.push(r),r.includes?.length)){let a=0;do this.include(r.includes[a++],e);while(a<r.includes.length)}return t&&(s.src=t),r.name}else throw new Error("Include not found.")}colorToVectorProperties(r){return r.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(r){return r.replace(/c/g,"v3")}getIncludes(r,e){return this.includes[r][e||this.shader]}getConstructorFromLength(r){return tb[r-1]}isTypeMatrix(r){return/^m/.test(r)}getTypeLength(r){return r==="f"?1:parseInt(this.colorToVector(r).substr(1))}getTypeFromLength(r){return r===1?"f":"v"+r}findNode(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t?.isNode)return t}}resolve(...r){for(let e=0;e<arguments.length;e++){let t=r[e];if(t!==void 0){if(t.isNode)return t;if(t.isTexture)switch(t.mapping){case Qt.CubeReflectionMapping:case Qt.CubeRefractionMapping:return new ua(t);case Qt.CubeUVReflectionMapping:return new ca(new Pt(t));default:return new Pt(t)}else{if(t.isVector2)return new rt(t);if(t.isVector3)return new pt(t);if(t.isVector4)return new Ht(t)}}}}format(r,e,t){switch(this.colorToVector(t+" <- "+e)){case"f <- v2":return r+".x";case"f <- v3":return r+".x";case"f <- v4":return r+".x";case"f <- i":case"f <- b":return"float( "+r+" )";case"v2 <- f":return"vec2( "+r+" )";case"v2 <- v3":return r+".xy";case"v2 <- v4":return r+".xy";case"v2 <- i":case"v2 <- b":return"vec2( float( "+r+" ) )";case"v3 <- f":return"vec3( "+r+" )";case"v3 <- v2":return"vec3( "+r+", 0.0 )";case"v3 <- v4":return r+".xyz";case"v3 <- i":case"v3 <- b":return"vec2( float( "+r+" ) )";case"v4 <- f":return"vec4( "+r+" )";case"v4 <- v2":return"vec4( "+r+", 0.0, 1.0 )";case"v4 <- v3":return"vec4( "+r+", 1.0 )";case"v4 <- i":case"v4 <- b":return"vec4( float( "+r+" ) )";case"i <- f":case"i <- b":return"int( "+r+" )";case"i <- v2":return"int( "+r+".x )";case"i <- v3":return"int( "+r+".x )";case"i <- v4":return"int( "+r+".x )";case"b <- f":return"( "+r+" != 0.0 )";case"b <- v2":return"( "+r+" != vec2( 0.0 ) )";case"b <- v3":return"( "+r+" != vec3( 0.0 ) )";case"b <- v4":return"( "+r+" != vec4( 0.0 ) )";case"b <- i":return"( "+r+" != 0 )"}return r}getTypeByFormat(r){return rb[r]||r}getFormatByType(r){return ob[r]||r}getUUID(r,e){return e=e!==void 0?e:!0,e&&this.cache&&(r=this.cache+"-"+r),r}getElementByIndex(r){return pd[r]}getIndexByElement(r){return pd.indexOf(r)}isShader(r){return this.shader===r}setShader(r){return this.shader=r,this}mergeDefines(r){for(let e in r)this.defines[e]=r[e];return this.defines}mergeUniform(r){for(let e in r)this.uniforms[e]=r[e];return this.uniforms}getTextureEncodingFromMap(r){let e;return r?r.isTexture&&(e=r.encoding):e=Qt.LinearEncoding,e===Qt.LinearEncoding&&this.context.gamma&&(e=Qt.sRGBEncoding),e}};var Se=require("three");var Ie=class extends Me{constructor(e=0,t,o,n){super("c");this.nodeType="Color";this.value=e instanceof ut?e:new ut(e||0,t,o,n)}setRGBA(e){this.value.setRGBA(e.r,e.g,e.b,e.a)}generate(e,t,o,n,s,a){o=e.getUUID(o??this.getUUID()),n=n??this.getType(e);let l=e.getNodeData(o),c=this.getReadonly()&&this.generateReadonly!==void 0;if(this.alpha){let u=this.alpha.build(e,"f");e.addFragmentNodeCode(`accumAlpha += ( 1.0 - accumAlpha ) * ${u};`)}return c?this.generateReadonly(e,t,o,n,s,a):e.isShader("vertex")?(l.vertex||(l.vertex=e.createVertexUniform(n,this,s,a,this.getLabel())),e.format(l.vertex.name,n,t)):(l.fragment||(l.fragment=e.createFragmentUniform(n,this,s,a,this.getLabel())),e.format(l.fragment.name,n,t))}generateReadonly(e,t,o,n,s,a){return e.format("vec3("+this.value.r+", "+this.value.g+", "+this.value.b+")",n,t)}};var ye=class extends Me{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e??0)}generateReadonly(e,t,o,n,s,a){return e.format(this.value.toString(),n,t)}};var ma=require("three");var eo=class extends st{constructor(){super("basic");this.nodeType="Basic";this.color=new Ie(5855577),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(0)}generate(e){let t;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(ma.UniformsUtils.merge([ma.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
130
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
131
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
132
|
+
#include <defaultnormal_vertex>
|
|
133
|
+
#endif
|
|
82
134
|
|
|
83
|
-
|
|
84
|
-
|
|
135
|
+
vec3 displaced_position = position;
|
|
136
|
+
vec3 displaced_normal = normal;
|
|
85
137
|
|
|
86
|
-
|
|
138
|
+
#if defined( USE_LAYER_DISPLACE )
|
|
139
|
+
vec3 transformed;
|
|
140
|
+
vec3 transformedNormal;
|
|
141
|
+
#endif
|
|
142
|
+
`,"#include <normal_vertex>",`
|
|
143
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
144
|
+
#include <begin_vertex>
|
|
145
|
+
#endif /* !USE_LAYER_DISPLACE */
|
|
146
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=n.join(`
|
|
147
|
+
`)}else{this.color===void 0&&(this.color=new Ie(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"}),n=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
148
|
+
`));let a=["#include <normal_fragment_begin>",o.code];n&&a.push(n.code,"#ifdef ALPHATEST"," if ( "+n.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};`),n?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${n.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),t=a.join(`
|
|
149
|
+
`)}return t}};var ci=require("three");var ot=class extends Me{constructor(e=1,t){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(t)?t:typeof t=="number"?new Array(e).fill(t):new Array(e).fill(0)}};var ui=class extends st{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Ie(5855577),this.emissive=new Ie(0),this.emissiveIntensity=new Y(1),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(0)}build(e){let t;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(ci.UniformsUtils.merge([ci.UniformsLib.fog,ci.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
150
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
151
|
+
#ifndef USE_LAYER_DISPLACE
|
|
152
|
+
#include <defaultnormal_vertex>
|
|
153
|
+
#endif
|
|
87
154
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
91
|
-
lalpha = 0.0;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
95
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
96
|
-
return col;
|
|
97
|
-
}`);return{cylindrical:e,spherical:r,uv:o}}();var zl=class extends le{constructor(e,r,o,n,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=r,this.scale=o,this.intensity=n,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),n=[];return n.push(this.color.build(e,"c")),n.push(this.bias.build(e,"f")),n.push(this.scale.build(e,"f")),n.push(this.intensity.build(e,"f")),n.push(this.factor.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.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}},li=zl;li.Nodes=function(){return{fresnel:new K(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
98
|
-
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
155
|
+
vec3 displaced_position = position;
|
|
156
|
+
vec3 displaced_normal = normal;
|
|
99
157
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
196
|
-
dot(p2,x2), dot(p3,x3) ) );
|
|
197
|
-
}`,[o,n]),a=new K("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new K("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new K(`float noise(vec3 p){
|
|
198
|
-
vec3 a = floor(p);
|
|
199
|
-
vec3 d = p - a;
|
|
200
|
-
d = d * d * (3.0 - 2.0 * d);
|
|
201
|
-
vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);
|
|
202
|
-
vec4 k1 = perm(b.xyxy);
|
|
203
|
-
vec4 k2 = perm(k1.xyxy + b.zzww);
|
|
204
|
-
vec4 c = k2 + a.zzzz;
|
|
205
|
-
vec4 k3 = perm(c);
|
|
206
|
-
vec4 k4 = perm(c + 1.0);
|
|
207
|
-
vec4 o1 = fract(k3 * (1.0 / 41.0));
|
|
208
|
-
vec4 o2 = fract(k4 * (1.0 / 41.0));
|
|
209
|
-
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
210
|
-
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
211
|
-
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
212
|
-
}`,[l]),h=new K(`float fbm(vec3 x) {
|
|
213
|
-
float v = 0.0;
|
|
214
|
-
float a = 0.5;
|
|
215
|
-
vec3 shift = vec3(100);
|
|
216
|
-
for (int i = 0; i < NUM_OCTAVES; ++i) {
|
|
217
|
-
v += a * noise(x);
|
|
218
|
-
x = x * 2.0 + shift;
|
|
219
|
-
a *= 0.5;
|
|
220
|
-
}
|
|
221
|
-
return v;
|
|
222
|
-
}`,[c]);h.keywords.NUM_OCTAVES=new Ne(`int NUM_OCTAVES ${5}`);let p=new K("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),u=new K(`float perlin(vec3 P){
|
|
223
|
-
vec3 Pi0 = floor(P);
|
|
224
|
-
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
225
|
-
Pi0 = mod(Pi0, 289.0);
|
|
226
|
-
Pi1 = mod(Pi1, 289.0);
|
|
227
|
-
vec3 Pf0 = fract(P);
|
|
228
|
-
vec3 Pf1 = Pf0 - vec3(1.0);
|
|
229
|
-
vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
|
|
230
|
-
vec4 iy = vec4(Pi0.yy, Pi1.yy);
|
|
231
|
-
vec4 iz0 = Pi0.zzzz;
|
|
232
|
-
vec4 iz1 = Pi1.zzzz;
|
|
233
|
-
vec4 ixy = permute(permute(ix) + iy);
|
|
234
|
-
vec4 ixy0 = permute(ixy + iz0);
|
|
235
|
-
vec4 ixy1 = permute(ixy + iz1);
|
|
236
|
-
vec4 gx0 = ixy0 / 7.0;
|
|
237
|
-
vec4 gy0 = fract(floor(gx0) / 7.0) - 0.5;
|
|
238
|
-
gx0 = fract(gx0);
|
|
239
|
-
vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);
|
|
240
|
-
vec4 sz0 = step(gz0, vec4(0.0));
|
|
241
|
-
gx0 -= sz0 * (step(0.0, gx0) - 0.5);
|
|
242
|
-
gy0 -= sz0 * (step(0.0, gy0) - 0.5);
|
|
243
|
-
vec4 gx1 = ixy1 / 7.0;
|
|
244
|
-
vec4 gy1 = fract(floor(gx1) / 7.0) - 0.5;
|
|
245
|
-
gx1 = fract(gx1);
|
|
246
|
-
vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);
|
|
247
|
-
vec4 sz1 = step(gz1, vec4(0.0));
|
|
248
|
-
gx1 -= sz1 * (step(0.0, gx1) - 0.5);
|
|
249
|
-
gy1 -= sz1 * (step(0.0, gy1) - 0.5);
|
|
250
|
-
vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);
|
|
251
|
-
vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);
|
|
252
|
-
vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);
|
|
253
|
-
vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);
|
|
254
|
-
vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);
|
|
255
|
-
vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);
|
|
256
|
-
vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);
|
|
257
|
-
vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);
|
|
258
|
-
vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));
|
|
259
|
-
g000 *= norm0.x;
|
|
260
|
-
g010 *= norm0.y;
|
|
261
|
-
g100 *= norm0.z;
|
|
262
|
-
g110 *= norm0.w;
|
|
263
|
-
vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));
|
|
264
|
-
g001 *= norm1.x;
|
|
265
|
-
g011 *= norm1.y;
|
|
266
|
-
g101 *= norm1.z;
|
|
267
|
-
g111 *= norm1.w;
|
|
268
|
-
float n000 = dot(g000, Pf0);
|
|
269
|
-
float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));
|
|
270
|
-
float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));
|
|
271
|
-
float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));
|
|
272
|
-
float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));
|
|
273
|
-
float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));
|
|
274
|
-
float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));
|
|
275
|
-
float n111 = dot(g111, Pf1);
|
|
276
|
-
vec3 fade_xyz = fade(Pf0);
|
|
277
|
-
vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);
|
|
278
|
-
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
279
|
-
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
280
|
-
return 2.2 * n_xyz;
|
|
281
|
-
}`,[o,n,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:u}}();var Fl=class extends le{constructor(e,r,o,n,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=r,this.wavelengths=o,this.noiseStrength=n,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(Fl.Nodes.rainbow),n=[];return n.push(this.filmThickness.build(e,"f")),n.push(this.movement.build(e,"f")),n.push(this.wavelengths.build(e,"v3")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.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}},hi=Fl;hi.Nodes=function(){let e=new K(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
282
|
-
vec3 st = position / noiseScale;
|
|
283
|
-
vec3 q = vec3(simplex3d(st),
|
|
284
|
-
simplex3d(st + vec3(1.0)),
|
|
285
|
-
simplex3d(st + vec3(1.0)));
|
|
286
|
-
|
|
287
|
-
vec3 r = vec3(simplex3d(st + vec3(1.4, 1.3, 1.0) * q + vec3(1.7, 9.2, 1.0)),
|
|
288
|
-
simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
|
|
289
|
-
simplex3d(st * q));
|
|
290
|
-
|
|
291
|
-
float noise = simplex3d(st + r);
|
|
292
|
-
|
|
293
|
-
return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
|
|
294
|
-
}`,[ft.simplex]);return{rainbow:new K(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
295
|
-
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
296
|
-
|
|
297
|
-
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
298
|
-
float lalpha = alpha * rainbowContribution;
|
|
299
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
300
|
-
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
301
|
-
|
|
302
|
-
return res;
|
|
303
|
-
}`,[e])}}();var Ul=class extends le{constructor(e,r,o,n,s,a,l,c,h,p){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=r,this.steps=o,this.source=n,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=l,this.shadowColor=c,this.offset=h,this.alpha=p,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Ul.Nodes.toon),n=[];return n.push(this.positioning.build(e,"i")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.source.build(e,"v3")),n.push(this.isWorldSpace.build(e,"b")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.shadowColor.build(e,"v4")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.positioning=e.positioning.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.source=e.source.clone(),this.isWorldSpace=e.isWorldSpace.clone(),this.noiseStrength=e.noiseStrength.clone(),this.noiseScale=e.noiseScale.clone(),this.shadowColor=e.shadowColor.clone(),this.offset=e.offset.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},pi=Ul;pi.Nodes=function(){let e=new K(`float rand(float n) {
|
|
304
|
-
return fract(sin(n) * 43758.5453123);
|
|
305
|
-
}`),r=new K(`float hash1(float p) {
|
|
306
|
-
p = fract(p * 0.011);
|
|
307
|
-
p *= p + 7.5;
|
|
308
|
-
p *= p + p;
|
|
309
|
-
return fract(p);
|
|
310
|
-
}`),o=new K(`float valueNoise(vec3 x) {
|
|
311
|
-
const vec3 step = vec3(110, 241, 171);
|
|
312
|
-
|
|
313
|
-
vec3 i = floor(x);
|
|
314
|
-
vec3 f = fract(x);
|
|
315
|
-
|
|
316
|
-
// For performance, compute the base input to a 1D hash from the integer part of the argument and the
|
|
317
|
-
// incremental change to the 1D based on the 3D -> 1D wrapping
|
|
318
|
-
float n = dot(i, step);
|
|
319
|
-
|
|
320
|
-
vec3 u = f * f * (3.0 - 2.0 * f);
|
|
321
|
-
return mix(mix(mix( hash1(n + dot(step, vec3(0, 0, 0))), hash1(n + dot(step, vec3(1, 0, 0))), u.x),
|
|
322
|
-
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
323
|
-
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
324
|
-
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
325
|
-
}`,[r]),n=new K(`vec3 hash3(vec3 x) {
|
|
326
|
-
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
327
|
-
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
328
|
-
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
329
|
-
|
|
330
|
-
return fract(sin(x)*43758.5453123);
|
|
331
|
-
}`),s=new K(`vec3 voronoiNoise(in vec3 x)
|
|
332
|
-
{
|
|
333
|
-
vec3 p = floor(x);
|
|
334
|
-
vec3 f = fract(x);
|
|
335
|
-
|
|
336
|
-
float id = 0.0;
|
|
337
|
-
vec2 res = vec2(100.0);
|
|
338
|
-
|
|
339
|
-
for(int k=-1; k<=1; k++)
|
|
340
|
-
for(int j=-1; j<=1; j++)
|
|
341
|
-
for(int i=-1; i<=1; i++)
|
|
342
|
-
{
|
|
343
|
-
vec3 b = vec3(float(i), float(j), float(k));
|
|
344
|
-
|
|
345
|
-
// Comment out the "+ hash(p + b);" part below to get "square" cells
|
|
346
|
-
vec3 r = vec3(b) - f + hash3(p + b);
|
|
347
|
-
float d = dot(r, r);
|
|
348
|
-
|
|
349
|
-
if (d < res.x)
|
|
350
|
-
{
|
|
351
|
-
id = dot(p + b, vec3(1.0, 57.0, 113.0));
|
|
352
|
-
res = vec2(d, res.x);
|
|
353
|
-
}
|
|
354
|
-
else if (d < res.y)
|
|
355
|
-
{
|
|
356
|
-
res.y = d;
|
|
357
|
-
}
|
|
158
|
+
#ifdef USE_LAYER_DISPLACE
|
|
159
|
+
vec3 transformed;
|
|
160
|
+
vec3 transformedNormal;
|
|
161
|
+
#endif
|
|
162
|
+
`,"#include <normal_vertex>",`
|
|
163
|
+
#ifndef USE_LAYER_DISPLACE
|
|
164
|
+
#include <begin_vertex>
|
|
165
|
+
#endif
|
|
166
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
|
|
167
|
+
vec3 diffuse = vec3( 1.0 );
|
|
168
|
+
GeometricContext geometry;
|
|
169
|
+
geometry.position = mvPosition.xyz;
|
|
170
|
+
geometry.normal = normalize( transformedNormal );
|
|
171
|
+
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
|
|
172
|
+
GeometricContext backGeometry;
|
|
173
|
+
backGeometry.position = geometry.position;
|
|
174
|
+
backGeometry.normal = -geometry.normal;
|
|
175
|
+
backGeometry.viewDir = geometry.viewDir;
|
|
176
|
+
vLightFront = vec3( 0.0 );
|
|
177
|
+
vIndirectFront = vec3( 0.0 );
|
|
178
|
+
#ifdef DOUBLE_SIDED
|
|
179
|
+
vLightBack = vec3( 0.0 );
|
|
180
|
+
vIndirectBack = vec3( 0.0 );
|
|
181
|
+
#endif
|
|
182
|
+
IncidentLight directLight;
|
|
183
|
+
float dotNL;
|
|
184
|
+
vec3 directLightColor_Diffuse;
|
|
185
|
+
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
|
|
186
|
+
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
187
|
+
#ifdef DOUBLE_SIDED
|
|
188
|
+
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
|
|
189
|
+
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
|
|
190
|
+
#endif
|
|
191
|
+
#if NUM_POINT_LIGHTS > 0
|
|
192
|
+
#pragma unroll_loop_start
|
|
193
|
+
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
194
|
+
getPointLightInfo( pointLights[ i ], geometry, directLight );
|
|
195
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
196
|
+
directLightColor_Diffuse = directLight.color;
|
|
197
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
198
|
+
#ifdef DOUBLE_SIDED
|
|
199
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
200
|
+
#endif
|
|
201
|
+
}
|
|
202
|
+
#pragma unroll_loop_end
|
|
203
|
+
#endif
|
|
204
|
+
#if NUM_SPOT_LIGHTS > 0
|
|
205
|
+
#pragma unroll_loop_start
|
|
206
|
+
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
207
|
+
getSpotLightInfo( spotLights[ i ], geometry, directLight );
|
|
208
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
209
|
+
directLightColor_Diffuse = directLight.color;
|
|
210
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
211
|
+
#ifdef DOUBLE_SIDED
|
|
212
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
213
|
+
#endif
|
|
214
|
+
}
|
|
215
|
+
#pragma unroll_loop_end
|
|
216
|
+
#endif
|
|
217
|
+
#if NUM_DIR_LIGHTS > 0
|
|
218
|
+
#pragma unroll_loop_start
|
|
219
|
+
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
220
|
+
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
|
|
221
|
+
dotNL = dot( geometry.normal, directLight.direction );
|
|
222
|
+
directLightColor_Diffuse = directLight.color;
|
|
223
|
+
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
224
|
+
#ifdef DOUBLE_SIDED
|
|
225
|
+
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
226
|
+
#endif
|
|
227
|
+
}
|
|
228
|
+
#pragma unroll_loop_end
|
|
229
|
+
#endif
|
|
230
|
+
#if NUM_HEMI_LIGHTS > 0
|
|
231
|
+
#pragma unroll_loop_start
|
|
232
|
+
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
233
|
+
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
234
|
+
#ifdef DOUBLE_SIDED
|
|
235
|
+
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
|
|
236
|
+
#endif
|
|
237
|
+
}
|
|
238
|
+
#pragma unroll_loop_end
|
|
239
|
+
#endif
|
|
240
|
+
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=n.join(`
|
|
241
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
242
|
+
`));let m=["#include <normal_fragment_begin>",`
|
|
243
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
244
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
245
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
246
|
+
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
247
|
+
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
248
|
+
`,"#include <clipping_planes_fragment>"];m.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),n&&m.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+s.result+";"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),m.push(`
|
|
249
|
+
if (outgoingLight != diffuseColor) {
|
|
250
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
251
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
252
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
358
253
|
}
|
|
254
|
+
`),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
|
|
255
|
+
`)}return t}};var pi=require("three");var da=class extends st{constructor(){super("phong");this.nodeType="Phong";this.color=new Ie(5855577),this.specular=new Ie(1118481),this.shininess=new Y(30),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(0)}build(e){let t;if(e.define("PHONG"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(pi.UniformsUtils.merge([pi.UniformsLib.fog,pi.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
256
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
257
|
+
#ifndef USE_LAYER_DISPLACE
|
|
258
|
+
#include <defaultnormal_vertex>
|
|
259
|
+
#endif
|
|
359
260
|
|
|
360
|
-
return vec3(sqrt(res), abs(id));
|
|
361
|
-
}
|
|
362
|
-
`,[n]);return{toon:new K(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
|
|
363
|
-
float t = 0.0;
|
|
364
|
-
float shadow = 1.0;
|
|
365
|
-
|
|
366
|
-
if (positioning == 0) {
|
|
367
|
-
|
|
368
|
-
// Can't do this mode if lighting is "none"
|
|
369
|
-
#if (defined(PHONG) || defined(LAMBERT) || defined(STANDARD))
|
|
370
|
-
|
|
371
|
-
// Algorithm from Chapter 10 of Graphics Shaders
|
|
372
|
-
const vec3 weights = vec3(0.2125, 0.7154, 0.0721);
|
|
373
|
-
vec3 lpos;
|
|
374
|
-
vec3 l;
|
|
375
|
-
float dproduct;
|
|
376
|
-
|
|
377
|
-
#if (NUM_POINT_LIGHTS > 0)
|
|
378
|
-
|
|
379
|
-
#if defined(USE_SHADOWMAP) && (NUM_POINT_LIGHT_SHADOWS > 0)
|
|
380
|
-
PointLightShadow pointLightShadow;
|
|
381
|
-
#endif
|
|
382
|
-
|
|
383
|
-
#pragma unroll_loop_start
|
|
384
|
-
for (int i = 0; i < NUM_POINT_LIGHTS; i++) {
|
|
385
|
-
// Light positions are in view-space for some reason?
|
|
386
|
-
lpos = (inverse(viewMatrix) * vec4(pointLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
|
|
387
|
-
l = normalize(lpos - worldPosition);
|
|
388
|
-
|
|
389
|
-
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
390
|
-
|
|
391
|
-
// TODO: we want to use "intensity" but it isn't available in the shader code
|
|
392
|
-
//dproduct += dot(pointLights[UNROLLED_LOOP_INDEX].color, weights);
|
|
393
|
-
|
|
394
|
-
t = max(t, dproduct);
|
|
395
|
-
|
|
396
|
-
// Accumulate shadow contribution
|
|
397
|
-
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS)
|
|
398
|
-
pointLightShadow = pointLightShadows[UNROLLED_LOOP_INDEX];
|
|
399
|
-
shadow *= getPointShadow(
|
|
400
|
-
pointShadowMap[UNROLLED_LOOP_INDEX],
|
|
401
|
-
pointLightShadow.shadowMapSize,
|
|
402
|
-
pointLightShadow.shadowBias,
|
|
403
|
-
pointLightShadow.shadowRadius,
|
|
404
|
-
vPointShadowCoord[UNROLLED_LOOP_INDEX],
|
|
405
|
-
pointLightShadow.shadowCameraNear,
|
|
406
|
-
pointLightShadow.shadowCameraFar);
|
|
407
|
-
#endif
|
|
408
|
-
}
|
|
409
|
-
#pragma unroll_loop_end
|
|
410
|
-
|
|
411
|
-
#endif
|
|
412
|
-
|
|
413
|
-
#if NUM_DIR_LIGHTS > 0
|
|
414
|
-
|
|
415
|
-
#if defined(USE_SHADOWMAP) && (NUM_DIR_LIGHT_SHADOWS > 0)
|
|
416
|
-
DirectionalLightShadow directionalLightShadow;
|
|
417
|
-
#endif
|
|
418
|
-
|
|
419
|
-
#pragma unroll_loop_start
|
|
420
|
-
for (int i = 0; i < NUM_DIR_LIGHTS; i++) {
|
|
421
|
-
// Use the direction vector for directional lights instead
|
|
422
|
-
l = (inverse(viewMatrix) * vec4(directionalLights[UNROLLED_LOOP_INDEX].direction, 0.0)).xyz;
|
|
423
|
-
|
|
424
|
-
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
425
|
-
t = max(t, dproduct);
|
|
426
|
-
|
|
427
|
-
// Accumulate shadow contribution
|
|
428
|
-
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS)
|
|
429
|
-
directionalLightShadow = directionalLightShadows[UNROLLED_LOOP_INDEX];
|
|
430
|
-
shadow *= getShadow(
|
|
431
|
-
UNROLLED_LOOP_INDEX,
|
|
432
|
-
directionalShadowMap[UNROLLED_LOOP_INDEX],
|
|
433
|
-
directionalLightShadow.shadowMapSize,
|
|
434
|
-
directionalLightShadow.shadowBias,
|
|
435
|
-
directionalLightShadow.shadowRadius,
|
|
436
|
-
vDirectionalShadowCoord[UNROLLED_LOOP_INDEX]);
|
|
437
|
-
#endif
|
|
438
|
-
}
|
|
439
|
-
#pragma unroll_loop_end
|
|
440
|
-
|
|
441
|
-
#endif
|
|
442
|
-
|
|
443
|
-
#if NUM_SPOT_LIGHTS > 0
|
|
444
|
-
|
|
445
|
-
#if defined(USE_SHADOWMAP) && (NUM_SPOT_LIGHT_SHADOWS > 0)
|
|
446
|
-
SpotLightShadow spotLightShadow;
|
|
447
|
-
#endif
|
|
448
|
-
|
|
449
|
-
#pragma unroll_loop_start
|
|
450
|
-
for (int i = 0; i < NUM_SPOT_LIGHTS; i++) {
|
|
451
|
-
lpos = (inverse(viewMatrix) * vec4(spotLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
|
|
452
|
-
l = normalize(lpos - worldPosition);
|
|
453
|
-
|
|
454
|
-
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
455
|
-
t = max(t, dproduct);
|
|
456
|
-
|
|
457
|
-
// Accumulate shadow contribution
|
|
458
|
-
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS)
|
|
459
|
-
spotLightShadow = spotLightShadows[UNROLLED_LOOP_INDEX];
|
|
460
|
-
shadow *= getShadow(
|
|
461
|
-
UNROLLED_LOOP_INDEX,
|
|
462
|
-
spotShadowMap[UNROLLED_LOOP_INDEX],
|
|
463
|
-
spotLightShadow.shadowMapSize,
|
|
464
|
-
spotLightShadow.shadowBias,
|
|
465
|
-
spotLightShadow.shadowRadius,
|
|
466
|
-
vSpotShadowCoord[UNROLLED_LOOP_INDEX]);
|
|
467
|
-
#endif
|
|
468
|
-
}
|
|
469
|
-
#pragma unroll_loop_end
|
|
470
|
-
|
|
471
|
-
#endif
|
|
472
261
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
#endif
|
|
262
|
+
vec3 displaced_position = position;
|
|
263
|
+
vec3 displaced_normal = normal;
|
|
476
264
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
vec3
|
|
480
|
-
|
|
481
|
-
|
|
265
|
+
#ifdef USE_LAYER_DISPLACE
|
|
266
|
+
vec3 transformed;
|
|
267
|
+
vec3 transformedNormal;
|
|
268
|
+
#endif
|
|
269
|
+
`,"#include <normal_vertex>",`
|
|
270
|
+
#ifndef USE_LAYER_DISPLACE
|
|
271
|
+
#include <begin_vertex>
|
|
272
|
+
#endif
|
|
273
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=n.join(`
|
|
274
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
275
|
+
`));let m=["#include <normal_fragment_begin>",`
|
|
276
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
277
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
278
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
279
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
280
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
281
|
+
normal *= -1.0;
|
|
282
|
+
}
|
|
283
|
+
`," BlinnPhongMaterial material;"];m.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("material.diffuseColor = diffuseColor;"),m.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),m.push(`
|
|
284
|
+
if (outgoingLight != diffuseColor) {
|
|
285
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
286
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
287
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
288
|
+
}
|
|
289
|
+
`),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
|
|
290
|
+
`)}return t}};var Sn=require("three");var mi=class extends st{constructor(){super("standard");this.nodeType="Standard";this.color=new Ie(5855577),this.roughness=new Y(.3),this.metalness=new Y(0),this.reflectivity=new Y(.5),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(0)}build(e){let t;if(e.define("STANDARD"),e.requires.lights=!0,e.extensions.derivatives=!0,e.extensions.shaderTextureLOD=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(Sn.UniformsUtils.merge([Sn.UniformsLib.fog,Sn.UniformsLib.lights])),Sn.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
291
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
292
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
293
|
+
#include <defaultnormal_vertex>
|
|
294
|
+
#endif
|
|
482
295
|
|
|
483
|
-
|
|
296
|
+
vec3 displaced_position = position;
|
|
297
|
+
vec3 displaced_normal = normal;
|
|
484
298
|
|
|
485
|
-
|
|
486
|
-
vec3
|
|
487
|
-
vec3
|
|
488
|
-
|
|
489
|
-
|
|
299
|
+
#if defined( USE_LAYER_DISPLACE )
|
|
300
|
+
vec3 transformed;
|
|
301
|
+
vec3 transformedNormal;
|
|
302
|
+
#endif
|
|
303
|
+
`,"#include <normal_vertex>",`
|
|
304
|
+
#if !defined( USE_LAYER_DISPLACE )
|
|
305
|
+
#include <begin_vertex>
|
|
306
|
+
#endif /* !USE_LAYER_DISPLACE */
|
|
307
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=n.join(`
|
|
308
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Ie(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 n=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"),u=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,m=this.alpha?this.alpha.flow(e,"f"):void 0,p=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=m!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
309
|
+
`));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
310
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
311
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
312
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
313
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
314
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
315
|
+
normal *= -1.0;
|
|
490
316
|
}
|
|
317
|
+
`," PhysicalMaterial material;"," material.diffuseColor = vec3( 1.0 );"];d.push(n.code," vec3 diffuseColor = "+n.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+";"),m&&d.push(m.code,"#ifdef ALPHATEST"," if ( "+m.result+" <= ALPHATEST ) discard;","#endif"),d.push("vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );"),d.push("material.diffuseColor = diffuseColor * ( 1.0 - metalnessFactor );","material.roughness = max( roughnessFactor, 0.0525 );","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.roughness = clamp( roughnessFactor, 0.04, 1.0 );"),p?d.push(p.code,"material.specularColor = mix( vec3( 0.16 * pow2( "+p.result+" ) ), diffuseColor, metalnessFactor );"):d.push("material.specularColor = mix( vec3( 0.04 ), diffuseColor, metalnessFactor );"),d.push("#include <lights_fragment_begin>"),d.push("#include <lights_fragment_end>"),d.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular;"),d.push(`
|
|
318
|
+
if (outgoingLight != diffuseColor) {
|
|
319
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
320
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${l.result} * lightAccu;
|
|
321
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
322
|
+
}
|
|
323
|
+
`),u&&d.push(u.code,`outgoingLight = spe_blend(outgoingLight, ${u.result}, 1.0, SPE_BLENDING_NORMAL);`),m?d.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${m.result} );`):d.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),d.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=d.join(`
|
|
324
|
+
`)}return t}};var di=require("three");var fi=class extends st{constructor(){super("toon");this.nodeType="Toon";this.color=new Ie(5855577),this.specular=new Ie(1118481),this.shininess=new Y(30),this.penumbraSize=new ot(5,.5),this.shadingAlpha=new Y(1),this.shadingBlend=new ye(0)}build(e){let t;if(e.define("TOON"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(di.UniformsUtils.merge([di.UniformsLib.fog,di.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
325
|
+
`));let n=["#include <beginnormal_vertex>",`
|
|
326
|
+
#ifndef USE_LAYER_DISPLACE
|
|
327
|
+
#include <defaultnormal_vertex>
|
|
328
|
+
#endif
|
|
491
329
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
vec3 st = position / noiseScale;
|
|
495
|
-
|
|
496
|
-
// Voronoi "smooth" noise
|
|
497
|
-
float noise = 1.0 - voronoiNoise(st).x;
|
|
498
|
-
|
|
499
|
-
// Voronoi cellular noise
|
|
500
|
-
//float noise = 1.0 - rand(voronoiNoise(st).z);
|
|
330
|
+
vec3 displaced_position = position;
|
|
331
|
+
vec3 displaced_normal = normal;
|
|
501
332
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
333
|
+
#ifdef USE_LAYER_DISPLACE
|
|
334
|
+
vec3 transformed;
|
|
335
|
+
vec3 transformedNormal;
|
|
336
|
+
#endif
|
|
337
|
+
`,"#include <normal_vertex>",`
|
|
338
|
+
#ifndef USE_LAYER_DISPLACE
|
|
339
|
+
#include <begin_vertex>
|
|
340
|
+
#endif
|
|
341
|
+
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),t=n.join(`
|
|
342
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Ie(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,u=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=u!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
343
|
+
varying vec3 vViewPosition;
|
|
344
|
+
struct ToonMaterial {
|
|
345
|
+
vec3 diffuseColor;
|
|
346
|
+
vec3 specularColor;
|
|
347
|
+
float specularShininess;
|
|
348
|
+
float specularStrength;
|
|
349
|
+
};
|
|
350
|
+
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
351
|
+
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
|
352
|
+
|
|
353
|
+
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
354
|
+
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
|
355
|
+
}
|
|
356
|
+
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
357
|
+
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
358
|
+
}
|
|
359
|
+
#define RE_Direct RE_Direct_Toon
|
|
360
|
+
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
361
|
+
#define Material_LightProbeLOD( material ) (0)
|
|
362
|
+
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
363
|
+
`));let m=["#include <normal_fragment_begin>",`
|
|
364
|
+
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
365
|
+
vec3 viewdx = dFdx(vViewPosition);
|
|
366
|
+
vec3 viewdy = dFdy(vViewPosition);
|
|
367
|
+
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
368
|
+
if (dot(normal, faceNormal) < 0.0) {
|
|
369
|
+
normal *= -1.0;
|
|
370
|
+
}
|
|
371
|
+
`," ToonMaterial material;"];m.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),u&&m.push(u.code,"#ifdef ALPHATEST","if ( "+u.result+" <= ALPHATEST ) discard;","#endif"),m.push("material.diffuseColor = diffuseColor;"),m.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),m.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),m.push(`
|
|
372
|
+
if (outgoingLight != diffuseColor) {
|
|
373
|
+
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
374
|
+
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
375
|
+
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
376
|
+
}
|
|
377
|
+
`),c&&m.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),u?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${u.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),t=m.join(`
|
|
378
|
+
`)}return t}};var to=class extends Me{constructor(e){super("b");this.nodeType="Bool";this.value=e??!1}generateReadonly(e,t,o,n){return e.format(this.value?"true":"false",n,t)}};var md=require("three");var wn=class extends Me{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e??new md.Matrix3}generateReadonly(e,t,o,n,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",n,t)}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var Bl=require("three");var Jt=class extends Me{constructor(e=1,t){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(t)?t:t instanceof Bl.Vector4?new Array(e).fill(t):new Array(e).fill(new Bl.Vector4(0))}};var hi=(n=>(n.SIMPLEX="simplex3d",n.SIMPLEX_FRACTAL="simplex3dFractal",n.ASHIMA="simplexAshima",n.FBM="fbm",n.PERLIN="perlin",n))(hi||{}),ht=function(){let r=new X(`vec3 random3(vec3 c) {
|
|
379
|
+
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
380
|
+
vec3 r;
|
|
381
|
+
r.z = fract(512.0*j);
|
|
382
|
+
j *= .125;
|
|
383
|
+
r.x = fract(512.0*j);
|
|
384
|
+
j *= .125;
|
|
385
|
+
r.y = fract(512.0*j);
|
|
386
|
+
return r-0.5;
|
|
387
|
+
}`),e=new X(`float simplex3d(vec3 p) {
|
|
388
|
+
vec3 s = floor(p + dot(p, vec3(F3)));
|
|
389
|
+
vec3 x = p - s + dot(s, vec3(G3));
|
|
390
|
+
|
|
391
|
+
vec3 e = step(vec3(0.0), x - x.yzx);
|
|
392
|
+
vec3 i1 = e*(1.0 - e.zxy);
|
|
393
|
+
vec3 i2 = 1.0 - e.zxy*(1.0 - e);
|
|
394
|
+
|
|
395
|
+
vec3 x1 = x - i1 + G3;
|
|
396
|
+
vec3 x2 = x - i2 + 2.0*G3;
|
|
397
|
+
vec3 x3 = x - 1.0 + 3.0*G3;
|
|
398
|
+
|
|
399
|
+
vec4 w, d;
|
|
400
|
+
|
|
401
|
+
w.x = dot(x, x);
|
|
402
|
+
w.y = dot(x1, x1);
|
|
403
|
+
w.z = dot(x2, x2);
|
|
404
|
+
w.w = dot(x3, x3);
|
|
405
|
+
|
|
406
|
+
w = max(0.6 - w, 0.0);
|
|
407
|
+
|
|
408
|
+
d.x = dot(random3(s), x);
|
|
409
|
+
d.y = dot(random3(s + i1), x1);
|
|
410
|
+
d.z = dot(random3(s + i2), x2);
|
|
411
|
+
d.w = dot(random3(s + 1.0), x3);
|
|
412
|
+
|
|
413
|
+
w *= w;
|
|
414
|
+
w *= w;
|
|
415
|
+
d *= w;
|
|
416
|
+
|
|
417
|
+
return dot(d, vec4(52.0));
|
|
418
|
+
}`,[r]);e.keywords.F3=new we("float F3 0.3333333"),e.keywords.G3=new we("float G3 0.1666667");let t=new X(`float simplex3dFractal(vec3 m) {
|
|
419
|
+
mat3 rot1 = mat3(-0.37, 0.36, 0.85,-0.14,-0.93, 0.34,0.92, 0.01,0.4);
|
|
420
|
+
mat3 rot2 = mat3(-0.55,-0.39, 0.74, 0.33,-0.91,-0.24,0.77, 0.12,0.63);
|
|
421
|
+
mat3 rot3 = mat3(-0.71, 0.52,-0.47,-0.08,-0.72,-0.68,-0.7,-0.45,0.56);
|
|
422
|
+
return 0.5333333 * simplex3d(m * rot1)
|
|
423
|
+
+ 0.2666667 * simplex3d(2.0 * m * rot2)
|
|
424
|
+
+ 0.1333333 * simplex3d(4.0 * m * rot3)
|
|
425
|
+
+ 0.0666667 * simplex3d(8.0 * m);
|
|
426
|
+
}`,[e]),o=new X("vec4 permute(vec4 x){return mod(((x*34.0)+1.0)*x, 289.0);}"),n=new X("vec4 taylorInvSqrt(vec4 r){return 1.79284291400159 - 0.85373472095314 * r;}"),s=new X(`float simplexAshima(vec3 v) {
|
|
427
|
+
const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;
|
|
428
|
+
const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
|
|
429
|
+
vec3 i = floor(v + dot(v, C.yyy) );
|
|
430
|
+
vec3 x0 = v - i + dot(i, C.xxx) ;
|
|
431
|
+
vec3 g = step(x0.yzx, x0.xyz);
|
|
432
|
+
vec3 l = 1.0 - g;
|
|
433
|
+
vec3 i1 = min( g.xyz, l.zxy );
|
|
434
|
+
vec3 i2 = max( g.xyz, l.zxy );
|
|
435
|
+
vec3 x1 = x0 - i1 + 1.0 * C.xxx;
|
|
436
|
+
vec3 x2 = x0 - i2 + 2.0 * C.xxx;
|
|
437
|
+
vec3 x3 = x0 - 1. + 3.0 * C.xxx;
|
|
438
|
+
i = mod(i, 289.0 );
|
|
439
|
+
vec4 p = permute( permute( permute(
|
|
440
|
+
i.z + vec4(0.0, i1.z, i2.z, 1.0 ))
|
|
441
|
+
+ i.y + vec4(0.0, i1.y, i2.y, 1.0 ))
|
|
442
|
+
+ i.x + vec4(0.0, i1.x, i2.x, 1.0 ));
|
|
443
|
+
float n_ = 1.0/7.0; // N=7
|
|
444
|
+
vec3 ns = n_ * D.wyz - D.xzx;
|
|
445
|
+
vec4 j = p - 49.0 * floor(p * ns.z *ns.z); // mod(p,N*N)
|
|
446
|
+
vec4 x_ = floor(j * ns.z);
|
|
447
|
+
vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)
|
|
448
|
+
vec4 x = x_ *ns.x + ns.yyyy;
|
|
449
|
+
vec4 y = y_ *ns.x + ns.yyyy;
|
|
450
|
+
vec4 h = 1.0 - abs(x) - abs(y);
|
|
451
|
+
vec4 b0 = vec4( x.xy, y.xy );
|
|
452
|
+
vec4 b1 = vec4( x.zw, y.zw );
|
|
453
|
+
vec4 s0 = floor(b0)*2.0 + 1.0;
|
|
454
|
+
vec4 s1 = floor(b1)*2.0 + 1.0;
|
|
455
|
+
vec4 sh = -step(h, vec4(0.0));
|
|
456
|
+
vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;
|
|
457
|
+
vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;
|
|
458
|
+
vec3 p0 = vec3(a0.xy,h.x);
|
|
459
|
+
vec3 p1 = vec3(a0.zw,h.y);
|
|
460
|
+
vec3 p2 = vec3(a1.xy,h.z);
|
|
461
|
+
vec3 p3 = vec3(a1.zw,h.w);
|
|
462
|
+
vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));
|
|
463
|
+
p0 *= norm.x;
|
|
464
|
+
p1 *= norm.y;
|
|
465
|
+
p2 *= norm.z;
|
|
466
|
+
p3 *= norm.w;
|
|
467
|
+
vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);
|
|
468
|
+
m = m * m;
|
|
469
|
+
return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),
|
|
470
|
+
dot(p2,x2), dot(p3,x3) ) );
|
|
471
|
+
}`,[o,n]),a=new X("vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}"),l=new X("vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}",[a]),c=new X(`float noise(vec3 p){
|
|
472
|
+
vec3 a = floor(p);
|
|
473
|
+
vec3 d = p - a;
|
|
474
|
+
d = d * d * (3.0 - 2.0 * d);
|
|
475
|
+
vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);
|
|
476
|
+
vec4 k1 = perm(b.xyxy);
|
|
477
|
+
vec4 k2 = perm(k1.xyxy + b.zzww);
|
|
478
|
+
vec4 c = k2 + a.zzzz;
|
|
479
|
+
vec4 k3 = perm(c);
|
|
480
|
+
vec4 k4 = perm(c + 1.0);
|
|
481
|
+
vec4 o1 = fract(k3 * (1.0 / 41.0));
|
|
482
|
+
vec4 o2 = fract(k4 * (1.0 / 41.0));
|
|
483
|
+
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
484
|
+
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
485
|
+
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
486
|
+
}`,[l]),u=new X(`float fbm(vec3 x) {
|
|
487
|
+
float v = 0.0;
|
|
488
|
+
float a = 0.5;
|
|
489
|
+
vec3 shift = vec3(100);
|
|
490
|
+
for (int i = 0; i < NUM_OCTAVES; ++i) {
|
|
491
|
+
v += a * noise(x);
|
|
492
|
+
x = x * 2.0 + shift;
|
|
493
|
+
a *= 0.5;
|
|
494
|
+
}
|
|
495
|
+
return v;
|
|
496
|
+
}`,[c]);u.keywords.NUM_OCTAVES=new we(`int NUM_OCTAVES ${5}`);let m=new X("vec3 fade(vec3 t) {return t*t*t*(t*(t*6.0-15.0)+10.0);}"),p=new X(`float perlin(vec3 P){
|
|
497
|
+
vec3 Pi0 = floor(P);
|
|
498
|
+
vec3 Pi1 = Pi0 + vec3(1.0);
|
|
499
|
+
Pi0 = mod(Pi0, 289.0);
|
|
500
|
+
Pi1 = mod(Pi1, 289.0);
|
|
501
|
+
vec3 Pf0 = fract(P);
|
|
502
|
+
vec3 Pf1 = Pf0 - vec3(1.0);
|
|
503
|
+
vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
|
|
504
|
+
vec4 iy = vec4(Pi0.yy, Pi1.yy);
|
|
505
|
+
vec4 iz0 = Pi0.zzzz;
|
|
506
|
+
vec4 iz1 = Pi1.zzzz;
|
|
507
|
+
vec4 ixy = permute(permute(ix) + iy);
|
|
508
|
+
vec4 ixy0 = permute(ixy + iz0);
|
|
509
|
+
vec4 ixy1 = permute(ixy + iz1);
|
|
510
|
+
vec4 gx0 = ixy0 / 7.0;
|
|
511
|
+
vec4 gy0 = fract(floor(gx0) / 7.0) - 0.5;
|
|
512
|
+
gx0 = fract(gx0);
|
|
513
|
+
vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);
|
|
514
|
+
vec4 sz0 = step(gz0, vec4(0.0));
|
|
515
|
+
gx0 -= sz0 * (step(0.0, gx0) - 0.5);
|
|
516
|
+
gy0 -= sz0 * (step(0.0, gy0) - 0.5);
|
|
517
|
+
vec4 gx1 = ixy1 / 7.0;
|
|
518
|
+
vec4 gy1 = fract(floor(gx1) / 7.0) - 0.5;
|
|
519
|
+
gx1 = fract(gx1);
|
|
520
|
+
vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);
|
|
521
|
+
vec4 sz1 = step(gz1, vec4(0.0));
|
|
522
|
+
gx1 -= sz1 * (step(0.0, gx1) - 0.5);
|
|
523
|
+
gy1 -= sz1 * (step(0.0, gy1) - 0.5);
|
|
524
|
+
vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);
|
|
525
|
+
vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);
|
|
526
|
+
vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);
|
|
527
|
+
vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);
|
|
528
|
+
vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);
|
|
529
|
+
vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);
|
|
530
|
+
vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);
|
|
531
|
+
vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);
|
|
532
|
+
vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));
|
|
533
|
+
g000 *= norm0.x;
|
|
534
|
+
g010 *= norm0.y;
|
|
535
|
+
g100 *= norm0.z;
|
|
536
|
+
g110 *= norm0.w;
|
|
537
|
+
vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));
|
|
538
|
+
g001 *= norm1.x;
|
|
539
|
+
g011 *= norm1.y;
|
|
540
|
+
g101 *= norm1.z;
|
|
541
|
+
g111 *= norm1.w;
|
|
542
|
+
float n000 = dot(g000, Pf0);
|
|
543
|
+
float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));
|
|
544
|
+
float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));
|
|
545
|
+
float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));
|
|
546
|
+
float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));
|
|
547
|
+
float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));
|
|
548
|
+
float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));
|
|
549
|
+
float n111 = dot(g111, Pf1);
|
|
550
|
+
vec3 fade_xyz = fade(Pf0);
|
|
551
|
+
vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);
|
|
552
|
+
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
553
|
+
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
554
|
+
return 2.2 * n_xyz;
|
|
555
|
+
}`,[o,n,m]);return{simplex:e,simplexFractal:t,simplexAshima:s,fbm:u,perlin:p}}();var gi=class extends le{constructor(e,t,o,n,s,a,l,c,u,m,p,d){super("v3");this.nodeType="Noise";this.scale=e,this.size=t,this.move=o,this.fA=n,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=u,this.colorD=m,this.alpha=p,this.noiseType=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t,o,n,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(hi)[this.noiseType.value],l=new X(`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) {
|
|
556
|
+
vec3 st = position / size;
|
|
557
|
+
st /= scale;
|
|
558
|
+
vec3 q = vec3(${a}(st),
|
|
559
|
+
${a}(st + vec3(1.0)),
|
|
560
|
+
${a}(st + vec3(1.0)));
|
|
561
|
+
vec3 r = vec3(${a}(st + vec3(distortion, 1.0) * q + vec3(fA, 1.0) + move),
|
|
562
|
+
${a}(st + vec3(distortion, 1.0) * q + vec3(fB, 1.0) + move),
|
|
563
|
+
${a}(st * q));
|
|
564
|
+
float f = ${a}(st + r);
|
|
565
|
+
vec4 color;
|
|
566
|
+
color = mix(colorA, colorB, clamp((f * f) * 4.0, 0.0, 1.0));
|
|
567
|
+
color = mix(color, colorC, clamp(length(q), 0.0, 1.0));
|
|
568
|
+
color = mix(color, colorD, clamp(length(r.x), 0.0, 1.0));
|
|
510
569
|
|
|
511
|
-
|
|
512
|
-
|
|
570
|
+
float lalpha = alpha * color.a;
|
|
571
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
513
572
|
|
|
514
|
-
|
|
573
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
574
|
+
return clamp(color, 0.0, 1.0).rgb;
|
|
575
|
+
}`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin]),c=e.include(l),u=[];return u.push(this.scale.build(e,"f")),u.push(this.size.build(e,"v3")),u.push(this.move.build(e,"f")),u.push(this.fA.build(e,"v2")),u.push(this.fB.build(e,"v2")),u.push(this.distortion.build(e,"v2")),u.push(this.colorA.build(e,"v4")),u.push(this.colorB.build(e,"v4")),u.push(this.colorC.build(e,"v4")),u.push(this.colorD.build(e,"v4")),u.push(this.alpha.build(e,"f")),u.push(this.calpha),e.format(c+"("+u.join(",")+")",this.getType(e),t)}};gi.numOctaves=5;var Gl=class extends le{constructor(e,t,o,n,s,a,l){super("v3");this.nodeType="Fresnel";this.color=e,this.bias=t,this.scale=o,this.intensity=n,this.factor=s,this.alpha=a,this.mode=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Gl.Nodes.fresnel),n=[];return n.push(this.color.build(e,"c")),n.push(this.bias.build(e,"f")),n.push(this.scale.build(e,"f")),n.push(this.intensity.build(e,"f")),n.push(this.factor.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("FresnelNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},yi=Gl;yi.Nodes=function(){return{fresnel:new X(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
576
|
+
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
515
577
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
578
|
+
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
579
|
+
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
580
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
581
|
+
return color;
|
|
582
|
+
}`)}}();var Rl=class extends le{constructor(e,t,o,n,s,a,l){super("v3");this.nodeType="Rainbow";this.filmThickness=e,this.movement=t,this.wavelengths=o,this.noiseStrength=n,this.noiseScale=s,this.offset=a,this.alpha=l,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(Rl.Nodes.rainbow),n=[];return n.push(this.filmThickness.build(e,"f")),n.push(this.movement.build(e,"f")),n.push(this.wavelengths.build(e,"v3")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("RainbowNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},xi=Rl;xi.Nodes=function(){let e=new X(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
583
|
+
vec3 st = position / noiseScale;
|
|
584
|
+
vec3 q = vec3(simplex3d(st),
|
|
585
|
+
simplex3d(st + vec3(1.0)),
|
|
586
|
+
simplex3d(st + vec3(1.0)));
|
|
523
587
|
|
|
524
|
-
|
|
525
|
-
|
|
588
|
+
vec3 r = vec3(simplex3d(st + vec3(1.4, 1.3, 1.0) * q + vec3(1.7, 9.2, 1.0)),
|
|
589
|
+
simplex3d(st + vec3(2.0, 1.2, 1.0) * q + vec3(8.3, 2.8, 1.0)),
|
|
590
|
+
simplex3d(st * q));
|
|
526
591
|
|
|
527
|
-
|
|
528
|
-
color.rgb = mix(blendedShadow, color.rgb, shadow);
|
|
529
|
-
|
|
530
|
-
}
|
|
592
|
+
float noise = simplex3d(st + r);
|
|
531
593
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
594
|
+
return .5 + .5 * cos((((filmThickness + (noise * noiseStrength)) / (vec3(wavelengths.r * 1.0, wavelengths.g * 0.8, wavelengths.b * 0.6) + 1.0)) * dot(normalize(vWorldViewDir + (offset * -0.001)), normalize(vWNormal))) + movement);
|
|
595
|
+
}`,[ht.simplex]);return{rainbow:new X(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
596
|
+
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
536
597
|
|
|
537
|
-
|
|
598
|
+
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
599
|
+
float lalpha = alpha * rainbowContribution;
|
|
600
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
601
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
538
602
|
|
|
539
|
-
|
|
603
|
+
return res;
|
|
604
|
+
}`,[e])}}();var zl=class extends le{constructor(e,t,o,n,s,a,l,c,u,m,p,d,f,g,x,y){super("v3");this.nodeType="Outline";this.firstTime=!0,this.outlineColor=e,this.contourColor=t,this.outlineWidth=o,this.contourWidth=n,this.contourThreshold=s,this.outlineThreshold=a,this.contourFrequency=l,this.outlineSmoothing=c,this.contourDirection=u,this.positionalLines=m,this.compensation=p,this.resolution=d,this.normalMap=f,this.depthMap=g,this.pixelRatio=x,this.alpha=y,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("vWorldViewDir"),e.require("worldNormal"),e.extensions.derivatives=!0,this.firstTime){let o=this.outlineWidth.build(e,"f"),n=this.resolution.build(e,"v2"),s=this.compensation.build(e,"b"),a=this.pixelRatio.build(e,"f");e.addVertexParsVariable("randomColor","attribute vec3"),e.addVertexParsVariable("extrudeNormal","attribute vec3"),e.addVertexParsVariable(o,"uniform float"),e.addVertexParsVariable(n,"uniform vec2"),e.addVertexParsVariable(s,"uniform bool"),e.addVertexParsVariable(a,"uniform float"),e.addVertexParsVariable("vID","flat out float"),e.addFragmentParsVariable("vID","flat in float");let l=`g${this.uuid.toString().replace(/-/g,"")}`;e.addVertexFinalCode(`
|
|
540
605
|
vID = randomColor.r;
|
|
541
606
|
if (${s}) {
|
|
542
607
|
vec4 ${l}_clipPosition = projectionMatrix * (modelViewMatrix * vec4(position, 1.0));
|
|
@@ -547,7 +612,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
547
612
|
// if this offset is the biggest of all the potential offsets
|
|
548
613
|
gl_Position = ${l}_clipPosition;
|
|
549
614
|
}
|
|
550
|
-
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(
|
|
615
|
+
`)}if(e.isShader("fragment")){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(zl.Nodes.outline),n=[];return n.push(this.outlineColor.build(e,"c")),n.push(this.contourColor.build(e,"c")),n.push(this.outlineWidth.build(e,"f")),n.push(this.contourWidth.build(e,"f")),n.push(this.contourThreshold.build(e,"f")),n.push(this.outlineThreshold.build(e,"f")),n.push(this.contourFrequency.build(e,"f")),n.push(this.outlineSmoothing.build(e,"f")),n.push(this.contourDirection.build(e,"v3")),n.push(this.positionalLines.build(e,"b")),n.push(this.resolution.build(e,"v2")),n.push(this.normalMap.getTexture(e,"t")),n.push(this.depthMap.getTexture(e,"t")),n.push(this.pixelRatio.build(e,"f")),n.push(this.compensation.build(e,"b")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),this.firstTime=!this.firstTime,e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("OutlineNode is not compatible with "+e.shader+" shader."),""}},vi=zl;vi.Nodes=function(){let e=new X(`
|
|
551
616
|
float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outlineWidth, float pixelRatio)
|
|
552
617
|
{
|
|
553
618
|
vec2 texelSize = (vec2(1.0) / resolution) * outlineWidth * pixelRatio;
|
|
@@ -648,7 +713,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
648
713
|
float edgeNormal = sqrt(dot(sobel_edge_h, sobel_edge_h) + dot(sobel_edge_v, sobel_edge_v));
|
|
649
714
|
return edgeNormal;
|
|
650
715
|
}
|
|
651
|
-
`);return{outline:new
|
|
716
|
+
`);return{outline:new X(`vec3 outline(vec3 outlineColor, vec3 contourColor, float outlineWidth, float contourWidth, float outlineThreshold, float contourThreshold, float outlineSmoothing, float contourFrequency, vec3 contourDirection, bool positionalLines, vec2 resolution, sampler2D normalMap, sampler2D depthMap, float pixelRatio, bool compensation, float alpha, out float calpha) {
|
|
652
717
|
vec3 result = outlineColor;
|
|
653
718
|
float resultAlpha = 0.0;
|
|
654
719
|
|
|
@@ -687,11 +752,11 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
687
752
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
688
753
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
689
754
|
return result;
|
|
690
|
-
}`,[e])}}();var
|
|
755
|
+
}`,[e])}}();var Vl=class extends le{constructor(e,t,o,n,s,a,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=t,this.roughness=o,this.transmissionSamplerSize=n,this.transmissionSamplerMap=s,this.transmissionDepthMap=a,this.aspectRatio=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0,e.isShader("fragment")){e.define("NUM_SAMPLES",30),e.require("worldPosition"),e.requires.worldNormal=!0,e.requires.modelMatrix=!0,e.requires.projectionMatrix=!0,e.addFragmentVariable(this.calpha,"float");let o=e.include(Vl.Nodes.transmission),n=[];return n.push(this.thickness.build(e,"f")),n.push(this.ior.build(e,"f")),n.push(this.roughness.build(e,"f")),n.push(this.transmissionSamplerSize.build(e,"v2")),n.push(this.transmissionSamplerMap.getTexture(e,"t")),n.push(this.transmissionDepthMap.getTexture(e,"t")),n.push(this.aspectRatio.build(e,"v2")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},bi=Vl;bi.Nodes=function(){let e=new X(`
|
|
691
756
|
float gaussian(vec2 i) {
|
|
692
757
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
693
758
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
694
|
-
}`),
|
|
759
|
+
}`),t=new X(`
|
|
695
760
|
vec4 blur(sampler2D sp, vec2 U, vec2 scale, float lod, sampler2D dm, vec2 unrefractedU, vec2 aspectRatio) {
|
|
696
761
|
// Slightly modified version of this:
|
|
697
762
|
// https://www.shadertoy.com/view/ltScRG
|
|
@@ -718,7 +783,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
718
783
|
#endif
|
|
719
784
|
}
|
|
720
785
|
return O / O.a;
|
|
721
|
-
}`,[e]),o=new
|
|
786
|
+
}`,[e]),o=new X(`
|
|
722
787
|
vec3 getVolumeTransmissionRay( vec3 n, vec3 v, float thickness, float ior, mat4 modelMatrix ) {
|
|
723
788
|
// Direction of refracted light.
|
|
724
789
|
vec3 refractionVector = refract( -v, n, 1.0 / ior );
|
|
@@ -729,18 +794,18 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl
|
|
|
729
794
|
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
|
|
730
795
|
// The thickness is specified in local space.
|
|
731
796
|
return normalize( refractionVector ) * thickness * modelScale;
|
|
732
|
-
}`),n=new
|
|
797
|
+
}`),n=new X(`
|
|
733
798
|
float applyIorToRoughness( float roughness, float ior ) {
|
|
734
799
|
// Scale roughness with IOR so that an IOR of 1.0 results in no microfacet refraction and
|
|
735
800
|
// an IOR of 1.5 results in the default amount of microfacet refraction.
|
|
736
801
|
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
|
|
737
|
-
} `),s=new
|
|
802
|
+
} `),s=new X(`
|
|
738
803
|
vec4 getTransmissionSample( vec2 fragCoord, float roughness, float ior, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 unrefractedCoords, vec2 aspectRatio) {
|
|
739
804
|
float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
|
740
805
|
float lod = applyIorToRoughness(roughness, ior);
|
|
741
806
|
|
|
742
807
|
return blur(transmissionSamplerMap, fragCoord, vec2(lod / (transmissionSamplerSize.x / 2.)), min(framebufferLod / 5.5, 8.5), transmissionDepthMap, unrefractedCoords, aspectRatio);
|
|
743
|
-
}`,[n,
|
|
808
|
+
}`,[n,t]),a=new X(`
|
|
744
809
|
vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat4 modelMatrix, mat4 viewMatrix, mat4 projMatrix, float ior, float thickness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio ) {
|
|
745
810
|
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
|
|
746
811
|
vec3 refractedRayExit = position + transmissionRay;
|
|
@@ -760,7 +825,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
760
825
|
vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior, transmissionSamplerSize, transmissionSamplerMap, transmissionDepthMap, unrefractedCoords, aspectRatio );
|
|
761
826
|
// Get the specular component.
|
|
762
827
|
return vec4( ( 1.0 ) * transmittedLight.rgb, transmittedLight.a );
|
|
763
|
-
}`,[s,o]);return{transmission:new
|
|
828
|
+
}`,[s,o]);return{transmission:new X(`
|
|
764
829
|
vec3 transmission(float thickness, float ior, float roughness, vec2 transmissionSamplerSize, sampler2D transmissionSamplerMap, sampler2D transmissionDepthMap, vec2 aspectRatio, vec3 normal, float alpha, out float calpha) {
|
|
765
830
|
vec3 v = vec3(0.);
|
|
766
831
|
if (isOrthographic) {
|
|
@@ -774,14 +839,103 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
774
839
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
775
840
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
776
841
|
return transmission.rgb;
|
|
777
|
-
}`,[a])}}();var
|
|
778
|
-
|
|
779
|
-
|
|
842
|
+
}`,[a])}}();var Tn=class extends le{constructor(e,t,o,n,s,a,l,c,u,m,p,d){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=t,this.near=o,this.far=n,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=u,this.steps=m,this.num=p,this.alpha=d,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){let o=`g${this.uuid.toString().replace(/-/g,"")}`,n=new X(`vec3 ${o}_sdepth(float near, float far, vec3 origin, vec3 direction, vec4 colors[${o}_MAX_COLORS], float steps[${o}_MAX_COLORS], float alpha, out float calpha) {
|
|
843
|
+
vec4 color = colors[0];
|
|
844
|
+
#ifdef ${o}_IS_VECTOR
|
|
845
|
+
#ifdef ${o}_LINEAR
|
|
846
|
+
#ifdef ${o}_WORLDSPACE
|
|
847
|
+
float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
|
|
848
|
+
#else
|
|
849
|
+
float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
|
|
850
|
+
#endif
|
|
851
|
+
#else
|
|
852
|
+
#ifdef ${o}_WORLDSPACE
|
|
853
|
+
float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
|
|
854
|
+
#else
|
|
855
|
+
float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
|
|
856
|
+
#endif
|
|
857
|
+
#endif
|
|
858
|
+
#else
|
|
859
|
+
float dist = length(vWPosition - cameraPosition);
|
|
860
|
+
float depth = ( dist - near ) / ( far - near );
|
|
861
|
+
#endif
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
float p;
|
|
865
|
+
#ifdef ${o}_SMOOTH
|
|
866
|
+
for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
|
|
867
|
+
p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
|
|
868
|
+
color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
|
|
869
|
+
}
|
|
870
|
+
#else
|
|
871
|
+
for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
|
|
872
|
+
p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
|
|
873
|
+
color = mix(color, colors[i], p);
|
|
874
|
+
}
|
|
875
|
+
#endif
|
|
876
|
+
|
|
877
|
+
float lalpha = alpha * color.a;
|
|
878
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
780
879
|
|
|
781
|
-
|
|
880
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
881
|
+
return color.rgb;
|
|
882
|
+
}`,[Tn.Nodes.vectorLinearWorldSpaceDepth,Tn.Nodes.vectorLinearObjectSpaceDepth,Tn.Nodes.vectorSphericalObjectSpaceDepth,Tn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.num.value+1),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(n),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),t)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Si=Tn;Si.Nodes=function(){let e=new X(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
883
|
+
vec3 n = normalize(direction);
|
|
884
|
+
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
885
|
+
return ( dist - near ) / ( far - near );
|
|
886
|
+
}`),t=new X(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
887
|
+
vec3 n = normalize(direction);
|
|
888
|
+
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
889
|
+
return ( dist - near ) / ( far - near );
|
|
890
|
+
}`),o=new X(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
891
|
+
float dist = length(vWPosition - origin);
|
|
892
|
+
return ( dist - near ) / ( far - near );
|
|
893
|
+
}`),n=new X(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
894
|
+
float dist = length(position - origin);
|
|
895
|
+
return ( dist - near ) / ( far - near );
|
|
896
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:t,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var wi=class extends le{constructor(e,t,o,n){super("v3");this.nodeType="Blend";this.a=e,this.b=t,this.alpha=o,this.mode=n}generate(e,t){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),t)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}};var Fl=(e=>(e.NOISE="noise",e.MAP="map",e))(Fl||{}),Ul=class extends le{constructor(e,t,o,n,s){super("v3");this.displacementTypeIndex=new ye(0);this.nodeType="VertexDisplacement";this.intensity=e,this.movementOrTexture=t,Object.values(Fl)[this.displacementTypeIndex.value]==="map"&&(this.mat=new wn(this.movementOrTexture.value.matrix)),this.cropOrOffset=o,this.scale=n,this.noiseFunctionIndex=s}generate(e,t){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,n=[];switch(n.push("displaced_position"),n.push("displaced_normal"),Object.values(Fl)[this.displacementTypeIndex.value]){case"map":{o=e.include(Ul.Nodes.map),n.push(this.movementOrTexture.getTexture(e,"t")),n.push("uv"),n.push(this.cropOrOffset.build(e,"f")),this.mat&&n.push(this.mat.build(e,"mat3"));break}case"noise":{let a=Object.values(hi)[this.noiseFunctionIndex.value],l=new X(`vec3 orthogonal(vec3 v) {
|
|
897
|
+
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
898
|
+
}`),c=new X(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
899
|
+
return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
900
|
+
}`,[ht.simplex,ht.simplexFractal,ht.simplexAshima,ht.fbm,ht.perlin]),u=new X(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
|
|
901
|
+
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
902
|
+
vec3 tangent1 = orthogonal(normal);
|
|
903
|
+
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
782
904
|
|
|
783
|
-
|
|
784
|
-
|
|
905
|
+
// TODO(Max): The distance to the neighbors was originally scaled by 0.1.
|
|
906
|
+
// This caused some small oval/circular visual artifacts in the lighting.
|
|
907
|
+
// For now, simply using neighbors further away betters the problem,
|
|
908
|
+
// but we should figure out the underlying cause when we have some time.
|
|
909
|
+
// Maybe its related to how we calculate the tangent and bitangent?
|
|
910
|
+
vec3 nearby1 = position + tangent1;
|
|
911
|
+
vec3 nearby2 = position + tangent2;
|
|
912
|
+
vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
913
|
+
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
914
|
+
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
915
|
+
return displaced_position;
|
|
916
|
+
}`,[c,l]);o=e.include(u),n.push(this.scale.build(e,"f")),n.push(this.cropOrOffset.build(e,"v3")),n.push(this.movementOrTexture.build(e,"f"));break}}return n.push(this.intensity.build(e,"f")),n.push("displaced_normal"),e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ti=Ul;Ti.Nodes=function(){let e=new X(`vec3 orthogonal(vec3 v) {
|
|
917
|
+
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
918
|
+
}`),t=new X(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
919
|
+
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
920
|
+
vec4 tmp = texture2D(tex, uvs);
|
|
921
|
+
vec3 col = tmp.rgb;
|
|
922
|
+
if (crop > 0.5) {
|
|
923
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
924
|
+
return 0.0;
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
return col.r;
|
|
928
|
+
}`);return{map:new X(`vec3 vertexDisplacementMap(vec3 position, vec3 normal, sampler2D tex, vec2 uv, float crop, mat3 mat, float intensity, out vec3 displaced_normal) {
|
|
929
|
+
vec3 displaced_position = position + normal * displacementMapTexture(tex, crop, uv, mat, vec2(0.0)) * intensity;
|
|
930
|
+
vec3 tangent1 = normalize(orthogonal(normal));
|
|
931
|
+
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
932
|
+
vec3 nearby1 = position + tangent1 * 0.1;
|
|
933
|
+
vec3 nearby2 = position + tangent2 * 0.1;
|
|
934
|
+
vec3 distorted1 = nearby1 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
935
|
+
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
936
|
+
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
937
|
+
return displaced_position;
|
|
938
|
+
}`,[e,t])}}();var jl=class extends le{constructor(e,t,o,n,s,a,l,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=t,this.colors=o,this.steps=n,this.offset=s,this.morph=a,this.angle=l,this.alpha=c,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(jl.Nodes.gradient),n=[];return n.push(this.gradientType.build(e,"i")),n.push(this.smooth.build(e,"b")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.offset.build(e,"v2")),n.push(this.morph.build(e,"v2")),n.push(this.angle.build(e,"f")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("GradientNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ni=jl;Ni.Nodes=function(){return{gradient:new X(`vec3 gradient(int gradientType, bool smoothed, vec4 colors[GRAD_MAX], float steps[GRAD_MAX], vec2 offset, vec2 morph, float angle, float alpha, out float calpha) {
|
|
785
939
|
vec4 color = colors[0];
|
|
786
940
|
vec2 m = morph / vUv.xy;
|
|
787
941
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -823,508 +977,353 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
823
977
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
824
978
|
|
|
825
979
|
return color.xyz;
|
|
826
|
-
}`)}}();var
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
vec3 tangent1 = orthogonal(normal);
|
|
833
|
-
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
980
|
+
}`)}}();var Li=class extends le{constructor(e,t,o,n,s,a,l,c,u,m){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=t,this.crop=o,this.projection=n,this.axis=s,this.side=a,this.size=l,this.mat=c,this.alpha=u,this.mode=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,n;switch(this.projection.value){case 3:n=e.include(Li.Nodes.cylindrical);break;case 2:n=e.include(Li.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 X(`
|
|
981
|
+
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
982
|
+
|
|
983
|
+
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
984
|
+
|
|
985
|
+
vec4 tmp = texture2D( tex, uvs );
|
|
834
986
|
|
|
835
|
-
// TODO(Max): The distance to the neighbors was originally scaled by 0.1.
|
|
836
|
-
// This caused some small oval/circular visual artifacts in the lighting.
|
|
837
|
-
// For now, simply using neighbors further away betters the problem,
|
|
838
|
-
// but we should figure out the underlying cause when we have some time.
|
|
839
|
-
// Maybe its related to how we calculate the tangent and bitangent?
|
|
840
|
-
vec3 nearby1 = position + tangent1;
|
|
841
|
-
vec3 nearby2 = position + tangent2;
|
|
842
|
-
vec3 distorted1 = distorted(nearby1, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
843
|
-
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
844
|
-
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
845
|
-
return displaced_position;
|
|
846
|
-
}`,[c,l]);o=e.include(h),n.push(this.scale.build(e,"f")),n.push(this.cropOrOffset.build(e,"v3")),n.push(this.movementOrTexture.build(e,"f"));break}}return n.push(this.intensity.build(e,"f")),n.push("displaced_normal"),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("VertexDisplacementNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.noiseFunctionIndex=e.noiseFunctionIndex?.clone(),this.scale=e.scale?.clone(),this.cropOrOffset=e.cropOrOffset.clone(),this.intensity=e.intensity.clone(),this.movementOrTexture=e.movementOrTexture.clone(),this}},mn=$l;mn.Nodes=function(){let e=new K(`vec3 orthogonal(vec3 v) {
|
|
847
|
-
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
848
|
-
}`),r=new K(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
849
|
-
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
850
|
-
vec4 tmp = texture2D(tex, uvs);
|
|
851
987
|
vec3 col = tmp.rgb;
|
|
852
|
-
|
|
988
|
+
float lalpha = alpha * tmp.a;
|
|
989
|
+
${this.side.value===2?"":`lalpha *= step(0.0, ${this.side.value===1?"-1.0 * ":""}dot(vObjectNormal, mat * ${a}));`}
|
|
990
|
+
|
|
991
|
+
if ( crop > 0.5 ) {
|
|
853
992
|
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
854
|
-
|
|
993
|
+
lalpha = 0.0;
|
|
855
994
|
}
|
|
856
995
|
}
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
996
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
997
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
998
|
+
return col;
|
|
999
|
+
}`);n=e.include(l);break;default:n=e.include(Li.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.generate(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(n+"("+s.join(",")+")",this.getType(e),t)}},Ci=Li;Ci.Nodes=function(){let e=new X(`
|
|
1000
|
+
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1001
|
+
vec3 posN = normalize(position);
|
|
1002
|
+
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
1003
|
+
float scaledHeight = position.y / (size.y * 0.5);
|
|
1004
|
+
float v = (scaledHeight / 2.) + .5;
|
|
1005
|
+
|
|
1006
|
+
vec2 calculatedUv = vec2(u,v);
|
|
1007
|
+
vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
1008
|
+
|
|
1009
|
+
vec2 df = fwidth(uvs);
|
|
1010
|
+
if(df.x > 0.5) df.x = 0.;
|
|
1011
|
+
|
|
1012
|
+
#ifdef GL_EXT_shader_texture_lod
|
|
1013
|
+
vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
1014
|
+
#else
|
|
1015
|
+
vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
1016
|
+
#endif
|
|
1017
|
+
|
|
1018
|
+
vec3 col = tmp.rgb;
|
|
1019
|
+
float lalpha = alpha * tmp.a;
|
|
1020
|
+
if ( crop > 0.5 ) {
|
|
1021
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
1022
|
+
lalpha = 0.0;
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1026
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1027
|
+
return col;
|
|
1028
|
+
}
|
|
1029
|
+
`),t=new X(`
|
|
1030
|
+
vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1031
|
+
vec3 posN = normalize(vPosition);
|
|
1032
|
+
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
1033
|
+
float v = 0.5 + asin(posN.y) / 3.1415;
|
|
1034
|
+
|
|
1035
|
+
vec2 calculatedUv = vec2(u,v);
|
|
1036
|
+
vec2 uvs = ( mat * vec3( calculatedUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
1037
|
+
|
|
1038
|
+
vec2 df = fwidth(uvs);
|
|
1039
|
+
if(df.x > 0.5) df.x = 0.;
|
|
1040
|
+
#ifdef GL_EXT_shader_texture_lod
|
|
1041
|
+
vec4 tmp = texture2DLodEXT(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
1042
|
+
#else
|
|
1043
|
+
vec4 tmp = textureLod(tex, uvs, log2(max(df.x, df.y)*min(textureSize.x, textureSize.y)));
|
|
1044
|
+
#endif
|
|
1045
|
+
|
|
1046
|
+
vec3 col = tmp.rgb;
|
|
1047
|
+
float lalpha = alpha * tmp.a;
|
|
1048
|
+
if ( crop > 0.5 ) {
|
|
1049
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
1050
|
+
lalpha = 0.0;
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1054
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1055
|
+
return col;
|
|
1056
|
+
}
|
|
1057
|
+
`),o=new X(`vec3 uvTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
1058
|
+
|
|
1059
|
+
vec2 uvs = ( mat * vec3( vUv * 2. - 1., 1. ) / 2. + 0.5 ).xy;
|
|
1060
|
+
vec4 tmp = texture2D( tex, uvs );
|
|
1061
|
+
|
|
1062
|
+
vec3 col = tmp.rgb;
|
|
1063
|
+
|
|
1064
|
+
float lalpha = alpha * tmp.a;
|
|
1065
|
+
if ( crop > 0.5 ) {
|
|
1066
|
+
if ( uvs.x < 0.0 || uvs.x > 1.0 || uvs.y < 0.0 || uvs.y > 1.0 ) {
|
|
1067
|
+
lalpha = 0.0;
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1071
|
+
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
1072
|
+
return col;
|
|
1073
|
+
}`);return{cylindrical:e,spherical:t,uv:o}}();var kl=class extends le{constructor(e,t){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=t}generate(e,t){if(e.isShader("fragment")){let o=e.include(kl.Nodes.customNormal),n=[];return n.push(this.cnormal.build(e,"v3")),n.push("normal"),n.push(this.alpha.build(e,"f")),e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ii=kl;Ii.Nodes=function(){return{customNormal:new X(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
1074
|
+
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
1075
|
+
normal *= step( vec3(0.5), cnormal );
|
|
1076
|
+
|
|
1077
|
+
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1078
|
+
|
|
1079
|
+
return normal;
|
|
1080
|
+
}`)}}();var Qe=require("three");function dd(i,r){switch(i.type){case"fresnel":return sb(i,r);case"gradient":return ab(i);case"depth":return lb(i);case"normal":return cb(i);case"noise":return ub(i,r);case"rainbow":return pb(i);case"toon":return mb(i,r);case"outline":return db(i,r);case"transmission":return fb(i,r);case"color":return ib(i,r)}}function nb(i){return{type:i.type}}function br(i){let{alpha:r,mode:e}=i;return{...nb(i),alpha:r,mode:e}}function ib(i,r){return{...br(i),color:Ye(i.color,r)}}function sb(i,r){let{bias:e,scale:t,intensity:o,factor:n,color:s}=i;return{...br(i),color:Ye(s,r),bias:e,scale:t,intensity:o,factor:n}}function ab(i){let{gradientType:r,smooth:e,colors:t,steps:o,angle:n,offset:s,morph:a}=i;return{...br(i),gradientType:r,smooth:e,colors:t.map(l=>new Qe.Vector4(l[0],l[1],l[2],l[3])),num:t.length,steps:o,offset:new Qe.Vector2(...s),morph:new Qe.Vector2(...a),angle:n}}function lb(i){let{gradientType:r,near:e,far:t,isVector:o,isWorldSpace:n,origin:s,direction:a,colors:l,steps:c,smooth:u,num:m}=i;return{...br(i),gradientType:r,near:e,far:t,isVector:o,isWorldSpace:n,origin:new Qe.Vector3(...s),direction:a?new Qe.Vector3(...a):new Qe.Vector3(1,0,0),num:m,colors:l.map(p=>new Qe.Vector4(p[0],p[1],p[2],p[3])),steps:c,smooth:u}}function cb(i){let{cnormal:r}=i;return{...br(i),cnormal:new Qe.Vector3(r[0],r[1],r[2])}}function ub(i,r){return{...br(i),scale:i.scale,move:i.move,fA:new Qe.Vector2(...i.fA),fB:new Qe.Vector2(...i.fB),size:new Qe.Vector3(...i.size),distortion:new Qe.Vector2(...i.distortion),colorA:Ye(i.colorA,r),colorB:Ye(i.colorB,r),colorC:Ye(i.colorC,r),colorD:Ye(i.colorD,r),noiseType:i.noiseType}}function pb(i){return{...br(i),filmThickness:i.filmThickness,movement:i.movement,wavelengths:new Qe.Vector3(...i.wavelengths),noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,offset:new Qe.Vector3(...i.offset)}}function mb(i,r){return{...br(i),positioning:i.positioning,colors:i.colors.map(e=>new Qe.Vector4(e[0],e[1],e[2],e[3])),num:i.colors.length,steps:i.steps,source:new Qe.Vector3(...i.source),isWorldSpace:i.isWorldSpace,noiseStrength:i.noiseStrength,noiseScale:i.noiseScale,shadowColor:Ye(i.shadowColor,r),offset:new Qe.Vector3(...i.offset)}}function db(i,r){return{...br(i),outlineColor:Ye(i.outlineColor,r),contourColor:Ye(i.contourColor,r),outlineWidth:i.outlineWidth,contourWidth:i.contourWidth,outlineThreshold:i.outlineThreshold,contourThreshold:i.contourThreshold,outlineSmoothing:i.outlineSmoothing,contourFrequency:i.contourFrequency,contourDirection:i.contourDirection,positionalLines:i.positionalLines,compensation:i.compensation,resolution:r.resolutionNode,normalMap:r.normalMap,depthMap:r.normalRenderTarget.depthTexture,pixelRatio:r.pixelRatioNode}}function fb(i,r){return{...br(i),thickness:i.thickness,ior:i.ior,roughness:i.roughness,transmissionSamplerMap:r.transmissionSamplerMap,transmissionDepthMap:r.transmissionDepthMap}}var ro=class extends ut{};var gd=require("three");var Hl=new Map,Pi={url:"head",time:0,data:null,next:null,prev:null},Nn={url:"tail",time:1/0,data:null,next:null,prev:null};Pi.next=Nn;Nn.prev=Pi;var fd=0;function hd(i){if(typeof i=="string")return i;let r=Date.now(),e=Hl.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:r,next:null,prev:null},Hl.set(i,e)):(e.time=r,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Nn.prev,e.next=Nn,Nn.prev.next=e,Nn.prev=e,r-fd>1e3*10&&(fd=r+1e3,setTimeout(()=>{let t=Date.now(),o=Pi.next;for(;o.time<t-1e3*10;)URL.revokeObjectURL(o.url),Hl.delete(o.data),o=o.next,o.prev=Pi,Pi.next=o},900)),e.url}var Cn=class{constructor(r,e){this.data=r;this.onImageLoad=e;this.loaded=!1;this.updateSrc(r.data)}updateSrc(r){this.dispose(),this.loaded=!1,this.img=new Image,this.img.src=hd(r),this.img.onload=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let t of e){let o=this[t];o&&(o.image=this.img,o.needsUpdate=!0)}this.onImageLoad&&this.onImageLoad()}}getTexture(r){let e=this[r];if(e)return e;{let t=new gd.Texture(this.img,void 0,r,r);return this.loaded&&(t.needsUpdate=!0),this[r]=t,t}}dispose(){this[1e3]?.dispose(),this[1e3]=void 0,this[1001]?.dispose(),this[1001]=void 0,this[1002]?.dispose(),this[1002]=void 0}};1e3,1001,1002;var wo=class extends Cn{};var oo=class extends Me{};function hb(i,r){switch(i.type){case"noise":return r==="noiseType";case"texture":return r==="projection"||r==="axis"||r==="side";case"displace":return r==="noiseType";case"depth":return r==="num"||r==="smooth"||r==="isWorldSpace"||r==="gradientType"||r==="isVector";default:return!1}}function Wl(i,r,e,t){let o=e.uniforms[`f${e.id}_texture`];if(!o)return!1;let n=!1,s=i;if("image"in s){let a=s.image,l=r.image(a),c=o;c instanceof wo||c.image.dispose(),c.image=l}if("wrapping"in s){let a=o;a.wrap=s.wrapping}if("repeat"in s||"offset"in s){let a="mat";e.uniforms[`f${e.id}_${a}`].value.setUvTransform(t.offset[0],t.offset[1],t.repeat[0],t.repeat[1],0,0,0)}return n}function yd(i,r,e,t){let o=!1;for(let[n,s]of Object.entries(i)){if(!n||s===void 0||ql(n,e,t))continue;e.visible=t.visible;let a=e.uniforms[`f${e.id}_${n}`];if(!!a&&!(a instanceof oo))switch(a.constructor){case Ie:if(typeof s=="string"){let l=r.getColor(s);l&&(a.value=l);break}else{let l=s;a.value instanceof ro?a.value=new ut(l.r,l.g,l.b,l.a):a.setRGBA(l);break}case Ht:if(typeof s=="string"){let l=r.getColor(s);l&&(a.value=l);break}else{let l=s;a.value instanceof ro?a.value=new ut(l.r,l.g,l.b,l.a):a.value.setRGBA(l.r,l.g,l.b,l.a);break}case rt:{let l=s;a.value.setX(l[0]),a.value.setY(l[1]);break}case pt:{let l=s;a.value.setX(l[0]),a.value.setY(l[1]),a.value.setZ(l[2]);break}case Pt:{let l=s;Wl(l,r,e,l);break}case Jt:{s.forEach((l,c)=>{a.value[c].setX(l[0]),a.value[c].setY(l[1]),a.value[c].setZ(l[2]),a.value[c].setW(l[3])});break}default:{o=o||hb(e,n),a.value=s;break}}}return o}var $l=class extends le{constructor(e,t,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=t,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include($l.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let n=[];return n.push(this.texture.generate(e,"t")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Ai=$l;Ai.Nodes=function(){return{matcap:new X(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
1081
|
+
vec3 viewDir = normalize( vViewPosition );
|
|
1082
|
+
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
1083
|
+
vec3 y = cross( viewDir, x );
|
|
1084
|
+
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
|
|
1085
|
+
vec4 matcapColor = texture2D( matcapTex, uv );
|
|
1086
|
+
|
|
1087
|
+
calpha = alpha / clamp( alpha + accumAlpha, 0.00001, 1.0 );
|
|
1088
|
+
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
1089
|
+
|
|
1090
|
+
return matcapColor.rgb;
|
|
1091
|
+
}
|
|
1092
|
+
`)}}();var Mi=class extends oo{constructor(e,t){super("t");this.image=e;this.wrap=t}get value(){return this.image.getTexture(this.wrap)}};var xd=require("three");var fa=class extends oo{constructor(e){super("v3");this.image=e;this._value=new xd.Vector3}get value(){return this._value.x=this.image.img.width,this._value.y=this.image.img.height,this._value}};var Xl=class extends le{constructor(e,t,o,n,s,a,l,c,u,m){super("v3");this.nodeType="Toon";this.positioning=e,this.colors=t,this.steps=o,this.source=n,this.isWorldSpace=s,this.noiseStrength=a,this.noiseScale=l,this.shadowColor=c,this.offset=u,this.alpha=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,t){if(e.require("worldNormal"),e.require("worldPosition"),e.isShader("fragment")){e.define("COLORS_MAX",10),e.addFragmentVariable(this.calpha,"float");let o=e.include(Xl.Nodes.toon),n=[];return n.push(this.positioning.build(e,"i")),n.push(this.colors.build(e,"v4[]")),n.push(this.steps.build(e,"f[]")),n.push(this.source.build(e,"v3")),n.push(this.isWorldSpace.build(e,"b")),n.push(this.noiseStrength.build(e,"f")),n.push(this.noiseScale.build(e,"f")),n.push(this.shadowColor.build(e,"v4")),n.push(this.offset.build(e,"v3")),n.push(this.alpha.build(e,"f")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),t)}else return console.warn("ToonNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),t)}},Oi=Xl;Oi.Nodes=function(){let e=new X(`float rand(float n) {
|
|
1093
|
+
return fract(sin(n) * 43758.5453123);
|
|
1094
|
+
}`),t=new X(`float hash1(float p) {
|
|
1095
|
+
p = fract(p * 0.011);
|
|
1096
|
+
p *= p + 7.5;
|
|
1097
|
+
p *= p + p;
|
|
1098
|
+
return fract(p);
|
|
1099
|
+
}`),o=new X(`float valueNoise(vec3 x) {
|
|
1100
|
+
const vec3 step = vec3(110, 241, 171);
|
|
1101
|
+
|
|
1102
|
+
vec3 i = floor(x);
|
|
1103
|
+
vec3 f = fract(x);
|
|
1104
|
+
|
|
1105
|
+
// For performance, compute the base input to a 1D hash from the integer part of the argument and the
|
|
1106
|
+
// incremental change to the 1D based on the 3D -> 1D wrapping
|
|
1107
|
+
float n = dot(i, step);
|
|
1108
|
+
|
|
1109
|
+
vec3 u = f * f * (3.0 - 2.0 * f);
|
|
1110
|
+
return mix(mix(mix( hash1(n + dot(step, vec3(0, 0, 0))), hash1(n + dot(step, vec3(1, 0, 0))), u.x),
|
|
1111
|
+
mix( hash1(n + dot(step, vec3(0, 1, 0))), hash1(n + dot(step, vec3(1, 1, 0))), u.x), u.y),
|
|
1112
|
+
mix(mix( hash1(n + dot(step, vec3(0, 0, 1))), hash1(n + dot(step, vec3(1, 0, 1))), u.x),
|
|
1113
|
+
mix( hash1(n + dot(step, vec3(0, 1, 1))), hash1(n + dot(step, vec3(1, 1, 1))), u.x), u.y), u.z);
|
|
1114
|
+
}`,[t]),n=new X(`vec3 hash3(vec3 x) {
|
|
1115
|
+
x = vec3(dot(x,vec3(127.1, 311.7, 74.7)),
|
|
1116
|
+
dot(x,vec3(269.5, 183.3, 246.1)),
|
|
1117
|
+
dot(x,vec3(113.5, 271.9, 124.6)));
|
|
1118
|
+
|
|
1119
|
+
return fract(sin(x)*43758.5453123);
|
|
1120
|
+
}`),s=new X(`vec3 voronoiNoise(in vec3 x)
|
|
1121
|
+
{
|
|
1122
|
+
vec3 p = floor(x);
|
|
1123
|
+
vec3 f = fract(x);
|
|
1124
|
+
|
|
1125
|
+
float id = 0.0;
|
|
1126
|
+
vec2 res = vec2(100.0);
|
|
1127
|
+
|
|
1128
|
+
for(int k=-1; k<=1; k++)
|
|
1129
|
+
for(int j=-1; j<=1; j++)
|
|
1130
|
+
for(int i=-1; i<=1; i++)
|
|
1131
|
+
{
|
|
1132
|
+
vec3 b = vec3(float(i), float(j), float(k));
|
|
1133
|
+
|
|
1134
|
+
// Comment out the "+ hash(p + b);" part below to get "square" cells
|
|
1135
|
+
vec3 r = vec3(b) - f + hash3(p + b);
|
|
1136
|
+
float d = dot(r, r);
|
|
1137
|
+
|
|
1138
|
+
if (d < res.x)
|
|
1139
|
+
{
|
|
1140
|
+
id = dot(p + b, vec3(1.0, 57.0, 113.0));
|
|
1141
|
+
res = vec2(d, res.x);
|
|
1142
|
+
}
|
|
1143
|
+
else if (d < res.y)
|
|
1144
|
+
{
|
|
1145
|
+
res.y = d;
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
return vec3(sqrt(res), abs(id));
|
|
1150
|
+
}
|
|
1151
|
+
`,[n]);return{toon:new X(`vec3 toon(int positioning, vec4 colors[COLORS_MAX], float steps[COLORS_MAX], vec3 source, bool isWorldSpace, float noiseStrength, float noiseScale, vec4 shadowColor, vec3 offset, float alpha, out float calpha) {
|
|
1152
|
+
float t = 0.0;
|
|
1153
|
+
float shadow = 1.0;
|
|
1154
|
+
|
|
1155
|
+
if (positioning == 0) {
|
|
1156
|
+
|
|
1157
|
+
// Can't do this mode if lighting is "none"
|
|
1158
|
+
#if (defined(PHONG) || defined(LAMBERT) || defined(STANDARD))
|
|
1159
|
+
|
|
1160
|
+
// Algorithm from Chapter 10 of Graphics Shaders
|
|
1161
|
+
const vec3 weights = vec3(0.2125, 0.7154, 0.0721);
|
|
1162
|
+
vec3 lpos;
|
|
1163
|
+
vec3 l;
|
|
1164
|
+
float dproduct;
|
|
882
1165
|
|
|
883
|
-
|
|
884
|
-
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
1166
|
+
#if (NUM_POINT_LIGHTS > 0)
|
|
885
1167
|
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
vec4 color = colors[0];
|
|
890
|
-
#ifdef ${o}_IS_VECTOR
|
|
891
|
-
#ifdef ${o}_LINEAR
|
|
892
|
-
#ifdef ${o}_WORLDSPACE
|
|
893
|
-
float depth = vectorLinearWorldSpaceDepth(direction, origin, near, far);
|
|
894
|
-
#else
|
|
895
|
-
float depth = vectorLinearObjectSpaceDepth(direction, origin, near, far);
|
|
896
|
-
#endif
|
|
897
|
-
#else
|
|
898
|
-
#ifdef ${o}_WORLDSPACE
|
|
899
|
-
float depth = vectorSphericalWorldSpaceDepth(origin, near, far);
|
|
900
|
-
#else
|
|
901
|
-
float depth = vectorSphericalObjectSpaceDepth(origin, near, far);
|
|
902
|
-
#endif
|
|
903
|
-
#endif
|
|
904
|
-
#else
|
|
905
|
-
float dist = length(vWPosition - cameraPosition);
|
|
906
|
-
float depth = ( dist - near ) / ( far - near );
|
|
907
|
-
#endif
|
|
1168
|
+
#if defined(USE_SHADOWMAP) && (NUM_POINT_LIGHT_SHADOWS > 0)
|
|
1169
|
+
PointLightShadow pointLightShadow;
|
|
1170
|
+
#endif
|
|
908
1171
|
|
|
1172
|
+
#pragma unroll_loop_start
|
|
1173
|
+
for (int i = 0; i < NUM_POINT_LIGHTS; i++) {
|
|
1174
|
+
// Light positions are in view-space for some reason?
|
|
1175
|
+
lpos = (inverse(viewMatrix) * vec4(pointLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
|
|
1176
|
+
l = normalize(lpos - worldPosition);
|
|
1177
|
+
|
|
1178
|
+
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
1179
|
+
|
|
1180
|
+
// TODO: we want to use "intensity" but it isn't available in the shader code
|
|
1181
|
+
//dproduct += dot(pointLights[UNROLLED_LOOP_INDEX].color, weights);
|
|
909
1182
|
|
|
910
|
-
|
|
911
|
-
#ifdef ${o}_SMOOTH
|
|
912
|
-
for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
|
|
913
|
-
p = clamp( ( depth - steps[i-1] ) / ( steps[i] - steps[i-1] ), 0.0, 1.0 );
|
|
914
|
-
color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
|
|
915
|
-
}
|
|
916
|
-
#else
|
|
917
|
-
for ( int i = 1; i < ${o}_MAX_COLORS; i++ ) {
|
|
918
|
-
p = clamp(( depth - steps[i - 1] ) / ( steps[i] - steps[i - 1] ), 0.0, 1.0);
|
|
919
|
-
color = mix(color, colors[i], p);
|
|
920
|
-
}
|
|
921
|
-
#endif
|
|
1183
|
+
t = max(t, dproduct);
|
|
922
1184
|
|
|
923
|
-
|
|
924
|
-
|
|
1185
|
+
// Accumulate shadow contribution
|
|
1186
|
+
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS)
|
|
1187
|
+
pointLightShadow = pointLightShadows[UNROLLED_LOOP_INDEX];
|
|
1188
|
+
shadow *= getPointShadow(
|
|
1189
|
+
pointShadowMap[UNROLLED_LOOP_INDEX],
|
|
1190
|
+
pointLightShadow.shadowMapSize,
|
|
1191
|
+
pointLightShadow.shadowBias,
|
|
1192
|
+
pointLightShadow.shadowRadius,
|
|
1193
|
+
vPointShadowCoord[UNROLLED_LOOP_INDEX],
|
|
1194
|
+
pointLightShadow.shadowCameraNear,
|
|
1195
|
+
pointLightShadow.shadowCameraFar);
|
|
1196
|
+
#endif
|
|
1197
|
+
}
|
|
1198
|
+
#pragma unroll_loop_end
|
|
925
1199
|
|
|
926
|
-
|
|
927
|
-
return color.rgb;
|
|
928
|
-
}`,[fn.Nodes.vectorLinearWorldSpaceDepth,fn.Nodes.vectorLinearObjectSpaceDepth,fn.Nodes.vectorSphericalObjectSpaceDepth,fn.Nodes.vectorSphericalWorldSpaceDepth]);if(e.isShader("fragment")){e.define(`${o}_MAX_COLORS`,this.num.value+1),this.smooth.value&&e.define(`${o}_SMOOTH`),this.isVector.value>.5&&e.define(`${o}_IS_VECTOR`),this.gradientType.value===0&&e.define(`${o}_LINEAR`),this.isWorldSpace.value>.5&&e.define(`${o}_WORLDSPACE`),e.require("worldPosition"),e.addFragmentVariable(this.calpha,"float");let s=e.include(n),a=[];return a.push(this.near.build(e,"f")),a.push(this.far.build(e,"f")),a.push(this.origin.build(e,"v3")),a.push(this.direction.build(e,"v3")),a.push(this.colors.build(e,"v4[]")),a.push(this.steps.build(e,"f[]")),a.push(this.alpha.build(e,"f")),a.push(this.calpha),e.format(s+"("+a.join(",")+")",this.getType(e),r)}else return console.warn("DepthNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.gradientType=e.gradientType.clone(),this.smooth=e.smooth.clone(),this.near=e.near.clone(),this.far=e.far.clone(),this.isVector=e.isVector.clone(),this.isWorldSpace=e.isWorldSpace.clone(),this.origin=e.origin.clone(),this.direction=e.direction.clone(),this.colors=e.colors.clone(),this.steps=e.steps.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},xi=fn;xi.Nodes=function(){let e=new K(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
929
|
-
vec3 n = normalize(direction);
|
|
930
|
-
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
931
|
-
return ( dist - near ) / ( far - near );
|
|
932
|
-
}`),r=new K(`float vectorLinearObjectSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
933
|
-
vec3 n = normalize(direction);
|
|
934
|
-
float dist = (n.x*(position.x - origin.x) + n.y*(position.y - origin.y) + n.z*(position.z - origin.z));
|
|
935
|
-
return ( dist - near ) / ( far - near );
|
|
936
|
-
}`),o=new K(`float vectorSphericalWorldSpaceDepth(vec3 origin, float near, float far) {
|
|
937
|
-
float dist = length(vWPosition - origin);
|
|
938
|
-
return ( dist - near ) / ( far - near );
|
|
939
|
-
}`),n=new K(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
940
|
-
float dist = length(position - origin);
|
|
941
|
-
return ( dist - near ) / ( far - near );
|
|
942
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var Kl=class extends le{constructor(e,r,o){super("v3");this.nodeType="Matcap";this.texture=e,this.alpha=r,this.mode=o,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){if(e.isShader("fragment")){e.addFragmentVariable(this.calpha,"float");let o=e.include(Kl.Nodes.matcap);e.require("normal"),e.requires.normal=!0;let n=[];return n.push(this.texture.getTexture(e,"t")),n.push("normal"),n.push(this.alpha.build(e,"f")),n.push(this.mode.build(e,"i")),n.push(this.calpha),e.format(o+"("+n.join(",")+")",this.getType(e),r)}else return console.warn("MatcapNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.texture=e.texture.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this.calpha=e.calpha,this}},vi=Kl;vi.Nodes=function(){return{matcap:new K(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
943
|
-
vec3 viewDir = normalize( vViewPosition );
|
|
944
|
-
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
945
|
-
vec3 y = cross( viewDir, x );
|
|
946
|
-
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; // 0.495 to remove artifacts caused by undersized matcap disks
|
|
947
|
-
vec4 matcapColor = texture2D( matcapTex, uv );
|
|
1200
|
+
#endif
|
|
948
1201
|
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
`)}}();var gn=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=ve.MathUtils.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 X(1));let r=new X(1),o=new ye(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 ze(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){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(t.userData.layers?.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){if(t.id=t.id??++this.id,this.layerCount++,t.type==="light"){let o=this.createLightLayer(t);return this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let o=this.head;for(;o.next!=null;)o=o.next;o.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=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){let r=this.head;t.id=t.id??++this.id,this.layerCount++;let o=this._createLayer(t),n=o.layer;n.next=e;let s=0;if(r===e)this.head=n,o.color&&this._layerNodes.splice(0,0,{id:n.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(0,0,{id:n.id,type:"position",position:o.position});else{for(s=1;r?.next!==e;)r=r?.next,s++;r.next=n,o.color&&this._layerNodes.splice(s,0,{id:n.id,type:"color",color:o.color,alpha:o.alpha,mode:o.mode}),o.position&&this._layerNodes.splice(s,0,{id:n.id,type:"position",position:o.position})}return this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}addLayerAt(t,e){e.id=e.id??++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 n=this.head,s=this.head.next;for(let a=0;a<t-1;a++)n=s,s=s.next;o.next=s,n.next=o}return this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if(e?.id==t)this.head=e.next;else for(o=1,r=e,e=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=ve.MathUtils.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,n;if(o?.id==t){let s=this._createLayer({id:t,uuid:o.uuid,...e});n=s.layer,n.next=o.next,this.head=n,s.color&&(this._layerNodes[0]={id:n.id,type:"color",color:s.color,alpha:s.alpha,mode:s.mode}),s.position&&(this._layerNodes[0]={id:n.id,type:"position",position:s.position}),n.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,n.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({id:t,uuid:o.uuid,...e});n=a.layer,r.next=n,n.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}),n.uniforms[`f${t}_mode`].value=o.uniforms[`f${t}_mode`].value,n.uniforms[`f${t}_alpha`].value=o.uniforms[`f${t}_alpha`].value;break}r=o,o=o.next,s++}}return this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}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,n;if(t==0)r=this.head,this.head=r.next;else{for(let a=0;a<t;a++)n=o,o=o.next;n.next=o.next,r=o}if(o=this.head,n=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?.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=ve.MathUtils.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=ve.MathUtils.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 X(t.alpha),r=new ye(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 ze(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let n=this.head;for(;n.next!=null;)n=n.next;n.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 X(e.uniforms[`f${e.id}_alpha`].value),n=r?e.uniforms[`f${e.id}_mode`]:new ye(e.uniforms[`f${e.id}_mode`].value);this._material.shadingAlpha=o,this._material.shadingBlend=n,this._layerNodes.push({id:e.id,type:"light",alpha:o,mode:n}),this.head===void 0?this.head=new ze(e.id,e.uuid,{type:"light",alpha:o,mode:n}):t&&(t.next=new ze(e.id,e.uuid,{type:"light",alpha:o,mode:n})),this.attachLightNodes(e)}else{let o={type:e.type,id:e.id};for(let n in e.uniforms){let s=e.getName(n);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){let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new Pe(t?.getValue("emissive")?.clone()??0);break;case"Phong":e.shininess=new X(t?.getValue("shininess")??30),e.specular=new Pe(t?.getValue("specular")?.clone()??1118481);break;case"Toon":e.shininess=new X(t?.getValue("shininess")??30),e.specular=new Pe(t?.getValue("specular")?.clone()??1118481);break;case"Physical":e.roughness=new X(t?.getValue("roughness")??.3),e.metalness=new X(t?.getValue("metalness")??0),e.reflectivity=new X(t?.getValue("reflectivity")??.5);break;default:break}Object.keys(e).forEach(o=>{this._material[o]=e[o],r.uniforms[`f${r.id}_${o}`]=e[o]})}clone(t){return new gn(t).copy(this)}getLightLayer(){let t=this.head;for(;t!==void 0&&t.type!=="light";)t=t.next??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){let e=t.type;switch(e){case"color":{let r=new Pe(t.color??5855577),o=new X(t.alpha??1),n=new Me("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");n.keywords.alpha=o;let s=new ye(t.mode??0);return r.alpha=o,{layer:new ze(t.id,t.uuid,{type:e,color:r,alpha:o,calpha:n,mode:s}),color:r,alpha:n,mode:s}}case"texture":{let r=t.texture??new Xt,o=r.matrix;t.mat&&o.copy(t.mat),r.needsUpdate=!0;let n=new X(t.crop??0),s=new ye(t.projection??0),a=new ye(t.axis??0),l=new ye(t.side??0),c=new lt(t.size?new ve.Vector2(t.size[0],t.size[1]):new ve.Vector2(100,100)),h=new X(t.alpha??1),p=new ye(t.mode??0),u=new ct(r),d=new mt(t.textureSize??new ve.Vector3(r.image?r.image.width:0,r.image?r.image.height:0)),m=new si(u,d,n,s,a,l,c,h,p),g=new Me(m.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,texture:u,textureSize:d,crop:n,projection:s,axis:a,side:l,size:c,mat:m.mat,alpha:h,calpha:g,mode:p}),color:m,alpha:g,mode:p}}case"matcap":{let r=t.texture??new Xt;r.needsUpdate=!0;let o=new X(t.alpha??1),n=new ct(r),s=new ye(t.mode??0),a=new vi(n,o,s),l=new Me(a.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,texture:n,alpha:o,calpha:l,mode:s}),color:a,alpha:l,mode:s}}case"fresnel":{let r=new Pe(t.color??16777215),o=new X(t.bias??.1),n=new X(t.scale??1),s=new X(t.intensity??2),a=new X(t.factor??1),l=new X(t.alpha??1),c=new ye(t.mode??0),h=new li(r,o,n,s,a,l,c),p=new Me(h.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,color:r,bias:o,scale:n,intensity:s,factor:a,alpha:l,calpha:p,mode:c}),color:h,alpha:p,mode:c}}case"rainbow":{let r=new X(t.filmThickness??30),o=new X(t.movement??0),n=new mt(t.wavelengths??new ve.Vector3(0,0,0)),s=new X(t.noiseStrength??0),a=new X(t.noiseScale??1),l=new mt(t.offset??new ve.Vector3(0,0,0)),c=new X(t.alpha??1),h=new hi(r,o,n,s,a,l,c),p=new Me(h.calpha,"f"),u=new ye(t.mode??0);return{layer:new ze(t.id,t.uuid,{type:e,filmThickness:r,movement:o,wavelengths:n,noiseStrength:s,noiseScale:a,offset:l,alpha:c,calpha:p,mode:u}),color:h,alpha:p,mode:u}}case"toon":{let r=new ye(t.positioning??0),o;t.colors?o=new Er(t.colors.length,t.colors):(o=new Er(10,new ve.Vector4(0,0,0,1)),o.value[1]=new ve.Vector4(1,1,1,1));let n;t.steps?n=new tt(t.steps.length,t.steps):(n=new tt(10,1),n.value[0]=0);let s=new mt(t.source??new ve.Vector3(0,0,0)),a=new Qr(t.isWorldSpace??!0),l=new X(t.noiseStrength??0),c=new X(t.noiseScale??1),h=new vr(t.shadowColor),p=new mt(t.offset??new ve.Vector3(0,0,0)),u=new X(t.alpha??1),d=new pi(r,o,n,s,a,l,c,h,p,u),m=new Me(d.calpha,"f"),g=new ye(t.mode??0);return{layer:new ze(t.id,t.uuid,{type:e,positioning:r,colors:o,steps:n,source:s,isWorldSpace:a,noiseStrength:l,noiseScale:c,shadowColor:h,offset:p,alpha:u,calpha:m,mode:g}),color:d,alpha:m,mode:g}}case"outline":{let r=new Pe(t.outlineColor??16777215),o=new Pe(t.contourColor??16777215),n=new X(t.outlineWidth??.1),s=new X(t.contourWidth??.1),a=new X(t.outlineThreshold??.1),l=new X(t.contourThreshold??.1),c=new X(t.outlineSmoothing??.1),h=new X(t.contourFrequency??.1),p=new mt(t.contourDirections??new ve.Vector3(0,1,0)),u=new Qr(t.positionalLines??!1),d=new Qr(t.compensation??!0),m=t.normalMap??new Xt,g=new ct(m),x=t.depthMap??new Xt,y=new ct(x),v=t.pixelRatio??new X(window.devicePixelRatio),P=t.resolution??new lt(new ve.Vector2(1,1)),S=new X(t.alpha??1),b=new ui(r,o,n,s,a,l,c,h,p,u,d,P,g,y,v,S),B=new Me(b.calpha,"f"),w=new ye(t.mode??0);return{layer:new ze(t.id,t.uuid,{type:e,outlineColor:r,contourColor:o,outlineWidth:n,contourWidth:s,outlineThreshold:a,contourThreshold:l,outlineSmoothing:c,contourFrequency:h,contourDirection:p,positionalLines:u,compensation:d,resolution:P,normalMap:g,depthMap:y,pixelRatio:v,alpha:S,calpha:B,mode:w}),color:b,alpha:B,mode:w}}case"transmission":{let r=new X(t.thickness??10),o=new X(t.ior??1.5),n=new X(t.roughness??.5),s=new lt(t.transmissionSamplerSize??new ve.Vector2(2048,2048)),a=t.transmissionSamplerMap??new Xt,l=t.transmissionDepthMap??new Xt,c=new ct(a),h=new ct(l),p=window.innerWidth,u=window.innerHeight,d=p>=u?new lt(u/p,1):new lt(1,p/u),m=new X(t.alpha??1),g=new di(r,o,n,s,c,h,d,m),x=new Me(g.calpha,"f"),y=new ye(t.mode??0);return{layer:new ze(t.id,t.uuid,{type:e,thickness:r,ior:o,roughness:n,transmissionSamplerSize:s,transmissionSamplerMap:c,transmissionDepthMap:h,aspectRatio:d,alpha:m,calpha:x,mode:y}),color:g,alpha:x,mode:y}}case"depth":{let r=new ye(t.gradientType??0),o=new Qr(t.smooth??!1),n=new X(t.near??50),s=new X(t.far??200),a=new X(t.isVector??1),l=new X(t.isWorldSpace??0),c=new mt(t.origin??new ve.Vector3),h=new mt(t.direction??new ve.Vector3),p=new ye(t.num??0),u;t.colors?u=new Er(p.value+1,t.colors):(u=new Er(p.value+1,new ve.Vector4(0,0,0,1)),u.value[1]=new ve.Vector4(1,1,1,1));let d;t.steps?d=new tt(p.value+1,t.steps):(d=new tt(p.value+1,1),d.value[0]=0);let m=new X(t.alpha??1),g=new ye(t.mode??0),x=new xi(r,o,n,s,a,l,c,h,u,d,p,m),y=new Me(x.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,gradientType:r,smooth:o,near:n,far:s,isVector:a,isWorldSpace:l,origin:c,direction:h,colors:u,steps:d,num:p,alpha:m,calpha:y,mode:g}),color:x,alpha:y,mode:g}}case"noise":{let r=new X(t.scale??1),o=new mt(t.size??new ve.Vector3(100,100,100)),n=new X(t.move??1),s=new lt(t.fA??new ve.Vector2(1.7,9.2)),a=new lt(t.fB??new ve.Vector2(8.3,2.8)),l=new lt(t.distortion??new ve.Vector2(1,1)),c=new vr(t.colorA),h=new vr(t.colorB),p=new vr(t.colorC),u=new vr(t.colorD),d=new X(t.alpha??1),m=new ye(t.mode??0),g=new ye(t.noiseType??0),x=new gi(r,o,n,s,a,l,c,h,p,u,d,g),y=new Me(x.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,scale:r,size:o,move:n,fA:s,fB:a,distortion:l,colorA:c,colorB:h,colorC:p,colorD:u,alpha:d,calpha:y,mode:m,noiseType:g}),color:x,alpha:y,mode:m}}case"normal":{let r=new mt(t.cnormal??new ve.Vector3(1,1,1)),o=new X(t.alpha??1),n=new ye(t.mode??0),s=new mi(r,o),a=new Me("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return a.keywords.alpha=o,{layer:new ze(t.id,t.uuid,{type:e,cnormal:r,alpha:o,calpha:a,mode:n}),color:s,alpha:a,mode:n}}case"gradient":{let r=new ye(t.gradientType??0),o=new Qr(t.smooth??!1),n;t.colors?n=new Er(t.colors.length,t.colors):(n=new Er(10,new ve.Vector4(0,0,0,1)),n.value[1]=new ve.Vector4(1,1,1,1));let s;t.steps?s=new tt(t.steps.length,t.steps):(s=new tt(10,1),s.value[0]=0);let a=new lt(t.offset??new ve.Vector2(0,0)),l=new lt(t.morph??new ve.Vector2(0,0)),c=new X(t.angle??0),h=new X(t.alpha??1),p=new ye(t.mode??0),u=new fi(r,o,n,s,a,l,c,h),d=new Me(u.calpha,"f");return{layer:new ze(t.id,t.uuid,{type:e,gradientType:r,smooth:o,colors:n,steps:s,offset:a,morph:l,angle:c,alpha:h,calpha:d,mode:p}),color:u,alpha:d,mode:p}}case"displace":{let r=new ye(t.displacementType??0);if(r.value===0){let o=new mt(t.offset??new ve.Vector3(0,0,0)),n=new X(t.scale??10),s=new X(t.intensity??8),a=new X(t.movement??1),l=new X(t.alpha??1),c=new ye(t.mode??0),h=new ye(t.noiseType??0),p=new mn(r,s,a,o,n,h);return{layer:new ze(t.id,t.uuid,{displacementType:r,type:e,offset:o,scale:n,intensity:s,movement:a,alpha:l,mode:c,noiseType:h}),position:p}}else if(r.value===1){let o=t.texture??new Xt,n=o.matrix;t.mat&&n.copy(t.mat),o.needsUpdate=!0;let s=new X(t.intensity??8),a=new ct(o),l=new X(t.crop??0),c=new X(t.alpha??1),h=new ye(t.mode??0),p=new mn(r,s,a,l);return{layer:new ze(t.id,t.uuid,{displacementType:r,type:e,intensity:s,texture:a,crop:l,mat:p.mat,alpha:c,mode:h}),position:p}}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 n=this._layerNodes[o];n.type==="color"&&(r=new yi(r,n.color,n.alpha,n.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Me("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 yi(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 Mt(e,t[r].position,Mt.ADD),e=new Mt(e,new X(.5).setReadonly(!0),Mt.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 ia=require("three");var tr=require("three");var bi=class{constructor(t){t=t??{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};var ab=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
955
|
-
)*?)}`,"gim"),lb=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),yn=class extends le{constructor(e=""){super();this.inputs=[];this.src="";this.nodeType="Struct";this.parse(e)}getType(e){return e.getTypeByFormat(this.name)}getInputByName(e){let r=this.inputs.length;for(;r--;)if(this.inputs[r].name===e)return this.inputs[r]}generate(e,r,o,n,s){return r==="source"?this.src+";":e.format("( "+this.src+" )",this.getType(e),r)}parse(e=""){this.src=e,this.inputs=[];let r=ab.exec(e);if(r){let o=r[2],n;for(;n=lb.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var Si=class extends le{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r??[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,n,s){n=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,n,r)}copy(e){return super.copy(e),this.value.copy(e.value),this.inputs=e.inputs.map(r=>r.clone()),this}};var Ae=class extends le{constructor(e=new he,r=Ae.ABS,o,n){super();this.nodeType="Math";this.a=e,typeof r!="string"?this.b=r:n=r,typeof o!="string"?this.c=o:n=o,this.method=n,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,n=this.c?e.getTypeLength(this.c.getType(e)):0;return r>o&&r>n?this.a.getType(e):o>n?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,n,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"),n=this.b.build(e,"v3");break;case Ae.STEP:o=this.a.build(e,a===1?"f":h),n=this.b.build(e,h);break;case Ae.MIN:case Ae.MAX:case Ae.MOD:o=this.a.build(e,h),n=this.b.build(e,l===1?"f":h);break;case Ae.REFRACT:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,"f");break;case Ae.MIX:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,c===1?"f":h);break;default:o=this.a.build(e,h),this.b&&(n=this.b.build(e,h)),this.c&&(s=this.c.build(e,h));break}let u=[];u.push(o),n&&u.push(n),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 he?e.b.clone():e.b,this.c=e.c instanceof he?e.c.clone():e.c,this.method=e.method,this}},me=Ae;me.RAD="radians",me.DEG="degrees",me.EXP="exp",me.EXP2="exp2",me.LOG="log",me.LOG2="log2",me.SQRT="sqrt",me.INV_SQRT="inversesqrt",me.FLOOR="floor",me.CEIL="ceil",me.NORMALIZE="normalize",me.FRACT="fract",me.SATURATE="saturate",me.SIN="sin",me.COS="cos",me.TAN="tan",me.ASIN="asin",me.ACOS="acos",me.ARCTAN="atan",me.ABS="abs",me.SIGN="sign",me.LENGTH="length",me.NEGATE="negate",me.INVERT="invert",me.MIN="min",me.MAX="max",me.MOD="mod",me.STEP="step",me.REFLECT="reflect",me.DISTANCE="distance",me.DOT="dot",me.CROSS="cross",me.POW="pow",me.MIX="mix",me.CLAMP="clamp",me.REFRACT="refract",me.SMOOTHSTEP="smoothstep",me.FACEFORWARD="faceforward";var xn=class extends le{constructor(e=new he,r=new he,o=new he){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){let s=new Si(xn.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=this.colorSpaceTL??new St(new Me("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=this.colorSpaceTR??new St(new Me("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=this.colorSpaceBL??new St(new Me("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=this.colorSpaceBR??new St(new Me("","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 Me(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Me(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Me(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Me(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Me("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,n=this.bias||e.context.roughness,s=new Si(xn.Nodes.roughnessToMip,[n]),a=new me(s,xn.Nodes.m0,xn.Nodes.cubeUV_maxMipLevel,me.CLAMP),l=new me(a,me.FLOOR),c=new me(a,me.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Mt(l,new X(1).setReadonly(!0),Mt.ADD)),u=new me(h,p,c,me.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}},vn=xn;vn.Nodes=function(){let e=new yn(`struct TextureCubeUVData {
|
|
956
|
-
vec4 tl;
|
|
957
|
-
vec4 tr;
|
|
958
|
-
vec4 br;
|
|
959
|
-
vec4 bl;
|
|
960
|
-
vec2 f;
|
|
961
|
-
}`),r=new Ne("float cubeUV_maxMipLevel 8.0",!0),o=new Ne("float cubeUV_minMipLevel 4.0",!0),n=new Ne("float cubeUV_maxTileSize 256.0",!0),s=new Ne("float cubeUV_minTileSize 16.0",!0),a=new K(`float getFace(vec3 direction) {
|
|
962
|
-
vec3 absDirection = abs(direction);
|
|
963
|
-
float face = -1.0;
|
|
964
|
-
if (absDirection.x > absDirection.z) {
|
|
965
|
-
if (absDirection.x > absDirection.y)
|
|
966
|
-
face = direction.x > 0.0 ? 0.0 : 3.0;
|
|
967
|
-
else
|
|
968
|
-
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
969
|
-
} else {
|
|
970
|
-
if (absDirection.z > absDirection.y)
|
|
971
|
-
face = direction.z > 0.0 ? 2.0 : 5.0;
|
|
972
|
-
else
|
|
973
|
-
face = direction.y > 0.0 ? 1.0 : 4.0;
|
|
974
|
-
}
|
|
975
|
-
return face;
|
|
976
|
-
}`);a.useKeywords=!1;let l=new K(`vec2 getUV(vec3 direction, float face) {
|
|
977
|
-
vec2 uv;
|
|
978
|
-
if (face == 0.0) {
|
|
979
|
-
uv = vec2(direction.z, direction.y) / abs(direction.x); // pos x
|
|
980
|
-
} else if (face == 1.0) {
|
|
981
|
-
uv = vec2(-direction.x, -direction.z) / abs(direction.y); // pos y
|
|
982
|
-
} else if (face == 2.0) {
|
|
983
|
-
uv = vec2(-direction.x, direction.y) / abs(direction.z); // pos z
|
|
984
|
-
} else if (face == 3.0) {
|
|
985
|
-
uv = vec2(-direction.z, direction.y) / abs(direction.x); // neg x
|
|
986
|
-
} else if (face == 4.0) {
|
|
987
|
-
uv = vec2(-direction.x, direction.z) / abs(direction.y); // neg y
|
|
988
|
-
} else {
|
|
989
|
-
uv = vec2(direction.x, direction.y) / abs(direction.z); // neg z
|
|
990
|
-
}
|
|
991
|
-
return 0.5 * (uv + 1.0);
|
|
992
|
-
}`);l.useKeywords=!1;let c=new K(`TextureCubeUVData bilinearCubeUV(sampler2D envMap, vec3 direction, float mipInt) {
|
|
993
|
-
float face = getFace(direction);
|
|
994
|
-
float filterInt = max(cubeUV_minMipLevel - mipInt, 0.0);
|
|
995
|
-
mipInt = max(mipInt, cubeUV_minMipLevel);
|
|
996
|
-
float faceSize = exp2(mipInt);
|
|
997
|
-
float texelSize = 1.0 / (3.0 * cubeUV_maxTileSize);
|
|
998
|
-
vec2 uv = getUV(direction, face) * (faceSize - 1.0);
|
|
999
|
-
vec2 f = fract(uv);
|
|
1000
|
-
uv += 0.5 - f;
|
|
1001
|
-
if (face > 2.0) {
|
|
1002
|
-
uv.y += faceSize;
|
|
1003
|
-
face -= 3.0;
|
|
1004
|
-
}
|
|
1005
|
-
uv.x += face * faceSize;
|
|
1006
|
-
if(mipInt < cubeUV_maxMipLevel){
|
|
1007
|
-
uv.y += 2.0 * cubeUV_maxTileSize;
|
|
1008
|
-
}
|
|
1009
|
-
uv.y += filterInt * 2.0 * cubeUV_minTileSize;
|
|
1010
|
-
uv.x += 3.0 * max(0.0, cubeUV_maxTileSize - 2.0 * faceSize);
|
|
1011
|
-
uv *= texelSize;
|
|
1012
|
-
vec4 tl = texture2D(envMap, uv);
|
|
1013
|
-
uv.x += texelSize;
|
|
1014
|
-
vec4 tr = texture2D(envMap, uv);
|
|
1015
|
-
uv.y += texelSize;
|
|
1016
|
-
vec4 br = texture2D(envMap, uv);
|
|
1017
|
-
uv.x -= texelSize;
|
|
1018
|
-
vec4 bl = texture2D(envMap, uv);
|
|
1019
|
-
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
1020
|
-
}`,[e,a,l,r,o,n,s]);c.useKeywords=!1;let h=new Ne("float r0 1.0",!0),p=new Ne("float v0 0.339",!0),u=new Ne("float m0 -2.0",!0),d=new Ne("float r1 0.8",!0),m=new Ne("float v1 0.276",!0),g=new Ne("float m1 -1.0",!0),x=new Ne("float r4 0.4",!0),y=new Ne("float v4 0.046",!0),v=new Ne("float m4 2.0",!0),P=new Ne("float r5 0.305",!0),S=new Ne("float v5 0.016",!0),b=new Ne("float m5 3.0",!0),B=new Ne("float r6 0.21",!0),w=new Ne("float v6 0.0038",!0),f=new Ne("float m6 4.0",!0),D=[h,p,u,d,m,g,x,y,v,P,S,b,B,w,f],C=new K(`float roughnessToMip(float roughness) {
|
|
1021
|
-
float mip = 0.0;
|
|
1022
|
-
if (roughness >= r1) {
|
|
1023
|
-
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
1024
|
-
} else if (roughness >= r4) {
|
|
1025
|
-
mip = (r1 - roughness) * (m4 - m1) / (r1 - r4) + m1;
|
|
1026
|
-
} else if (roughness >= r5) {
|
|
1027
|
-
mip = (r4 - roughness) * (m5 - m4) / (r4 - r5) + m4;
|
|
1028
|
-
} else if (roughness >= r6) {
|
|
1029
|
-
mip = (r5 - roughness) * (m6 - m5) / (r5 - r6) + m5;
|
|
1030
|
-
} else {
|
|
1031
|
-
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
1032
|
-
}
|
|
1033
|
-
return mip;
|
|
1034
|
-
}`,D);return{bilinearCubeUV:c,roughnessToMip:C,m0:u,cubeUV_maxMipLevel:r}}();var vo=class extends le{constructor(e){super("v3");this.nodeType="Normal";this.scope=e??vo.VIEW}getShared(){return this.scope===vo.WORLD}build(e,r,o,n){let s=e.context[this.scope+"Normal"];return s?s.build(e,r,o,n):super.build(e,r,o)}generate(e,r,o,n,s){let a;switch(this.scope){case vo.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case vo.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case vo.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}},nt=vo;nt.LOCAL="local",nt.WORLD="world",nt.VIEW="view",nt.NORMAL="normal";rt.addKeyword("viewNormal",function(){return new nt(nt.VIEW)});rt.addKeyword("localNormal",function(){return new nt(nt.NORMAL)});rt.addKeyword("worldNormal",function(){return new nt(nt.WORLD)});var br=class extends le{constructor(e){super("v3");this.nodeType="Position";this.scope=e??br.LOCAL}getType(){switch(this.scope){case br.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case br.LOCAL:case br.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case br.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case br.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case br.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case br.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}},ht=br;ht.LOCAL="local",ht.WORLD="world",ht.VIEW="view",ht.PROJECTION="projection";rt.addKeyword("position",function(){return new ht});rt.addKeyword("worldPosition",function(){return new ht(ht.WORLD)});rt.addKeyword("viewPosition",function(){return new ht(ht.VIEW)});var er=class extends le{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e??er.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case er.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case er.VECTOR:{let s=new nt(nt.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new ht(ht.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 u=`inverseTransformDirection( ${p}, viewMatrix )`;o?(e.addNodeCode(`vec3 reflectVec = ${u};`),n="reflectVec"):n=u;break}case er.CUBE:{let s=new er(er.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case er.SPHERE:{let s=new er(er.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};`),n="reflectSphereVec"):n=a;break}}return e.format(n,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}},Sr=er;Sr.CUBE="cube",Sr.SPHERE="sphere",Sr.VECTOR="vector";var ra=class extends le{constructor(e=new ct,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new vn(this.value,r??new Sr(Sr.VECTOR),o),this.irradianceNode=new vn(this.value,new nt(nt.WORLD),new X(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}};var yd=require("three");var oa=class extends _e{constructor(e=new yd.CubeTexture,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r??new Sr,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),n=this.uv?.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+n+", "+s+" )":a="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=this.colorSpace??new St(new Me("",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 xd=["x","y","z","w"],cb=["float","vec2","vec3","vec4"],hb={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},pb={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[]"},na=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 n=this.getIncludes(r,o);if(!n)return"";let s="";n=n.sort(t);for(let a=0;a<n.length;a++)n[a].src&&(s+=n[a].src+`
|
|
1035
|
-
`);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.fragmentParsVariables={},this.vertexParsVariables={},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",`
|
|
1036
|
-
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
1037
|
-
#define SPE_BLENDING_NORMAL 0
|
|
1038
|
-
#define SPE_BLENDING_MULTIPLY 1
|
|
1039
|
-
#define SPE_BLENDING_SCREEN 2
|
|
1040
|
-
#define SPE_BLENDING_OVERLAY 3
|
|
1202
|
+
#if NUM_DIR_LIGHTS > 0
|
|
1203
|
+
|
|
1204
|
+
#if defined(USE_SHADOWMAP) && (NUM_DIR_LIGHT_SHADOWS > 0)
|
|
1205
|
+
DirectionalLightShadow directionalLightShadow;
|
|
1206
|
+
#endif
|
|
1041
1207
|
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1208
|
+
#pragma unroll_loop_start
|
|
1209
|
+
for (int i = 0; i < NUM_DIR_LIGHTS; i++) {
|
|
1210
|
+
// Use the direction vector for directional lights instead
|
|
1211
|
+
l = (inverse(viewMatrix) * vec4(directionalLights[UNROLLED_LOOP_INDEX].direction, 0.0)).xyz;
|
|
1212
|
+
|
|
1213
|
+
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
1214
|
+
t = max(t, dproduct);
|
|
1045
1215
|
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1216
|
+
// Accumulate shadow contribution
|
|
1217
|
+
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS)
|
|
1218
|
+
directionalLightShadow = directionalLightShadows[UNROLLED_LOOP_INDEX];
|
|
1219
|
+
shadow *= getShadow(
|
|
1220
|
+
UNROLLED_LOOP_INDEX,
|
|
1221
|
+
directionalShadowMap[UNROLLED_LOOP_INDEX],
|
|
1222
|
+
directionalLightShadow.shadowMapSize,
|
|
1223
|
+
directionalLightShadow.shadowBias,
|
|
1224
|
+
directionalLightShadow.shadowRadius,
|
|
1225
|
+
vDirectionalShadowCoord[UNROLLED_LOOP_INDEX]);
|
|
1226
|
+
#endif
|
|
1227
|
+
}
|
|
1228
|
+
#pragma unroll_loop_end
|
|
1049
1229
|
|
|
1050
|
-
|
|
1051
|
-
vec3 tmp = 1.0 - ( 1.0 - a ) * ( 1.0 - b );
|
|
1052
|
-
return mix( a, tmp, alpha );
|
|
1053
|
-
}
|
|
1230
|
+
#endif
|
|
1054
1231
|
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1232
|
+
#if NUM_SPOT_LIGHTS > 0
|
|
1233
|
+
|
|
1234
|
+
#if defined(USE_SHADOWMAP) && (NUM_SPOT_LIGHT_SHADOWS > 0)
|
|
1235
|
+
SpotLightShadow spotLightShadow;
|
|
1236
|
+
#endif
|
|
1059
1237
|
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
`,"#include <packing>","#include <common>"].join(`
|
|
1068
|
-
`),this.parsCode={vertex:["float neighbor_offset = 0.0001;",""].join(`
|
|
1069
|
-
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
1070
|
-
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
1071
|
-
}`,""].join(`
|
|
1072
|
-
`)},this.code={vertex:"",fragment:""},this.nodeCode={vertex:"",fragment:""},this.resultCode={vertex:"",fragment:""},this.finalCode={vertex:"",fragment:""},this.inputs={uniforms:{list:[],vertex:[],fragment:[]},arrayUniforms:{list:[],vertex:[],fragment:[]},vars:{varying:[],vertex:[],fragment:[]}},this.defines={},this.uniforms={},this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.updaters=[],this.nodes=[],this.analyzing=!1}build(t,e){this.buildShader("vertex",t),this.buildShader("fragment",e);for(let r=0;r<this.requires.uv.length;r++)if(this.requires.uv[r]){let o=r>0?r+1:"";this.addVaryCode("varying vec2 vUv"+o+";"),r>0&&this.addVertexParsCode("attribute vec2 uv"+o+";"),this.addVertexFinalCode("vUv"+o+" = uv"+o+";")}return this.requires.color[0]&&(this.addVaryCode("varying vec4 vColor;"),this.addVertexParsCode("attribute vec4 color;"),this.addVertexFinalCode("vColor = color;")),this.requires.color[1]&&(this.addVaryCode("varying vec4 vColor2;"),this.addVertexParsCode("attribute vec4 color2;"),this.addVertexFinalCode("vColor2 = color2;")),this.requires.position&&(this.addVaryCode("varying vec3 vPosition;"),this.addVertexFinalCode("vPosition = transformed;")),this.requires.worldPosition,this.requires.normal&&(this.addVaryCode("varying vec3 vObjectNormal;"),this.addVertexFinalCode("vObjectNormal = normal;")),this.requires.modelMatrix&&this.addFragmentParsCode("uniform mat4 modelMatrix;"),this.requires.viewMatrix&&this.addFragmentParsCode("uniform mat4 viewMatrix;"),this.requires.projectionMatrix&&this.addFragmentParsCode("uniform mat4 projectionMatrix;"),this.requires.worldNormal&&(this.addVaryCode("varying vec3 vWNormal;"),this.addVertexFinalCode("vWNormal = inverseTransformDirection( transformedNormal, viewMatrix ).xyz;")),this.requires.vWorldViewDir&&(this.addVaryCode("varying vec3 vWorldViewDir;"),this.addVertexFinalCode("vWorldViewDir = isPerspectiveMatrix( projectionMatrix ) ? ( (modelMatrix * vec4(position, 1.0)).xyz - cameraPosition ) : vec3( -viewMatrix[0][2], -viewMatrix[1][2], -viewMatrix[2][2] );")),this}buildShader(t,e){this.resultCode[t]=e.build(this.setShader(t),"v4")}setMaterial(t,e){return this.material=t,this.renderer=e,this.requires.lights=t.lights,this.requires.fog=t.fog,this.mergeDefines(t.defines),this}addFlow(t,e,r){return this.addSlot(t).addCache(e).addContext(r)}removeFlow(){return this.removeSlot().removeCache().removeContext()}addCache(t){return this.cache=t??"",this.caches.push(this.cache),this}removeCache(){return this.caches.pop(),this.cache=this.caches[this.caches.length-1]||"",this}addContext(t){return this.context=Object.assign({},this.context,t),this.context.extra=this.context.extra||{},this.contexts.push(this.context),this}removeContext(){return this.contexts.pop(),this.context=this.contexts[this.contexts.length-1]||{},this}addSlot(t){return this.slot=t||"",this.slots.push(this.slot),this}removeSlot(){return this.slots.pop(),this.slot=this.slots[this.slots.length-1]||"",this}addFragmentVariable(t,e){this.fragmentVariables[t]===void 0&&(this.addFragmentCode(`${e} ${t};`),this.fragmentVariables[t]="")}addFragmentParsVariable(t,e){this.fragmentParsVariables[t]===void 0&&(this.addFragmentParsCode(`${e} ${t};`),this.fragmentParsVariables[t]="")}addVertexParsVariable(t,e){this.vertexParsVariables[t]===void 0&&(this.addVertexParsCode(`${e} ${t};`),this.vertexParsVariables[t]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e??this.shader]+=t+`
|
|
1073
|
-
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e??this.shader]+=t+`
|
|
1074
|
-
`}clearNodeCode(t){t=t??this.shader;let e=this.nodeCode[t];return this.nodeCode[t]="",e}clearVertexNodeCode(){return this.clearNodeCode("vertex")}clearFragmentNodeCode(){return this.clearNodeCode("fragment")}addVertexFinalCode(t){this.addFinalCode(t,"vertex")}addFragmentFinalCode(t){this.addFinalCode(t,"fragment")}addFinalCode(t,e){this.finalCode[e??this.shader]+=t+`
|
|
1075
|
-
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e??this.shader]+=t+`
|
|
1076
|
-
`}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",n="V",s=""){let a=this.getVars(o),l=a[t];if(!l){let c=a.length;l={name:r||"node"+n+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(`
|
|
1077
|
-
`)}getVarListCode(t,e){e=e??"";let r="";for(let o=0,n=t.length;o<n;++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}];
|
|
1078
|
-
`:r+=e+" "+h+" "+l+`;
|
|
1079
|
-
`}return r}getVars(t){return this.inputs.vars[t??this.shader]}getNodeData(t){let e=t instanceof he?t.uuid:t;return this.nodeData[e]=this.nodeData[e]||{}}createUniform(t,e,r,o,n,s){if(e.includes("[]")){let a=this.inputs.arrayUniforms,l=a.list.length,c=new bi({type:e,size:r.size,name:o||"nodeUA"+l+(s?"_"+s:""),node:r,needsUpdate:n});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 bi({type:e,name:o||"nodeU"+l+(s?"_"+s:""),node:r,needsUpdate:n});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,n){return this.createUniform("vertex",t,e,r,o,n)}createFragmentUniform(t,e,r,o,n){return this.createUniform("fragment",t,e,r,o,n)}include(t,e,r){let o;if(t=typeof t=="string"?rt.get(t):t,this.context.include===!1)return t.name;t instanceof K?o=this.includes.functions:t instanceof Ne?o=this.includes.consts:t instanceof yn&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(t){let s=n[t.name];if(s||(s=n[t.name]={node:t,deps:[]},n.push(s),s.src=t.build(this,"source")),t instanceof K&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[e.name].deps.push(t),t.includes?.length)){let a=0;do this.include(t.includes[a++],e);while(a<t.includes.length)}return r&&(s.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return cb[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r?.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case tr.CubeReflectionMapping:case tr.CubeRefractionMapping:return new oa(r);case tr.CubeUVReflectionMapping:return new ra(new ct(r));default:return new ct(r)}else{if(r.isVector2)return new lt(r);if(r.isVector3)return new mt(r);if(r.isVector4)return new vr(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 hb[t]||t}getFormatByType(t){return pb[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return xd[t]}getIndexByElement(t){return xd.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=tr.LinearEncoding,e===tr.LinearEncoding&&this.context.gamma&&(e=tr.sRGBEncoding),e}};var wi=class extends he{constructor(e=new he){super("v4");this.nodeType="Raw";this.value=e}generate(e){let r=this.value.analyzeAndFlow(e,this.type),o=r.code+`
|
|
1080
|
-
`;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 Rt=class extends ia.ShaderMaterial{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??new wi(new ht(ht.PROJECTION)),this.fragment=r??new wi(new Pe(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.vertexColors=!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 gn(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=(n,s,a)=>Math.min(Math.max(n,s),a);if(this.userData.layers){for(let n of this.userData.layers.getLayers())if(n.type=="displace"){this.uniformsBackup[`f${n.id}_intensity`]=n.uniforms[`f${n.id}_intensity`].value;let s=o(n.uniforms[`f${n.id}_intensity`].value,e,r);n.uniforms[`f${n.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){e=e??{};let r=e.builder??new na;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>ia.NormalBlending,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}get penumbraSizeNode(){return this.fragment.penumbraSize}set penumbraSizeNode(e){this.fragment.penumbraSize=e}};Object.defineProperties(Rt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});var aa=require("three");var sa=class extends he{constructor(){super("basic");this.nodeType="Basic";this.color=new Pe(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(aa.UniformsUtils.merge([aa.UniformsLib.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
1081
|
-
`));let n=["#include <beginnormal_vertex>",`
|
|
1082
|
-
#if !defined( USE_LAYER_DISPLACE )
|
|
1083
|
-
#include <defaultnormal_vertex>
|
|
1084
|
-
#endif
|
|
1238
|
+
#pragma unroll_loop_start
|
|
1239
|
+
for (int i = 0; i < NUM_SPOT_LIGHTS; i++) {
|
|
1240
|
+
lpos = (inverse(viewMatrix) * vec4(spotLights[UNROLLED_LOOP_INDEX].position, 1.0)).xyz;
|
|
1241
|
+
l = normalize(lpos - worldPosition);
|
|
1242
|
+
|
|
1243
|
+
dproduct = dot(l, normalize(worldNormal)) * 0.5 + 0.5;
|
|
1244
|
+
t = max(t, dproduct);
|
|
1085
1245
|
|
|
1086
|
-
|
|
1087
|
-
|
|
1246
|
+
// Accumulate shadow contribution
|
|
1247
|
+
#if defined(USE_SHADOWMAP) && (UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS)
|
|
1248
|
+
spotLightShadow = spotLightShadows[UNROLLED_LOOP_INDEX];
|
|
1249
|
+
shadow *= getShadow(
|
|
1250
|
+
UNROLLED_LOOP_INDEX,
|
|
1251
|
+
spotShadowMap[UNROLLED_LOOP_INDEX],
|
|
1252
|
+
spotLightShadow.shadowMapSize,
|
|
1253
|
+
spotLightShadow.shadowBias,
|
|
1254
|
+
spotLightShadow.shadowRadius,
|
|
1255
|
+
vSpotShadowCoord[UNROLLED_LOOP_INDEX]);
|
|
1256
|
+
#endif
|
|
1257
|
+
}
|
|
1258
|
+
#pragma unroll_loop_end
|
|
1088
1259
|
|
|
1089
|
-
|
|
1090
|
-
vec3 transformed;
|
|
1091
|
-
vec3 transformedNormal;
|
|
1092
|
-
#endif
|
|
1093
|
-
`,"#include <normal_vertex>",`
|
|
1094
|
-
#if !defined( USE_LAYER_DISPLACE )
|
|
1095
|
-
#include <begin_vertex>
|
|
1096
|
-
#endif /* !USE_LAYER_DISPLACE */
|
|
1097
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1098
|
-
`)}else{this.color===void 0&&(this.color=new Pe(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"}),n=this.alpha?this.alpha.flow(e,"f"):void 0,s=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0;e.requires.transparent=n!==void 0,e.addParsCode(["varying vec3 vWPosition;","#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
1099
|
-
`));let a=["#include <normal_fragment_begin>",o.code];n&&a.push(n.code,"#ifdef ALPHATEST"," if ( "+n.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};`),n?a.push(`gl_FragColor = vec4( finalColor, accumAlpha * ${n.result} );`):a.push("gl_FragColor = vec4("+o.result+", 1.0 );"),a.push("#include <fog_fragment>","#include <dithering_fragment>"),r=a.join(`
|
|
1100
|
-
`)}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 la=class extends Rt{constructor(e=new sa,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 rr=class extends la{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}static fromMaterial(t){let e=new rr(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}};var Ni=require("three");var ca=class extends he{constructor(){super("phong");this.nodeType="Phong";this.color=new Pe(5855577),this.specular=new Pe(1118481),this.shininess=new X(30),this.penumbraSize=new tt(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new ye(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(Ni.UniformsUtils.merge([Ni.UniformsLib.fog,Ni.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1101
|
-
`));let n=["#include <beginnormal_vertex>",`
|
|
1102
|
-
#ifndef USE_LAYER_DISPLACE
|
|
1103
|
-
#include <defaultnormal_vertex>
|
|
1104
|
-
#endif
|
|
1260
|
+
#endif
|
|
1105
1261
|
|
|
1262
|
+
t = clamp(t, 0.0, 1.0);
|
|
1263
|
+
|
|
1264
|
+
#endif
|
|
1106
1265
|
|
|
1107
|
-
|
|
1108
|
-
|
|
1266
|
+
} else if (positioning == 1) {
|
|
1267
|
+
|
|
1268
|
+
vec3 origin = mix(position, worldPosition, float(isWorldSpace));
|
|
1269
|
+
vec3 direction = normalize(source - origin);
|
|
1270
|
+
t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;
|
|
1109
1271
|
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
vec3
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
#endif
|
|
1118
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1119
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Pe(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode(["varying vec3 vWPosition;","uniform vec3 emissive;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_phong_pars_fragment>","#include <shadowmap_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
1120
|
-
`));let p=["#include <normal_fragment_begin>",`
|
|
1121
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1122
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
1123
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
1124
|
-
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
1125
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
1126
|
-
normal *= -1.0;
|
|
1127
|
-
}
|
|
1128
|
-
`," BlinnPhongMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"," vec3 totalEmissiveRadiance = emissive;",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;"),p.push(`
|
|
1129
|
-
if (outgoingLight != diffuseColor) {
|
|
1130
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1131
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
1132
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
1272
|
+
} else {
|
|
1273
|
+
|
|
1274
|
+
vec3 origin = worldPosition;
|
|
1275
|
+
vec3 source = cameraPosition - offset;
|
|
1276
|
+
vec3 direction = normalize(source - origin);
|
|
1277
|
+
t = dot(direction, normalize(worldNormal)) * 0.5 + 0.5;
|
|
1278
|
+
|
|
1133
1279
|
}
|
|
1134
|
-
`),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(`
|
|
1135
|
-
`)}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 ha=class extends Rt{constructor(e=new ca,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 bn=class extends ha{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}static fromMaterial(t){let e=new bn(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}};var Ci=require("three");var pa=class extends he{constructor(){super("lambert");this.nodeType="Lambert";this.color=new Pe(5855577),this.emissive=new Pe(0),this.emissiveIntensity=new X(1),this.penumbraSize=new tt(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new ye(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(Ci.UniformsUtils.merge([Ci.UniformsLib.fog,Ci.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <color_pars_vertex>","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1136
|
-
`));let n=["#include <beginnormal_vertex>",`
|
|
1137
|
-
#ifndef USE_LAYER_DISPLACE
|
|
1138
|
-
#include <defaultnormal_vertex>
|
|
1139
|
-
#endif
|
|
1140
1280
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1281
|
+
if (noiseStrength > 0.0) {
|
|
1282
|
+
// Distort with noise
|
|
1283
|
+
vec3 st = position / noiseScale;
|
|
1284
|
+
|
|
1285
|
+
// Voronoi "smooth" noise
|
|
1286
|
+
float noise = 1.0 - voronoiNoise(st).x;
|
|
1143
1287
|
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
vec3 transformedNormal;
|
|
1147
|
-
#endif
|
|
1148
|
-
`,"#include <normal_vertex>",`
|
|
1149
|
-
#ifndef USE_LAYER_DISPLACE
|
|
1150
|
-
#include <begin_vertex>
|
|
1151
|
-
#endif
|
|
1152
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>",`
|
|
1153
|
-
vec3 diffuse = vec3( 1.0 );
|
|
1154
|
-
GeometricContext geometry;
|
|
1155
|
-
geometry.position = mvPosition.xyz;
|
|
1156
|
-
geometry.normal = normalize( transformedNormal );
|
|
1157
|
-
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
|
|
1158
|
-
GeometricContext backGeometry;
|
|
1159
|
-
backGeometry.position = geometry.position;
|
|
1160
|
-
backGeometry.normal = -geometry.normal;
|
|
1161
|
-
backGeometry.viewDir = geometry.viewDir;
|
|
1162
|
-
vLightFront = vec3( 0.0 );
|
|
1163
|
-
vIndirectFront = vec3( 0.0 );
|
|
1164
|
-
#ifdef DOUBLE_SIDED
|
|
1165
|
-
vLightBack = vec3( 0.0 );
|
|
1166
|
-
vIndirectBack = vec3( 0.0 );
|
|
1167
|
-
#endif
|
|
1168
|
-
IncidentLight directLight;
|
|
1169
|
-
float dotNL;
|
|
1170
|
-
vec3 directLightColor_Diffuse;
|
|
1171
|
-
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
|
|
1172
|
-
vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
1173
|
-
#ifdef DOUBLE_SIDED
|
|
1174
|
-
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
|
|
1175
|
-
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );
|
|
1176
|
-
#endif
|
|
1177
|
-
#if NUM_POINT_LIGHTS > 0
|
|
1178
|
-
#pragma unroll_loop_start
|
|
1179
|
-
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
1180
|
-
getPointLightInfo( pointLights[ i ], geometry, directLight );
|
|
1181
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
1182
|
-
directLightColor_Diffuse = directLight.color;
|
|
1183
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
1184
|
-
#ifdef DOUBLE_SIDED
|
|
1185
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
1186
|
-
#endif
|
|
1187
|
-
}
|
|
1188
|
-
#pragma unroll_loop_end
|
|
1189
|
-
#endif
|
|
1190
|
-
#if NUM_SPOT_LIGHTS > 0
|
|
1191
|
-
#pragma unroll_loop_start
|
|
1192
|
-
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
1193
|
-
getSpotLightInfo( spotLights[ i ], geometry, directLight );
|
|
1194
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
1195
|
-
directLightColor_Diffuse = directLight.color;
|
|
1196
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
1197
|
-
#ifdef DOUBLE_SIDED
|
|
1198
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
1199
|
-
#endif
|
|
1200
|
-
}
|
|
1201
|
-
#pragma unroll_loop_end
|
|
1202
|
-
#endif
|
|
1203
|
-
#if NUM_DIR_LIGHTS > 0
|
|
1204
|
-
#pragma unroll_loop_start
|
|
1205
|
-
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
1206
|
-
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
|
|
1207
|
-
dotNL = dot( geometry.normal, directLight.direction );
|
|
1208
|
-
directLightColor_Diffuse = directLight.color;
|
|
1209
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
1210
|
-
#ifdef DOUBLE_SIDED
|
|
1211
|
-
vLightBack += saturate( -dotNL ) * directLightColor_Diffuse;
|
|
1212
|
-
#endif
|
|
1213
|
-
}
|
|
1214
|
-
#pragma unroll_loop_end
|
|
1215
|
-
#endif
|
|
1216
|
-
#if NUM_HEMI_LIGHTS > 0
|
|
1217
|
-
#pragma unroll_loop_start
|
|
1218
|
-
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
1219
|
-
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
1220
|
-
#ifdef DOUBLE_SIDED
|
|
1221
|
-
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );
|
|
1222
|
-
#endif
|
|
1223
|
-
}
|
|
1224
|
-
#pragma unroll_loop_end
|
|
1225
|
-
#endif
|
|
1226
|
-
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1227
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Pe(5855577)),this.color.analyze(e,{slot:"color"}),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.emissive.flow(e,"c",{slot:"emissive"}),s=this.emissiveIntensity.flow(e,"f",{slot:"emissive"}),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vViewPosition;","varying vec3 vWPosition;","varying vec3 vLightFront;","varying vec3 vIndirectFront;","#ifndef DOUBLE_SIDED"," #define DOUBLE_SIDED","#endif","#include <normal_pars_fragment>","#ifdef DOUBLE_SIDED"," varying vec3 vLightBack;"," varying vec3 vIndirectBack;","#endif","#include <bsdfs>","#include <lights_pars_begin>","#include <fog_pars_fragment>","#include <shadowmap_pars_fragment>","#include <shadowmask_pars_fragment>","#include <clipping_planes_pars_fragment>","#include <dithering_pars_fragment>"].join(`
|
|
1228
|
-
`));let p=["#include <normal_fragment_begin>",`
|
|
1229
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1230
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
1231
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
1232
|
-
vec3 faceNormal = normalize(cross(viewdx, viewdy));
|
|
1233
|
-
bool isFrontFacing = (dot(normal, faceNormal) >= 0.0);
|
|
1234
|
-
`,"#include <clipping_planes_fragment>"];p.push(o.code,"vec3 diffuseColor = "+o.result+";","ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("#ifdef DOUBLE_SIDED"," reflectedLight.indirectDiffuse += ( isFrontFacing ) ? vIndirectFront : vIndirectBack;","#else"," reflectedLight.indirectDiffuse += vIndirectFront;","#endif","#include <lightmap_fragment>","reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );","#ifdef DOUBLE_SIDED"," reflectedLight.directDiffuse = ( isFrontFacing ) ? vLightFront : vLightBack;","#else"," reflectedLight.directDiffuse = vLightFront;","#endif","reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();"),n&&p.push(n.code,"reflectedLight.directDiffuse += "+n.result+" * "+s.result+";"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;"),p.push(`
|
|
1235
|
-
if (outgoingLight != diffuseColor) {
|
|
1236
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1237
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
1238
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
1239
|
-
}
|
|
1240
|
-
`),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(`
|
|
1241
|
-
`)}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 ua=class extends Rt{constructor(e=new pa,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 da=class extends ua{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};var Ti=require("three");var ma=class extends he{constructor(){super("toon");this.nodeType="Toon";this.color=new Pe(5855577),this.specular=new Pe(1118481),this.shininess=new X(30),this.penumbraSize=new tt(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new ye(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(Ti.UniformsUtils.merge([Ti.UniformsLib.fog,Ti.UniformsLib.lights])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1242
|
-
`));let n=["#include <beginnormal_vertex>",`
|
|
1243
|
-
#ifndef USE_LAYER_DISPLACE
|
|
1244
|
-
#include <defaultnormal_vertex>
|
|
1245
|
-
#endif
|
|
1288
|
+
// Voronoi cellular noise
|
|
1289
|
+
//float noise = 1.0 - rand(voronoiNoise(st).z);
|
|
1246
1290
|
|
|
1247
|
-
|
|
1248
|
-
|
|
1291
|
+
// Position warp noise
|
|
1292
|
+
// vec3 offset = vec3(
|
|
1293
|
+
// simplex3d(st),
|
|
1294
|
+
// simplex3d(st + vec3(111.1, 143.89, 217.19)),
|
|
1295
|
+
// simplex3d(st + vec3(171.1, 247.89, 117.23))
|
|
1296
|
+
// );
|
|
1297
|
+
// st += offset;
|
|
1298
|
+
// float noise = valueNoise(st);
|
|
1249
1299
|
|
|
1250
|
-
|
|
1251
|
-
vec3 transformed;
|
|
1252
|
-
vec3 transformedNormal;
|
|
1253
|
-
#endif
|
|
1254
|
-
`,"#include <normal_vertex>",`
|
|
1255
|
-
#ifndef USE_LAYER_DISPLACE
|
|
1256
|
-
#include <begin_vertex>
|
|
1257
|
-
#endif
|
|
1258
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push(" #include <project_vertex>"," #include <fog_vertex>"," #include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;"," #include <worldpos_vertex>"," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1259
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new Pe(5855577)),this.color.analyze(e,{slot:"color"}),this.specular.analyze(e),this.shininess.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e);let o=this.color.flow(e,"c",{slot:"color"}),n=this.specular.flow(e,"c"),s=this.shininess.flow(e,"f"),a=this.shadingAlpha.flow(e,"f"),l=this.shadingBlend.flow(e,"i"),c=this.afterColor?this.afterColor.flow(e,"c",{slot:"afterColor"}):void 0,h=this.alpha?this.alpha.flow(e,"f"):void 0;e.requires.transparent=h!==void 0,e.addParsCode([`uniform float penumbraSize[${5}];`,"varying vec3 vWPosition;","#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
1260
|
-
varying vec3 vViewPosition;
|
|
1261
|
-
struct ToonMaterial {
|
|
1262
|
-
vec3 diffuseColor;
|
|
1263
|
-
vec3 specularColor;
|
|
1264
|
-
float specularShininess;
|
|
1265
|
-
float specularStrength;
|
|
1266
|
-
};
|
|
1267
|
-
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
1268
|
-
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
|
1269
|
-
|
|
1270
|
-
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
1271
|
-
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
|
1272
|
-
}
|
|
1273
|
-
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
|
1274
|
-
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
1275
|
-
}
|
|
1276
|
-
#define RE_Direct RE_Direct_Toon
|
|
1277
|
-
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon
|
|
1278
|
-
#define Material_LightProbeLOD( material ) (0)
|
|
1279
|
-
`,"#include <shadowmap_pars_fragment>","#include <bumpmap_pars_fragment>","#include <normalmap_pars_fragment>"].join(`
|
|
1280
|
-
`));let p=["#include <normal_fragment_begin>",`
|
|
1281
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1282
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
1283
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
1284
|
-
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
1285
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
1286
|
-
normal *= -1.0;
|
|
1287
|
-
}
|
|
1288
|
-
`," ToonMaterial material;"];p.push(o.code," vec3 diffuseColor = "+o.result+";"," ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",n.code," vec3 specular = "+n.result+";",s.code," float shininess = max( 0.0001, "+s.result+" );"," float specularStrength = 1.0;"),h&&p.push(h.code,"#ifdef ALPHATEST","if ( "+h.result+" <= ALPHATEST ) discard;","#endif"),p.push("material.diffuseColor = diffuseColor;"),p.push("material.specularColor = specular;","material.specularShininess = shininess;","material.specularStrength = specularStrength;","#include <lights_fragment_begin>","#include <lights_fragment_end>"),p.push("vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular;"),p.push(`
|
|
1289
|
-
if (outgoingLight != diffuseColor) {
|
|
1290
|
-
float lightAccu = clamp( length( reflectedLight.directSpecular + reflectedLight.indirectSpecular ), 0.0, 1.0 );
|
|
1291
|
-
accumAlpha += ( 1.0 - accumAlpha ) * ${a.result} * lightAccu;
|
|
1292
|
-
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
1300
|
+
t += noise * noiseStrength;
|
|
1293
1301
|
}
|
|
1294
|
-
`),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(`
|
|
1295
|
-
`)}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 fa=class extends Rt{constructor(e=new ma,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 ga=class extends fa{constructor(t,e,r){super(e,t),this.userData.type="ToonMaterial",this.userData.category="Toon",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};var Sn=require("three");var ya=class extends he{constructor(){super("standard");this.nodeType="Standard";this.color=new Pe(5855577),this.roughness=new X(.3),this.metalness=new X(0),this.reflectivity=new X(.5),this.penumbraSize=new tt(5,.5),this.shadingAlpha=new X(1),this.shadingBlend=new ye(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(Sn.UniformsUtils.merge([Sn.UniformsLib.fog,Sn.UniformsLib.lights])),Sn.UniformsLib.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
1296
|
-
`));let n=["#include <beginnormal_vertex>",`
|
|
1297
|
-
#if !defined( USE_LAYER_DISPLACE )
|
|
1298
|
-
#include <defaultnormal_vertex>
|
|
1299
|
-
#endif
|
|
1300
1302
|
|
|
1301
|
-
|
|
1302
|
-
vec3 displaced_normal = normal;
|
|
1303
|
+
t = clamp(t, 0.0, 1.0);
|
|
1303
1304
|
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
#include <begin_vertex>
|
|
1311
|
-
#endif /* !USE_LAYER_DISPLACE */
|
|
1312
|
-
`];o&&n.push(o.code,o.result?"displaced_position = "+o.result+";":""),n.push("transformed = displaced_position;","transformedNormal = normalMatrix * displaced_normal;","#ifndef FLAT_SHADED"," vNormal = transformedNormal;","#endif"),n.push("#include <project_vertex>","#include <fog_vertex>","#include <clipping_planes_vertex>"," vViewPosition = - mvPosition.xyz;","#include <worldpos_vertex>","#include <shadowmap_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
1313
|
-
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new Pe(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 n=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,u=this.reflectivity?this.reflectivity.flow(e,"f"):void 0;e.requires.transparent=p!==void 0,e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;",`uniform float penumbraSize[${5}];`,"#include <normal_pars_fragment>","#include <dithering_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <lights_physical_pars_fragment>","#include <shadowmap_pars_fragment>"].join(`
|
|
1314
|
-
`));let d=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
1315
|
-
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
1316
|
-
vec3 viewdx = dFdx(vViewPosition);
|
|
1317
|
-
vec3 viewdy = dFdy(vViewPosition);
|
|
1318
|
-
vec3 faceNormal = normalize(cross(viewdx,viewdy));
|
|
1319
|
-
if (dot(normal, faceNormal) < 0.0) {
|
|
1320
|
-
normal *= -1.0;
|
|
1305
|
+
// Compute ramp color
|
|
1306
|
+
float p;
|
|
1307
|
+
vec4 color = colors[0];
|
|
1308
|
+
for (int i = 1; i < COLORS_MAX; i++) {
|
|
1309
|
+
p = clamp((t - steps[i-1]) / (steps[i] - steps[i-1]), 0.0, 1.0);
|
|
1310
|
+
color = mix(color, colors[i], smoothstep(0.0, 1.0, p));
|
|
1321
1311
|
}
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1312
|
+
|
|
1313
|
+
// Incorporate custom shadow color
|
|
1314
|
+
if (positioning == 0) {
|
|
1315
|
+
|
|
1316
|
+
vec3 blendedShadow = mix(color.rgb, shadowColor.rgb, shadowColor.a);
|
|
1317
|
+
color.rgb = mix(blendedShadow, color.rgb, shadow);
|
|
1318
|
+
|
|
1327
1319
|
}
|
|
1328
|
-
|
|
1329
|
-
`)}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 xa=class extends Rt{constructor(e=new ya,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 va=class extends xa{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r??this._getLayerStack(t?.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}};var ba=require("three");var Oe=require("three");function vd(i,t){switch(i.data.type){case"light":return zt(i);case"fresnel":return db(i,t);case"gradient":return mb(i);case"depth":return fb(i);case"normal":return gb(i);case"noise":return yb(i,t);case"texture":return xb(i,t);case"rainbow":return vb(i);case"toon":return bb(i,t);case"outline":return Sb(i,t);case"transmission":return wb(i,t);case"matcap":return Nb(i,t);case"displace":return Cb(i);case"color":default:return ub(i,t)}}function bd(i){return{type:i.data.type}}function zt(i){let{alpha:t,mode:e}=i.data;return{...bd(i),alpha:t,mode:e}}function ub(i,t){return{...zt(i),color:Re(i.data.color,t)}}function db(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i.data;return{...zt(i),color:Re(s,t),bias:e,scale:r,intensity:o,factor:n}}function mb(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i.data;return{...zt(i),gradientType:t,smooth:e,colors:r.map(l=>new Oe.Vector4(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Oe.Vector2(...s),morph:new Oe.Vector2(...a),angle:n}}function fb(i){let{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:s,direction:a,colors:l,steps:c,smooth:h,num:p}=i.data;return{...zt(i),gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new Oe.Vector3(...s),direction:a?new Oe.Vector3(...a):new Oe.Vector3(1,0,0),num:p,colors:l.map(u=>new Oe.Vector4(u[0],u[1],u[2],u[3])),steps:c,smooth:h}}function gb(i){let{cnormal:t}=i.data;return{...zt(i),cnormal:new Oe.Vector3(t[0],t[1],t[2])}}function yb(i,t){let{data:e}=i;return{...zt(i),scale:e.scale,move:e.move,fA:new Oe.Vector2(...e.fA),fB:new Oe.Vector2(...e.fB),size:new Oe.Vector3(...e.size),distortion:new Oe.Vector2(...e.distortion),colorA:Re(e.colorA,t),colorB:Re(e.colorB,t),colorC:Re(e.colorC,t),colorD:Re(e.colorD,t),noiseType:e.noiseType}}function xb(i,t){let{projection:e,axis:r,side:o,crop:n,size:s}=i.data,{image:a,wrapping:l,repeat:c,offset:h}=i.data.texture,p=new Oe.Texture,u;if(typeof a=="string")u=t?.getImage(a);else{let d=new Image;d.src=wn(a.data),d.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},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,{...zt(i),texture:p,mat:new Oe.Matrix3().setUvTransform(h[0],h[1],c[0],c[1],0,0,0),crop:n,projection:e,axis:["x","y","z"].indexOf(r),side:[2,0,1].indexOf(o),size:s}}function vb(i){let{data:t}=i;return{...zt(i),filmThickness:t.filmThickness,movement:t.movement,wavelengths:new Oe.Vector3(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new Oe.Vector3(...t.offset)}}function bb(i,t){let{data:e}=i;return{...zt(i),positioning:e.positioning,colors:e.colors.map(r=>new Oe.Vector4(r[0],r[1],r[2],r[3])),num:e.colors.length,steps:e.steps,source:new Oe.Vector3(...e.source),isWorldSpace:e.isWorldSpace,noiseStrength:e.noiseStrength,noiseScale:e.noiseScale,shadowColor:Re(e.shadowColor,t),offset:new Oe.Vector3(...e.offset)}}function Sb(i,t){let{data:e}=i;return{...zt(i),outlineColor:Re(e.outlineColor,t),contourColor:Re(e.contourColor,t),outlineWidth:e.outlineWidth,contourWidth:e.contourWidth,outlineThreshold:e.outlineThreshold,contourThreshold:e.contourThreshold,outlineSmoothing:e.outlineSmoothing,contourFrequency:e.contourFrequency,contourDirection:e.contourDirection,positionalLines:e.positionalLines,compensation:e.compensation,resolution:t.resolutionNode,normalMap:t.normalMap,depthMap:t.normalRenderTarget.depthTexture,pixelRatio:t.pixelRatioNode}}function wb(i,t){let{data:e}=i;return{...zt(i),thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap}}function Nb(i,t){let e=new Oe.Texture,{image:r}=i.data.texture,o;if(typeof r=="string")o=t?.getImage(r);else{let s=new Image;s.src=wn(r.data),s.onload=()=>{t?.onImageLoad&&t?.onImageLoad()},o=s}e.image=o;let n=16777215;return{...zt(i),color:n,texture:e}}function Cb(i){let{data:t}=i,e={...bd(i),intensity:t.intensity};if(t.displacementType==="noise")return{...e,offset:new Oe.Vector3(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType};{let r=new Oe.Texture,o=new Oe.Matrix3().setUvTransform(0,0,1,1,0,0,0);return{...e,texture:r,mat:o,crop:t.crop}}}function Sd(i,t,e){if(e.type==="displace"&&(i==="intensity"||i==="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"&&(i==="alpha"||i==="visible")){let r=t.uniforms[`f${t.id}_alpha`];if(!r)return;if(r.value=e.alpha*(e.visible?1:0),e.type==="outline"&&i=="visible"){let o=t.uniforms[`f${t.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return r}}var Li=require("three"),Nn;(t=>{function i(e){return new Li.Color(e.x,e.y,e.z).getHex()}t.getHex=i})(Nn||(Nn={}));var wd;(t=>{function i(e){return new Li.Vector4(e.r,e.g,e.b,e.a)}t.getThreeVector4=i})(wd||(wd={}));var Nd;(e=>{function i(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=i;function t(r){return new Li.Color(r.r,r.g,r.b).getHex()}e.getHex=t})(Nd||(Nd={}));function Ii(i,t){return typeof i=="string"?t.getMaterialOrDeletedPlaceholder(i):Yl(i,t)}function Cd(i,t){return i.map(e=>Ii(e,t))}function Yl(i,t){let e=i.layers??uo.defaultTwoLayerData("phong").layers,r=Tb(e),o;switch(r.category){case"basic":o=new rr;break;case"lambert":{o=new da;break}case"toon":{o=new ga;break}case"physical":o=new va;break;case"phong":default:{o=new bn;break}}o.name=i.name??"Untitled Material";let n=o.userData.layers;Lb(n);for(let s=e.length-1;s>=0;s--)Ib(n,e[s],t);switch(r.category){case"basic":break;case"lambert":{let l=o,h=Re(r.emissive,t);h instanceof ba.Color?l.emissive.value=h:l.emissive.value.setHex(Nn.getHex(h));break}case"toon":{let l=o,c=r;l.shininess.value=c.shininess;let h=Re(c.specular,t);h instanceof ba.Color?l.specular.value=h:l.specular.value.setHex(Nn.getHex(h));break}case"physical":let s=o,a=r;s.metalness.value=a.metalness,s.roughness.value=a.roughness,s.reflectivity.value=a.reflectivity;break;case"phong":default:{let l=o,c=r;l.shininess.value=c.shininess;let h=Re(c.specular,t);h instanceof ba.Color?l.specular.value=h:l.specular.value.setHex(Nn.getHex(h));break}}return o.penumbraSizeNode=t.penumbraSizeNode,n.blendColors(),n.blendAfterColors(),n.blendPositions(),o}function Tb(i){for(let t of i)if(t.data.type==="light")return t.data;return{type:"light",category:"basic",visible:!0,alpha:1,mode:0}}function Lb(i){for(let t of i.getLayers())i.removeLayer(t.id)}function Ib(i,t,e){let r=vd(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e?.transmissionSamplerMap,r.transmissionDepthMap=e?.transmissionDepthMap),r.type==="outline"&&(r.normalMap=e?.normalMap,r.depthMap=e?.normalRenderTarget.depthTexture);let o=i.addLayer(r);o.uuid=t.id;for(let n in t.data)Sd(n,o,t.data)}function Ab(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function Ob(i,t){t.uniforms[`f${t.id}_normalMap`].value=i.texture,t.uniforms[`f${t.id}_depthMap`].value=i.depthTexture}function Db(i){if(i.geometry.attributes.extrudeNormals)return;let t=new Map,e=i.geometry.attributes.position.array,r=i.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=new gt.Vector3(r[n],r[n+1],r[n+2]);t.has(s)?t.get(s)?.normals.push(a):t.set(s,{normals:[a],result:new gt.Vector3})}t.forEach((n,s)=>{for(let a of n.normals)n.result.add(a);n.result.divideScalar(n.normals.length)});for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=t.get(s)?.result;a&&(o[n]=a.x,o[n+1]=a.y,o[n+2]=a.z)}i.geometry.setAttribute("extrudeNormal",new gt.Float32BufferAttribute(o,3))}function _b(i){if(i.geometry.attributes.extrudeNormals)return;let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=new gt.Vector3;for(let o=0;o<t.length;o+=3)r.set(t[o],t[o+1],t[o+2]).normalize(),e[o]=r.x,e[o+1]=r.y,e[o+2]=r.z;i.geometry.setAttribute("extrudeNormal",new gt.Float32BufferAttribute(e,3))}function Pi(i){i.objectType==="Mesh2D"?_b(i):Db(i)}function Jl(i){let t=i.geometry.attributes.position.array,e=new Float32Array(t.length),r=parseInt(i.uuid.replace(/\D/g,"")),o=[gt.MathUtils.seededRandom(r),gt.MathUtils.seededRandom(r+1e4),gt.MathUtils.seededRandom(r+2e4)];for(let n=0;n<t.length;n++)e[n]=o[n%3];i.geometry.setAttribute("randomColor",new gt.BufferAttribute(e,3))}function Td(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission"),n=e.userData.layers.getLayersOfType("outline");return n.length>0&&(t.layers.set(8),o.length===0&&t.layers.enable(3),t.cloner?.refreshClonerMasks(),r=!0,i!==void 0&&n.forEach(s=>Ob(i,s)),Jl(t),Pi(t)),o.length===0&&n.length===0&&t.layers.set(0),r}function Ld(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission"),n=e.userData.layers.getLayersOfType("outline");return o.length>0&&(t.layers.set(3),n.length>0&&t.layers.enable(8),t.cloner?.refreshClonerMasks(),r=!0,i!==void 0&&o.forEach(s=>Ab(i,s))),o.length===0&&n.length===0&&t.layers.set(0),r}function Id(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof gt.Mesh)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Td(i,r,r.material[o])&&(e=!0);else Td(i,r,r.material)&&(e=!0)}),e}function Pd(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof gt.Mesh)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Ld(i,r,r.material[o])&&(e=!0);else Ld(i,r,r.material)&&(e=!0)}),e}function Md(i,t){"material"in i&&Bb(i.material,t),"geometry"in i&&i.geometry.dispose()}function Bb(i,t){gc(i).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var it=class extends $t(Sa.Mesh){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new Sa.Matrix4;this.booleanExclude=null;Array.isArray(r)&&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}updateGeometry(e){let r=this.geometry,o=Ql[r.userData.type],n=this.objectType==="NonParametric"?Object.assign({},r.userData,{geometry:r}):r.userData,s=o.build(o.normalizeInputs(e,n)),a=r.uuid;if(this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),Pi(this),r.getAttribute("randomColor")&&Jl(this),this.cloner)for(let c of this.cloner.children)c.geometry=this.geometry}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=Mi(r),n=this.material;return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new yo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new yo(this)),this.cloner.fromClonerState(e))}fromState(e,r){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(or.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),gr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)fr(e)&&(e.freeBooleanPointer(),gr(e)&&e.invalidateUpstreamBooleanData())}};var Eb=new to.Vector3(0,0,1),Ad=new to.Vector3,Od=new to.Vector3,Dd=new to.Matrix3,eo=class extends it{constructor(e=at.create({}),r){super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new to.EventDispatcher;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Dd.getNormalMatrix(this.matrixWorld),Ad.copy(Eb).applyMatrix3(Dd).normalize(),Od.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Ad,Od)}clone(e){let r=this.shape.clone(),o=this.material,n=this.geometry.userData,s=at.create(Object.assign({},n,{shape:r})),a=new eo(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){it.prototype.raycast.call(this,e,r)}};function wa(i,t){return Gb(i)}function Gb(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Ce.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>r.materialIndex=Math.max(r.materialIndex??0,0)),t.geometry=new _d.BufferGeometryLoader().parse(i));let e;try{e=Mi(t)}catch(r){console.error(r)}if(!e){let r=Ce.createFromState(Jo.defaultData(),100,100);t.shape=r,e=Mi(t)}return e}var de;Qs.then(i=>{de=i});var Bd=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Ed=new Uint32Array([0,1,2,3]),Gd=new Uint8Array([4]),Kt=class{static build(i,t,e,r,o){let n,s,a,l=i?.phongAngle??t?.phongAngle??35;if(r===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(de.free_bvh(e),de.free_subdivision_surface(e));try{n=Kt.allocate(i,o)}catch(c){console.error(c,i),n=Kt.allocate({positionWASM:Bd,indexWASM:Ed,verticesPerFaceWASM:Gd},o)}de.set_destination_refinement_level(n,0),s=Kt.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=Kt.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(de.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Kt.buildLevel(n,!1,l):a=null),{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(i,t){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let e=i.shape!==void 0?t.geometry:wa(i),r,o,n,s;return{positions:r,triIndices:s}=rc(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=oc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=Bd,r=Ed,o=Gd);let a=e.length,l=r.length,c=o.length,h=e.length+n.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,m=p*Uint32Array.BYTES_PER_ELEMENT,g=de._malloc(u),x=new Float32Array(de.HEAPF32.buffer,g,h),y=new Uint32Array(de.HEAPU32.buffer,g+d,p);x.set(e,0),x.set(n,e.length),x.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let v;i?.scaleBaked?.some(S=>S!==1)&&(v=new $e.Matrix4().makeScale(...i.scaleBaked)),t&&(v?v.premultiply(t):v=t);let P=v?de.alloc_subdivision_surface2(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c,v.elements):de.alloc_subdivision_surface(g,a,g+d,l,g+d+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return de._free(g),P}static buildLevel(i,t,e,r,o){let n=o?de.get_mesh_data2(i,t?de.Level.CONTROL:de.Level.REFINED,e,o.elements):de.get_mesh_data(i,t?de.Level.CONTROL:de.Level.REFINED,e),s=8,a=de.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,h=de.HEAPU32[a[c]>>2],p=de.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=de.HEAPU32[a[c]>>2],d=de.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=de.HEAPU32[a[c]>>2],g=de.HEAPU32.subarray(m>>2,(m>>2)+l[c]);c++;let x=de.HEAPU32[a[c]>>2],y=de.HEAPU32.subarray(x>>2,(x>>2)+l[c]);if(c++,r===void 0){let v=new $e.BufferGeometry;if(v.setIndex(new $e.Uint32BufferAttribute(y,1)),v.setAttribute("position",new $e.Float32BufferAttribute(p,3)),v.setAttribute("normal",new $e.Float32BufferAttribute(d,3)),t){v.setAttribute("faceMap",new $e.Uint32BufferAttribute(g,1));let P=new Float32Array(d.length/3*4).fill(0);v.setAttribute("color",new $e.BufferAttribute(P,4))}return de.free_mesh_data(n),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(d),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,de.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=de.get_wireframe_data_for_base_level(i),o=4,n=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=de.HEAPU32[n[a]>>2],c=de.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=de.HEAPU32[n[a]>>2],p=de.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new $e.BufferGeometry;u.setAttribute("position",new $e.Float32BufferAttribute(c,3));let d=new Float32Array(c.length);for(let m=0,g=c.length;m<g;)d[m++]=e.r,d[m++]=e.g,d[m++]=e.b;return u.setAttribute("color",new $e.BufferAttribute(d,3)),u.setIndex(new $e.Uint32BufferAttribute(p,1)),de.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,de.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||de.set_destination_refinement_level(i,1);let r=e?de.get_topological_data2(i,t?de.Level.CONTROL:de.Level.REFINED,e.elements):de.get_topological_data(i,t?de.Level.CONTROL:de.Level.REFINED),o=6,n=de.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=de.HEAPU32[n[a]>>2],c=new Float32Array(de.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=de.HEAPU32[n[a]>>2],p=new Uint32Array(de.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=de.HEAPU32[n[a]>>2],d=new Uint8Array(de.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return de.free_topological_data(r),{positions:c,indices:p,verticesPerFace:d}}};var Rd=["getX","getY","getZ"];function rc(i,t){let e={},r=t?t.count:i.count,o=0,n=[],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+=`${~~(i[Rd[u]](h)*a)},`;if(p in e)n.push(e[p]);else{for(let u=0;u<3;u++)s.push(i[Rd[u]](h));e[p]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:s,triIndices:l}}var Na=new $e.Vector3,Zl=new $e.Vector3,ec=new $e.Vector3,tc=new $e.Vector3;function oc(i,t,e){let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let n=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let l=0;l<n.length;l+=2)s+=(n[l]-n[(l===0?n.length:l)-2])*(n[l+1]+n[(l===0?n.length:l)-1]);i.length=0;let a=0;if(s<0)for(let l=0;l<n.length;l+=2)i.push(n[l],n[l+1],0),r.push(a++);else for(let l=n.length-2;l>=0;l-=2)i.push(n[l],n[l+1],0),r.push(a++);return o.push(a),{indices:r,verticesPerFace:o}}for(let n=0,s=e.capStartIndex??t.length;n<s;)if(t[n+1]===t[n+3]&&t[n+2]===t[n+5]||t[n+0]===t[n+3]&&t[n+2]===t[n+4]){Na.set(i[t[n]*3],i[t[n]*3+1],i[t[n]*3+2]),Zl.set(i[t[n+1]*3],i[t[n+1]*3+1],i[t[n+1]*3+2]),ec.set(i[t[n+4]*3],i[t[n+4]*3+1],i[t[n+4]*3+2]),tc.set(i[t[n+5]*3],i[t[n+5]*3+1],i[t[n+5]*3+2]),Zl.sub(Na).normalize(),ec.sub(Na).normalize(),tc.sub(Na).normalize();let a=Zl.cross(ec).dot(tc);Math.abs(a)>.005?(r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3):(r.push(t[n],t[n+1],t[n+4],t[n+5]),o.push(4),n+=6)}else r.push(t[n],t[n+1],t[n+2]),o.push(3),n+=3;if(e.capStartIndex!==void 0){let n=[],s=[],a=0;for(let l=0,c=0;l<i.length;l+=3,c++)i[l+2]===0&&(n.push(c),a++),i[l+2]===e.userData.parameters.depth&&s.push(c);if(e.userData.parameters.extrudeBevelSize===0){let l=s[0];s[0]=s[1],s[1]=l}n.reverse(),r.push(...n,...s),o.push(a,a)}return{indices:r,verticesPerFace:o}}var or={};mc(or,{calcBoolean:()=>Fb,calcBooleanTopological:()=>Vb,freeMeshSet:()=>kb,getMeshSet:()=>Ub,transformMeshSet:()=>jb});var Rb,zd=new Promise(i=>{Rb=i});var Ai=require("three");var be,Cn;zd.then(i=>be=i);function zb(i,t){let e,{positions:r,triIndices:o}=rc(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=oc(r,o,i);n=a.length,e=[];for(let l=0,c=0;l<n;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),n=0;for(let a=0,l=0;l<e.length;)e[l++]=3,n++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:r,faceIndices:e,nFaces:n}}function Vd(i){let t=i.length,e=t*Uint32Array.BYTES_PER_ELEMENT,r=t*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:r,n=be._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(be.HEAPU32.buffer,n,t):new Float32Array(be.HEAPF32.buffer,n,t)).set(i,0),n}function Fd(i){switch(i){case 0:return be.OP.UNION;case 1:return be.OP.INTERSECTION;case 2:return be.OP.A_MINUS_B;case 3:return be.OP.B_MINUS_A;case 4:return be.OP.SYMMETRIC_DIFFERENCE;case 5:return be.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function Vb(i,t){Cn===void 0&&(Cn=be.init_csg());let e=Vd(i),r=be.csg_calc_topological(Cn,e,i.length,Fd(t));be._free(e);let o=6,n=be.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=be.HEAPU32[n[a]>>2],c=new Float32Array(be.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=be.HEAPU32[n[a]>>2],p=new Uint32Array(be.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=be.HEAPU32[n[a]>>2],d=new Uint8Array(be.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return be.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:d}}function Fb(i,t,e,r){Cn===void 0&&(Cn=be.init_csg());let o=Vd(i),n=be.csg_calc(Cn,o,i.length,r,Fd(t));be._free(o);let s=5,a=be.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,h=be.HEAPU32[a[c]>>2],p=be.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=be.HEAPU32[a[c]>>2],d=be.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let m=l[c];e.setAttribute("position",new Ai.Float32BufferAttribute(p,3)),e.setAttribute("normal",new Ai.Float32BufferAttribute(d,3));let g=be.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ai.Sphere),e.boundingSphere.center.set(g[0],g[1],g[2]),e.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,e.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},be.free_mesh_data(n),m}function Ub(i,t){if(be===void 0)return-1;let e,r,o;if(t&&i.userData.positions!==void 0){let g=i.userData;o=g.verticesPerFace.length,e=g.positions,r=Array(g.verticesPerFace.reduce((x,y)=>x+y,0)+o);for(let x=0,y=0,v=0;x<g.verticesPerFace.length;x++){r[v++]=g.verticesPerFace[x];for(let P=0;P<g.verticesPerFace[x];P++)r[v++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=zb(i,t));let n=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=be._malloc(c),d=new Float32Array(be.HEAPF32.buffer,u,a),m=new Uint32Array(be.HEAPU32.buffer,u+h,l);return d.set(e,0),m.set(r,0),be.get_csg_mesh(u,n,u+h,s,o)}function jb(i,t){be.transform_csg_mesh(i,t.elements)}function kb(i){be.free_csg_mesh(i)}var Ql={ConeGeometry:lu,CubeGeometry:cu,CylinderGeometry:su,DodecahedronGeometry:pu,EllipseGeometry:_u,HelixGeometry:Ru,IcosahedronGeometry:Vu,LatheGeometry:Fu,NonParametricGeometry:Uu,PolygonGeometry:ju,PyramidGeometry:ku,RectangleGeometry:Hu,SphereGeometry:qu,PlaneGeometry:Xu,BackdropGeometry:Ku,StarGeometry:Yu,TextFrameGeometry:Js,TorusGeometry:Qu,TorusKnotGeometry:ed,TriangleGeometry:td,VectorGeometry:at},Mi=i=>Ql[i.type].create(i);var Oi=require("three");var Ud=new Oi.Matrix4;var Ca=class extends it{constructor(e=new Oi.BufferGeometry,r){super(e,r);this.booleanOp=2;this.phongAngle=35;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 n=this.children[o];gr(n)&&n.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let n=this.children[o];if(ld(n)&&n.booleanExclude===!1&&n.geometry.attributes.position?.count>0&&n.geometry.drawRange.count>0){if(n.booleanMeshSetAddress===-1){if(n.booleanMeshSetAddress=or.getMeshSet(n.geometry,e===!0),n.booleanMeshSetAddress===-1)return;or.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1}else gr(n)&&n.needsTransformForDownstream===!0?(or.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.needsTransformForDownstream=!1):n.booleanWasTransformed===!0&&(Ud.multiplyMatrices(n.matrix,n.booleanMatrixInvOld),or.transformMeshSet(n.booleanMeshSetAddress,Ud),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1);this.meshSetAddresses.push(n.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return or.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new Oi.BufferGeometry,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=or.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}updateGeometry(e){let r=e.parameters;r.operation!==void 0&&(this.booleanOp=r.operation),r.phongAngle!==void 0&&(this.phongAngle=r.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var Fe=require("three");var jd=require("three"),wr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new jd.BoxBufferGeometry(30,30,30),t};var pt=require("three");var yt=require("three"),Ta=new yt.Ray,nc=new yt.Sphere,kd=new yt.Matrix4,Nr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),nc.copy(n.boundingSphere),nc.applyMatrix4(s),e.ray.intersectsSphere(nc)===!1||(kd.copy(s).invert(),Ta.copy(e.ray).applyMatrix4(kd),n.boundingBox!==null&&Ta.intersectsBox(n.boundingBox)===!1))return;let a,l,c,h,p=n.index,u=n.attributes.position,d=n.drawRange,m,g;if(o===!1){let y=Math.max(0,d.start),v=Math.min(p.count,d.start+d.count);for(m=y,g=v;m<g;m+=3)if(l=p.getX(m),c=p.getX(m+1),h=p.getX(m+2),a=x(i,e,Ta,u,l,c,h),a){a.faceIndex=Math.floor(m/3),r.push(a);return}}else{let v=n.attributes.position,P=new yt.Vector3,S=new yt.Vector3,b=new yt.Vector3,B=new yt.Vector3,w=2,D=1/((i.scale.x+i.scale.y+i.scale.z)/3),C=D*D,I=Math.max(0,d.start),L=Math.min(v.count,d.start+d.count);for(let M=I,k=L-1;M<k;M+=w){if(P.fromBufferAttribute(v,M),S.fromBufferAttribute(v,M+1),Ta.distanceSqToSegment(P,S,B,b)>C)continue;B.applyMatrix4(i.matrixWorld);let ne=e.ray.origin.distanceTo(B);ne<e.near||ne>e.far||r.push({distance:ne,point:b.clone().applyMatrix4(i.matrixWorld),object:i})}}function x(y,v,P,S,b,B,w){let f=new yt.Vector3,D=new yt.Vector3,C=new yt.Vector3,I=new yt.Vector3,L=new yt.Vector3;if(f.fromBufferAttribute(S,b),D.fromBufferAttribute(S,B),C.fromBufferAttribute(S,w),P.intersectTriangle(f,D,C,!1,I)===null)return null;L.copy(I),L.applyMatrix4(y.matrixWorld);let k=v.ray.origin.distanceTo(L);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:L.clone(),object:y}}};var La=new pt.Vector3,Yt=new pt.Camera,ic=class extends pt.LineSegments{constructor(e){let r=new pt.BufferGeometry,o=new pt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new pt.Color(15711266),c=new pt.Color(15711266),h=new pt.Color(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,m,g){u(d,g),u(m,g)}function u(d,m){n.push(0,0,0),s.push(m.r,m.g,m.b),a[d]===void 0&&(a[d]=[]),a[d].push(n.length/3-1)}r.setAttribute("position",new pt.Float32BufferAttribute(n,3)),r.setAttribute("color",new pt.Float32BufferAttribute(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;Yt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,s=1,a=o?.8:1e-4;nr("n1",r,e,Yt,-n,-s,a),nr("n2",r,e,Yt,n,-s,a),nr("n3",r,e,Yt,-n,s,a),nr("n4",r,e,Yt,n,s,a);let l=a;nr("f1",r,e,Yt,-n,-s,l),nr("f2",r,e,Yt,n,-s,l),nr("f3",r,e,Yt,-n,s,l),nr("f4",r,e,Yt,n,s,l);let c=l,h=.5;nr("u1",r,e,Yt,n*.7*h,s*1.1,c),nr("u2",r,e,Yt,-n*.7*h,s*1.1,c),nr("u3",r,e,Yt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function nr(i,t,e,r,o,n,s){La.set(o,n,s).unproject(r);let a=t[i];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,h=a.length;c<h;c++)l.setXYZ(a[c],La.x,La.y,La.z)}}var Ia=class extends wr(ic){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){Nr(this.object,this.geometry,e,r,!0)}};var Hd=require("three");var Tn=class extends wr(Hd.DirectionalLightHelper){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,Tn.geometryHelper,e,r)}};var Wd=require("three");var Ln=class extends wr(Wd.AxesHelper){constructor(e,r=15){super(r);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,r){Nr(this.object,Ln.geometryHelper,e,r)}update(){}};var qd=require("three");var In=class extends wr(qd.PointLightHelper){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,In.geometryHelper,e,r)}};var Ma=require("three");var Pa=class extends wr(Ma.SpotLightHelper){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){Nr(this.object,Pa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Pa._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 n=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(n);else this.cone.material.color.set(n)}}},Di=Pa;Di._vector=new Ma.Vector3;var Cr=(i,t)=>class extends i{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 n of this.children)qt(n)&&n.traverseEntity(s=>{Br(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Re(o.color,n)),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 Pn=new Fe.Vector3,sc=new Fe.Vector3,Gr=class extends Cr($t(Fe.Camera),Ia){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=lo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Fe.OrthographicCamera(e*-.5,e*.5,r*.5,r*-.5,n??-5e4,s),this.perspCamera=new Fe.PerspectiveCamera(o,e/r,n??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 Gr().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(Pn),this.targetOffset=Pn.distanceTo(e)}getTarget(e=new Fe.Vector3){return this.getWorldDirection(sc),this.getWorldPosition(Pn),sc.multiplyScalar(this.targetOffset),e.copy(Pn).add(sc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Pn),Pn.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Fe.Quaternion),r=new Fe.Vector3(0,0,1).applyQuaternion(e),o=new Fe.Vector3().copy(Fe.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new Fe.Vector3().copy(Fe.Object3D.DefaultUp).projectOnPlane(r),s=new Fe.Vector3().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Fe.Vector3),n=e.getWorldDirection(new Fe.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Fe.Vector3),n=this.getWorldDirection(new Fe.Vector3).multiplyScalar(this.targetOffset);return{position:r.clone().sub(n),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,n,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,r,o,n,s,a):this.orthoCamera.setViewOffset(e,r,o,n,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}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 ko(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{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};var $d=require("three");var Rr=class extends Cr($t($d.Group),Ln){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}};var bo=require("three");var Mn=class extends Cr($t(bo.DirectionalLight),Tn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let n=new bo.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Mn().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof bo.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof bo.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof bo.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&id(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};var xt=require("three");var An=class extends Cr($t(xt.PointLight),In){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new xt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new xt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new xt.Box3(n,s),l=new xt.Box3Helper(a,new xt.Color(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new An().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof xt.Box3Helper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof xt.Box3Helper&&(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 xt.Box3Helper){let o=this.shadow.camera,n=new xt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new xt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);r.box.set(n,s),r.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};var At=require("three");var Xd=new At.Vector3,Kd=new At.Vector3,Yd=new At.Quaternion,On=class extends Cr($t(At.SpotLight),Di){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=At.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new At.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new On().fromState(r,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof At.CameraHelper&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof At.CameraHelper&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof At.CameraHelper&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Kd.setFromMatrixPosition(this.matrixWorld),Yd.setFromRotationMatrix(this.matrixWorld),Xd.copy(this.up).applyQuaternion(Yd).negate().multiplyScalar(this.distance),this.target.position.copy(Kd).add(Xd),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};var Jd=i=>i.tagName==="VIDEO",Dn=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;Jd(s)?n=s.videoWidth/s.videoHeight:n=s.width/s.height,o>n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*n/o):r.repeat.set(1,1*n/o)),o<n&&(r.imageType=="WEBCAM"?r.repeat.set(1*o/n*-1,1):r.repeat.set(1*o/n,1)),o==n&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1))}static resizeTextureLayer(t,e,r){let o=t/e,n=r.image!==void 0?r.image.width/r.image.height:1,s;o>n?s={x:1,y:n/o}:o<n?s={x:o/n,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,n=o.getLayers();for(let s=0;s<n.length;s++){let a=n[s];hd(a)&&(Dn.resizeTextureLayer(t,e,a.uniforms[`f${a.id}_texture`].value),o.updateLayerUniform())}}static resizeComplex(t,e,r,o){let n=t/e,s,a=r.image;Jd(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e*s/n):r.repeat.set(1/t,1/e*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*n/s*-1,1/e):r.repeat.set(1/t*n/s,1/e)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(1/t*-1,1/e):r.repeat.set(1/t,1/e))):(n>s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1*s/n):r.repeat.set(1,1*s/n)),n<s&&(r.imageType=="WEBCAM"?r.repeat.set(1*n/s*-1,1):r.repeat.set(1*n/s,1)),n==s&&(r.imageType=="WEBCAM"?r.repeat.set(-1,1):r.repeat.set(1,1)))}};var Aa=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&Dn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var _n=class extends it{constructor(e,r){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var Bn=class extends _n{constructor(e,r){super(e,r);this.objectType="NonParametric"}};var Jt=require("three"),Qd=require("three/examples/jsm/loaders/FontLoader.js"),Xe=class extends Jt.Mesh{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new Jt.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:Jt.DoubleSide})){let c=Xe.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r??e,this.fontFamily=o,this.letterSpacing=n,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new Jt.Vector2,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 Xe._fontPath}static set FONTS_PATH(e){Xe._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Jt.Vector3(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=Xe.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=Xe.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=Xe.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 Xe(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Xe.fontCache[e]?r(Xe.fontCache[e]):new Qd.FontLoader().load(Xe.FONTS_PATH+e+".json",s=>{Xe.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Xe.charCache[e]){if(Xe.charCache[e][o]&&Xe.charCache[e][o].fontFamily===r)return Xe.charCache[e][o]}else Xe.charCache[e]={};let n=Xe.fontCache[r],s=n.generateShapes(e,1);return Xe.charCache[e][o]={geometry:new Jt.ShapeBufferGeometry(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},Xe.charCache[e][o]}},Vt=Xe;Vt.charCache={},Vt.fontCache={},Vt._fontPath="/_assets/_fonts/";var Tr=require("three");var ac=require("three"),Oa=new ac.Vector2,So=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new ac.Vector2(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,n){switch(r){case 1:this.leftAlign(t,n);break;case 3:this.centerAlign(this.spaceLeft(e),t,n);break;case 2:this.rightAlign(this.spaceLeft(e),t,n);break;case 4:this.justifyAlign(this.spaceLeft(e),t,n);break}}offsetCharacters(t,e,r){Oa.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Oa),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 n=t/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=n),Oa.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Oa),e)}clone(){let t=new So(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 lc=class extends it{constructor(e){super(e,new rr({transparent:!0,opacity:1,visible:!1,side:Tr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Tr.Object3D,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 Tr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=Js.create({parameters:{width:r.width,height:r.height}}),s=new lc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await Vt.loadFont(o),r.text=e;let n=r.textOrigin,s=new Tr.MeshBasicMaterial({visible:r.visible,transparent:!0,side:Tr.DoubleSide}),a=e.split(`
|
|
1330
|
-
`),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new So(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},m=s.clone();m.color=r.hexColor,m.opacity=r.opacity;let g=new Vt(d,m);return p.addChar3D(g,n),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 n=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof Vt&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??n,l=e.parameters?.height??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!==n&&(n<a?this.checkCapacity():n>a&&this.checkOverFlow())}checkOverFlow(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=r.textFrame.textLines;for(let s=e;s<n.length;s++){n[s].updateYLinePos(this.getNewLinePosition(s)),n[s].fullUpdate(o);let a=[];for(;n[s].checkOverFlow(r.textFrame.maxLineSize);)n[s].containSpaceOverFlow()?a.unshift(n[s].getWord(n[s].message.length-1,-1)):a.unshift(n[s].popChar());if(a.length>0){n[s+1]===void 0?(n[s].isEndLine(!1),this.createTextLine()):n[s].endLine&&(this.createTextLine(s+1),n[s].isEndLine(!1),n[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)n[s+1].addChar3D(a[c][h],o,l),l+=1;n[s+1].fullUpdate(o)}n[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let r=this.userData,o=r.textFrame.textOrigin,n=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(n);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 So(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,n=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<n.length;a++)n[a].updateYLinePos(this.getNewLinePosition(a)),n[a].fullUpdate(o.textOrigin),n[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,n=0;for(let s=0;s<e;s+=1)n+=o[s].maxCharSize*o[s].lineHeight;return n}updateColor(e){let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.color?.isColor&&(l.color=e)}}}updateOpacity(e){let r=this.userData;r.textFrame.opacity=e;let o=r.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].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 n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await Vt.loadFont(e);let o=this.userData.textFrame,n=o.textLines;o.fontFamily=e;for(let s=0;s<n.length;s++){let a=n[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,n=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<n.length;a++)n[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await Vt.loadFont(o.fontFamily);let n=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[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 n=0;n<o.length;n++){let s=o[n].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 n=0;n<o.length;n++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let r=this.userData,o=r.textFrame.textLines;r.textFrame.lineHeight=e;for(let n=0;n<o.length;n++)o[n].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()}fromTextFrameData(e,r){if(e.color!==void 0){let o=Re(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 n=Vt.fontCache[e];for(let s of this.charContainer.children)s instanceof Vt&&n.generateShapes(s.char,1).forEach(a=>{let l=new Ce().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=at.create({shape:l}),h=new rr({side:Tr.DoubleSide});h.color=r;let p=new eo(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},wo=lc;wo.VerticalAlign=hl,wo.HorizontalAlign=cl,wo.TextTransform=pl;var Zd=require("three/examples/jsm/loaders/DRACOLoader.js");var ro;function Wb(){return ro||(ro=new Zd.DRACOLoader,ro.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),ro.decoderPending}async function qb(i){if(ro){let t={attributeIDs:ro.defaultAttributeIDs,attributeTypes:ro.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await ro.decodeGeometry(new Int8Array(i).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 em(i,t){let[e,r]=qa(Bs.deserialize(new Uint8Array(i))),o=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await Wb();for(let n of o){let s=await qb(Xa(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:l,array:c,itemSize:h})=>{a[l]={array:c,itemSize:h,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=a,n.geometry.data.draco=void 0}}return t&&t(e),r.result().data}var cc=new Map,_i={url:"head",time:0,data:null,next:null,prev:null},En={url:"tail",time:1/0,data:null,next:null,prev:null};_i.next=En;En.prev=_i;var tm=0;function wn(i){if(typeof i=="string")return i;let t=Date.now(),e=cc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},cc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=En.prev,e.next=En,En.prev.next=e,En.prev=e,t-tm>1e3*10&&(tm=t+1e3,setTimeout(()=>{let r=Date.now(),o=_i.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),cc.delete(o.data),o=o.next,o.prev=_i,_i.next=o},900)),e.url}var st=require("three");var rm=new rr,Da=class extends Pt{},_a=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new st.WebGLRenderTarget(2048,2048,{generateMipmaps:!0,minFilter:st.LinearMipmapLinearFilter,magFilter:st.LinearFilter,wrapS:st.ClampToEdgeWrapping,wrapT:st.ClampToEdgeWrapping}),this.transmissionRenderTarget.depthTexture=new st.DepthTexture(2048,2048),this.normalRenderTarget=new st.WebGLRenderTarget(1024,1024,{generateMipmaps:!1,minFilter:st.NearestFilter,magFilter:st.NearestFilter,type:st.FloatType}),this.normalRenderTarget.depthTexture=new st.DepthTexture(1024,1024),this.penumbraSizeNode=new tt(5,t.penumbraSize),this.resolutionNode=new lt(1,1),this.pixelRatioNode=new X(window.devicePixelRatio),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,Yl(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}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===rm}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){return this.materials[t]??rm}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=wn(e),!0;{let r=new Image;return r.src=wn(e),r.onload=()=>{this.onImageLoad&&this.onImageLoad()},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){if(this.colors[t]){let r=this.colors[t];return this.colors[t].r=e.r??r.r,this.colors[t].g=e.g??r.g,this.colors[t].b=e.b??r.b,this.colors[t].a=e.a??r.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};var Ft=require("three");var wt=require("three");var sm=Bm(nm());var hc;Qs.then(i=>{hc=i});var am=new wt.Matrix4,$b=new wt.Matrix4,Xb=new wt.Matrix4,ir=new wt.Box3,oo=new wt.Vector3,Kb=new wt.Matrix4,Yb=new wt.Matrix4,Gn=class extends it{constructor(e,r,o,n){super(o??r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new wt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new wt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Kt.build(r.geometry,void 0,void 0,!r.flatShading),l=Ii(r.material,o),c=new Gn(n,s,a||void 0,l);return r.geometry.phongAngle!==void 0&&(c.phongAngle=r.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(r),c}shallowClone(e){return new Bn(this.geometry,this.material).shallowCopy(this,e)}buildFromStore(e,r){let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Kt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,Pi(this),this.cloner)for(let a of this.cloner.children)a.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Kt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Kt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Kt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Kt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,r){this.geometry=this.originalGeometry,it.prototype.raycast.call(this,e,r),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:n,q:s}=(0,sm.SVD)(r),a=am.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=$b.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=Xb.copy(l).transpose();this.shearScale=Kb.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=Yb.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 wt.Sphere);let r=e.attributes.position,o=e.boundingSphere.center;ir.setFromBufferAttribute(r),ir.getCenter(o),e.boundingSphere.radius=o.distanceTo(ir.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ir.getSize(oo);let n={width:oo.x,height:oo.y,depth:oo.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;ir.min.set(e[0],e[2],e[4]),ir.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(ir.min.applyMatrix4(this.shearScaleInv),ir.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new wt.Sphere);let o=r.boundingSphere.center;ir.getCenter(o),r.boundingSphere.radius=o.distanceTo(ir.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ir.getSize(oo);let n={width:oo.x,height:oo.y,depth:oo.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(hc.free_bvh(this.subdivPointer),hc.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,im(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(im(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function im(i,t,e,r){let o=i.position.array,n=i.normal.array,s=am.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=n[h],l=n[h+1],c=n[h+2],n[h]=s[0]*a+s[4]*l+s[8]*c,n[h+1]=s[1]*a+s[5]*l+s[9]*c,n[h+2]=s[2]*a+s[6]*l+s[10]*c}var no=require("three");function lm(i,t){t.flatShading!==void 0&&(i.flatShading=t.flatShading,i.needsUpdate=!0),t.wireframe!==void 0&&(i.wireframe=t.wireframe),t.side!==void 0&&(t.side===0?i.side=no.FrontSide:t.side===1?i.side=no.BackSide:i.side=no.DoubleSide)}function Jb(i,t){if(Array.isArray(i.material))for(let e of i.material)lm(e,t);else{let e=i.material;lm(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function cm(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Gn.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new no.BufferGeometry:wa(t.geometry,e),n="materials"in t?Cd(t.materials,e):Ii(t.material,e);Vs.is2DParametricMesh(o.userData.type)?r=new Aa(o,n):o?.userData.type==="VectorGeometry"?r=new eo(o,n):t.geometry.type==="NonParametricGeometry"?r=new Bn(o,n):t.geometry.type==="BooleanGeometry"?(r=new Ca(void 0,n),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new _n(o,n),r.uuid=i,r.fromState(t,e)}return Jb(r,t),r}function hm(i,t,e){return t.type==="Mesh"?cm(i,t,e):t.type==="TextFrame"?wo.createFromState(i,t,e):t.type==="Empty"?Rr.createFromState(i,t):t.type==="PointLight"?An.createFromState(i,t,e):t.type==="SpotLight"?On.createFromState(i,t,e):t.type==="DirectionalLight"?Mn.createFromState(i,t,e):Ho.is(t.type)?Gr.createFromState(i,t):(console.error(t),new Rr)}var pm=new Ft.Vector3,pc=class extends ea(Ft.Scene){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new Ft.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new Ft.Color(1,0,0);this.bgColor=new Ft.Color(1,1,1);this.entityByUuid={};this.ambientLight=new Ft.HemisphereLight(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=Pd(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=Id(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get 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(Re(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 Gr&&this.switchActiveCamera(o)}this.traverse(o=>{gr(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{Md(r,e)});for(let r of this.children)qt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Gr.createFromState(pc.PERSONAL_CAMERA_ID,{...Us.defaultData,name:"Personal Camera"});return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let r=[],o=n=>{for(let s of n.children)qt(s)&&!s.raycastLock&&s.visible&&((fr(s)||Br(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)qt(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=Re(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){nd(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Re(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 n of e)this.createChildObject(n.id,n.data,n.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,n,s){let a=hm(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),gr(n)&&fr(a)&&(a.prevBooleanObjectParent=n),this.createChildrenObjects(o,a,s)),a}getCenter(e){let r=[];for(let n=0,s=e.length;n<s;++n){let{id:a,recursive:l}=e[n],c=this.find(a),h=l?c.recursiveBBox:c.singleBBox;r.push(...h.vertices)}let o=new Ft.Box3;return o.setFromPoints(r),o.getCenter(pm),pm}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e)?.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof it)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,n;e>=r?(o=r/e,n=1):(o=1,n=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=n})})}},Bi=pc;Bi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var Qb=require("three"),Zb=require("three/examples/jsm/utils/BufferGeometryUtils.js");function um(i){let t;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)t=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=t}var Ei=require("three");function dm(i){let t=new Set;return i.traverse(e=>{if(fr(e))if(Je(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);eS(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Ei.Color,specularColor:new Ei.Color}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(Ei.ShaderLib.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)})}):tS(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function eS(i){return i.userData.layers.getLayersOfType("transmission").length>0}function tS(i){let t=i.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 mm(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function fm(i){let t=[],e=(r,o=0)=>{let n=o>0?r+o:r;return t.includes(n)?e(r,o+1):n};return i.traverse(r=>{if(t.includes(r.name)){let o=r.name,n=e(r.name);if(r.name=n,r.isMesh){let s=r;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,n)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,n))}}t.push(r.name)}),i}var gm=require("three/examples/jsm/utils/BufferGeometryUtils.js");function ym(i){let t=[];return i.traverse(e=>{e instanceof yo&&t.push(e)}),t.forEach(e=>{let r=e.object,o=e.children,n=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&um(l),l}),s=(0,gm.mergeBufferGeometries)(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function xm(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}function vm(i){Object.values(i.shared.materials).forEach(t=>{uc(t)}),i.scene.objects.traverse((t,e)=>{"material"in e?uc(e.material):"materials"in e&&e.materials.forEach(r=>{uc(r)})})}function uc(i){if(typeof i=="string")return;let t=[];i.layers.forEach((e,r)=>{e.type==="outline"&&t.push(r)}),t.reverse().forEach(e=>{i.layers.delete(e)}),t.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var bm="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Ea=class extends Ga.Loader{load(t,e,r,o=console.error){let n=new Ga.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(bm+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(bm),n.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 em(t,vm),r=new _a(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Bi(e.scene,r);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let n=e.scene.publish.playCamera;if(n){let s=o.find(n);s&&od(s)&&Object.assign(s,{makeDefault:!0})}return o=ym(o),o=dm(o),o=mm(o),o=fm(o),o=xm(o),o}};
|
|
1320
|
+
|
|
1321
|
+
// Accumulate alpha as usual
|
|
1322
|
+
float lalpha = alpha * color.a;
|
|
1323
|
+
calpha = lalpha / clamp(lalpha + accumAlpha, 0.00001, 1.0);
|
|
1324
|
+
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
1325
|
+
|
|
1326
|
+
return color.xyz;
|
|
1327
|
+
|
|
1328
|
+
}`,[ht.simplex,e,o,s])}}();var Sr=class{constructor(r,e,t,o){this.type=r;this.id=e;this.uuid=t;this.uniforms={};for(let n in o)this.uniforms[`f${this.id}_${n}`]=o[n]}static create(r,e,t,o){if(t.type==="light")return wr.createLigherLayer(r,e,t,o);if(t.type==="texture"){let n=o.image(t.texture.image),s=new Mi(n,t.texture.wrapping),a=new fa(n),l=new Se.Matrix3().setUvTransform(t.texture.offset[0],t.texture.offset[1],t.texture.repeat[0],t.texture.repeat[1],0,0,0),c=new wn(l),u=new Y(t.crop?1:0),m=new ye(t.projection??0),p=new ye(["x","y","z"].indexOf(t.axis)??0),d=new ye(t.side??0),f=new rt(t.size?new Se.Vector2(t.size[0],t.size[1]):new Se.Vector2(100,100)),g=new Y(t.alpha??1),x=new ye(t.mode??0),y=new Ci(s,a,u,m,p,d,f,c,g,x),v=new Ne(y.calpha,"f");return new nt("texture",r,e,{texture:s,textureSize:a,crop:u,projection:m,axis:p,side:d,size:f,mat:c,alpha:g,mode:x},y,x,v)}else if(t.type==="matcap"){let n=o.image(t.texture.image),s=new Mi(n,t.texture.wrapping),a=new Y(t.alpha??1),l=new ye(t.mode??0),c=new Ai(s,a,l),u=new Ne(c.calpha,"f");return new nt("matcap",r,e,{texture:s,alpha:a,mode:l},c,l,u)}else if(t.type==="displace")if(t.displacementType==="noise"){let n=new pt(new Se.Vector3(...t.offset)),s=new Y(t.scale??10),a=new Y(t.intensity??8),l=new Y(t.movement??1),c=new ye(t.noiseType??0),u=new Ti(a,l,n,s,c);return new _i(t.type,r,e,{offset:n,scale:s,intensity:a,movement:l,noiseType:c},u)}else throw new Error;else{let n=yb(r,e,t,o);for(let s in t)ql(s,n,t);return n}}updateByOp(r,e,t){let o=r;if(o.path[0]===void 0){if(o.type===0)return"type"in o.props||"category"in o.props?!0:yd(o.props,t,this,e)}else if(o.path[0]==="texture")return"texture"in e?Wl(o.props,t,this,e.texture):!0;return!1}dispose(){}hasValueByKey(r){return this.uniforms[r]!==void 0}hasValue(r){return this.hasValueByKey(`f${this.id}_${r}`)}setValue(r,e){let t=`f${this.id}_${r}`;this.hasValueByKey(t)&&e!==void 0&&(this.uniforms[t].value=e)}getValue(r){let e=`f${this.id}_${r}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getName(r){let t=/f\d+_(.*)/.exec(r);if(t&&t.length>1)return t[1];console.log(`Layer.getName: error ${r}`)}getNames(){let r=[];for(let e in this.uniforms){let t=this.getName(e);t&&r.push(t)}return r}},nt=class extends Sr{constructor(e,t,o,n,s,a,l){super(e,t,o,n);this.color=s;this.mode=a;this.alpha=l}},_i=class extends Sr{constructor(e,t,o,n,s){super(e,t,o,n);this.position=s}},wr=class extends Sr{constructor(e,t,o,n){super("light",e,t,{alpha:n.shadingAlpha,mode:n.shadingBlend});this.data=o;this.node=n}static createLigherLayer(e,t,o,n){let s,a=new Y(o.alpha),l=new ye(o.mode);return o.category==="lambert"?(s=new ui,s.emissive=new Ie(n.color(o.emissive)??0)):o.category==="phong"?(s=new da,s.shininess=new Y(o.shininess??30),s.specular=new Ie(n.color(o.specular)??1118481)):o.category==="toon"?(s=new fi,s.shininess=new Y(o.shininess??30),s.specular=new Ie(n.color(o.specular)??1118481)):o.category==="physical"?(s=new mi,s.roughness=new Y(o.roughness??.3),s.metalness=new Y(o.metalness??0),s.reflectivity=new Y(o.reflectivity??.5)):s=new eo,s.alpha=new Y(1),s.shadingAlpha=a,s.shadingBlend=l,new wr(e,t,o,s)}};function vd(i){let r=i instanceof Sr?i.type:i;return r==="texture"||r==="displace_map"||r==="matcap"}function gb(i,r,e,t){switch(i){case"color":{let o=new Ie(t.color??5855577),n=new Y(t.alpha??1),s=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=n;let a=new ye(t.mode??0);return o.alpha=n,new nt(i,r,e,{color:o,alpha:n,mode:a},o,a,s)}case"fresnel":{let o=new Ie(t.color??16777215),n=new Y(t.bias??.1),s=new Y(t.scale??1),a=new Y(t.intensity??2),l=new Y(t.factor??1),c=new Y(t.alpha??1),u=new ye(t.mode??0),m=new yi(o,n,s,a,l,c,u),p=new Ne(m.calpha,"f");return new nt(i,r,e,{color:o,bias:n,scale:s,intensity:a,factor:l,alpha:c,mode:u},m,u,p)}case"rainbow":{let o=new Y(t.filmThickness??30),n=new Y(t.movement??0),s=new pt(t.wavelengths??new Se.Vector3(0,0,0)),a=new Y(t.noiseStrength??0),l=new Y(t.noiseScale??1),c=new pt(t.offset??new Se.Vector3(0,0,0)),u=new Y(t.alpha??1),m=new xi(o,n,s,a,l,c,u),p=new Ne(m.calpha,"f"),d=new ye(t.mode??0);return new nt(i,r,e,{filmThickness:o,movement:n,wavelengths:s,noiseStrength:a,noiseScale:l,offset:c,alpha:u,mode:d},m,d,p)}case"transmission":{let o=new Y(t.thickness??10),n=new Y(t.ior??1.5),s=new Y(t.roughness??.5),a=new rt(t.transmissionSamplerSize??new Se.Vector2(2048,2048)),l=t.transmissionSamplerMap??new Se.Texture,c=t.transmissionDepthMap??new Se.Texture,u=new Pt(l),m=new Pt(c),p=window.innerWidth,d=window.innerHeight,f=p>=d?new rt(d/p,1):new rt(1,p/d),g=new Y(t.alpha??1),x=new bi(o,n,s,a,u,m,f,g),y=new Ne(x.calpha,"f"),v=new ye(t.mode??0);return new nt(i,r,e,{thickness:o,ior:n,roughness:s,transmissionSamplerSize:a,transmissionSamplerMap:u,transmissionDepthMap:m,aspectRatio:f,alpha:g,mode:v},x,v,y)}case"toon":{let o=new ye(t.positioning??0),n;t.colors?n=new Jt(t.colors.length,t.colors):(n=new Jt(10,new Se.Vector4(0,0,0,1)),n.value[1]=new Se.Vector4(1,1,1,1));let s;t.steps?s=new ot(t.steps.length,t.steps):(s=new ot(10,1),s.value[0]=0);let a=new pt(t.source??new Se.Vector3(0,0,0)),l=new to(t.isWorldSpace??!0),c=new Y(t.noiseStrength??0),u=new Y(t.noiseScale??1),m=new Ht(t.shadowColor),p=new pt(t.offset??new Se.Vector3(0,0,0)),d=new Y(t.alpha??1),f=new Oi(o,n,s,a,l,c,u,m,p,d),g=new Ne(f.calpha,"f"),x=new ye(t.mode??0);return new nt(i,r,e,{positioning:o,colors:n,steps:s,source:a,isWorldSpace:l,noiseStrength:c,noiseScale:u,shadowColor:m,offset:p,alpha:d,mode:x},f,x,g)}case"outline":{let o=new Ie(t.outlineColor??16777215),n=new Ie(t.contourColor??16777215),s=new Y(t.outlineWidth??.1),a=new Y(t.contourWidth??.1),l=new Y(t.outlineThreshold??.1),c=new Y(t.contourThreshold??.1),u=new Y(t.outlineSmoothing??.1),m=new Y(t.contourFrequency??.1),p=new pt(t.contourDirections??new Se.Vector3(0,1,0)),d=new to(t.positionalLines??!1),f=new to(t.compensation??!0),g=t.normalMap??new Se.Texture,x=new Pt(g),y=t.depthMap??new Se.Texture,v=new Pt(y),P=t.pixelRatio??new Y(window.devicePixelRatio),S=t.resolution??new rt(new Se.Vector2(1,1)),b=new Y(t.alpha??1),E=new vi(o,n,s,a,l,c,u,m,p,d,f,S,x,v,P,b),w=new Ne(E.calpha,"f"),h=new ye(t.mode??0);return new nt(i,r,e,{outlineColor:o,contourColor:n,outlineWidth:s,contourWidth:a,outlineThreshold:l,contourThreshold:c,outlineSmoothing:u,contourFrequency:m,contourDirection:p,positionalLines:d,compensation:f,resolution:S,normalMap:x,depthMap:v,pixelRatio:P,alpha:b,mode:h},E,h,w)}case"depth":{let o=new ye(t.gradientType??0),n=new to(t.smooth??!1),s=new Y(t.near??50),a=new Y(t.far??200),l=new Y(t.isVector??1),c=new Y(t.isWorldSpace??0),u=new pt(t.origin??new Se.Vector3),m=new pt(t.direction??new Se.Vector3),p=new ye(t.num??0),d;t.colors?d=new Jt(p.value+1,t.colors):(d=new Jt(p.value+1,new Se.Vector4(0,0,0,1)),d.value[1]=new Se.Vector4(1,1,1,1));let f;t.steps?f=new ot(p.value+1,t.steps):(f=new ot(p.value+1,1),f.value[0]=0);let g=new Y(t.alpha??1),x=new ye(t.mode??0),y=new Si(o,n,s,a,l,c,u,m,d,f,p,g),v=new Ne(y.calpha,"f");return new nt(i,r,e,{gradientType:o,smooth:n,near:s,far:a,isVector:l,isWorldSpace:c,origin:u,direction:m,colors:d,steps:f,num:p,alpha:g,mode:x},y,x,v)}case"noise":{let o=new Y(t.scale??1),n=new pt(t.size??new Se.Vector3(100,100,100)),s=new Y(t.move??1),a=new rt(t.fA??new Se.Vector2(1.7,9.2)),l=new rt(t.fB??new Se.Vector2(8.3,2.8)),c=new rt(t.distortion??new Se.Vector2(1,1)),u=new Ht(t.colorA),m=new Ht(t.colorB),p=new Ht(t.colorC),d=new Ht(t.colorD),f=new Y(t.alpha??1),g=new ye(t.mode??0),x=new ye(t.noiseType??0),y=new gi(o,n,s,a,l,c,u,m,p,d,f,x),v=new Ne(y.calpha,"f");return new nt(i,r,e,{scale:o,size:n,move:s,fA:a,fB:l,distortion:c,colorA:u,colorB:m,colorC:p,colorD:d,alpha:f,mode:g,noiseType:x},y,g,v)}case"normal":{let o=new pt(t.cnormal??new Se.Vector3(1,1,1)),n=new Y(t.alpha??1),s=new ye(t.mode??0),a=new Ii(o,n),l=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return l.keywords.alpha=n,new nt(i,r,e,{cnormal:o,alpha:n,mode:s},a,s,l)}case"gradient":{let o=new ye(t.gradientType??0),n=new to(t.smooth??!1),s;t.colors?s=new Jt(t.colors.length,t.colors):(s=new Jt(10,new Se.Vector4(0,0,0,1)),s.value[1]=new Se.Vector4(1,1,1,1));let a;t.steps?a=new ot(t.steps.length,t.steps):(a=new ot(10,1),a.value[0]=0);let l=new rt(t.offset??new Se.Vector2(0,0)),c=new rt(t.morph??new Se.Vector2(0,0)),u=new Y(t.angle??0),m=new Y(t.alpha??1),p=new ye(t.mode??0),d=new Ni(o,n,s,a,l,c,u,m),f=new Ne(d.calpha,"f");return new nt(i,r,e,{gradientType:o,smooth:n,colors:s,steps:a,offset:l,morph:c,angle:u,alpha:m,mode:p},d,p,f)}default:{let o=new Ie(1,0,0,1),n=new Y(1),s=new Ne("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");s.keywords.alpha=n;let a=new ye(0);return o.alpha=n,new nt(i,r,e,{color:o,alpha:n,mode:a},o,a,s)}}}function yb(i,r,e,t){let o=dd(e,t);return gb(e.type,i,r,o)}function ql(i,r,e){if(e.type==="displace"&&(i==="intensity"||i==="visible")){let t=r.uniforms[`f${r.id}_intensity`];return t?(t.value=e.intensity*(e.visible?1:0),t):void 0}if(e.type!=="displace"&&(i==="alpha"||i==="visible")){let t=r.uniforms[`f${r.id}_alpha`];if(!t)return;if(t.value=e.alpha*(e.visible?1:0),e.type==="outline"&&i=="visible"){let o=r.uniforms[`f${r.id}_compensation`];o&&(o.value=e.compensation&&e.visible)}return t}}var Zt=class extends ha.ShaderMaterial{constructor(e,t){super(void 0);this.data=e;this.layerIdGen=0;this.type="NodeMaterial";this.uniformsBackup={};this.fog=!0,this.updaters=[],this.dithering=!0,this.vertexColors=!0,this.onBeforeCompile=this._onBeforeCompile;let o=e.layers??_r.defaultTwoLayerData("phong").layers;this.layers=o.map(n=>Sr.create(this.layerIdGen++,n.id,n.data,t)),this.layers.reverse(),this.name=e.name??"Untitled Material",this.onUpdate(t)}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.data.category}getLayersOfType(e){return this.layers.filter(t=>t.type===e)}getLayerByUuid(e){return this.layers.find(t=>t.uuid===e)}onUpdate(e){this.lightLayer=this.layers.find(t=>t instanceof wr),this.lightLayer===void 0&&(this.lightLayer=new wr(0,"",Xr.defaultData("light","basic"),new eo)),this.lightLayer.node instanceof eo||(this.lightLayer.node.penumbraSize=e.penumbraSizeNode),this.dispose(),this.needsUpdate=!0,this.blendColors(),this.blendAfterColors(),this.blendPositions()}updateByOp(e,t,o){if(this.data=t,e.path[0]==="layers"){let n=e.path[1];if(n===void 0){if(this.layers.reverse(),e.type===4){let s=Sr.create(this.layerIdGen++,e.id,e.data,o);this.layers.splice(e.localIndex,0,s)}else if(e.type===5)this.layers.splice(e.localIndex,1)[0].dispose();else if(e.type===6){let s=this.layers.findIndex(l=>l.uuid===e.id),a=this.layers[s];this.layers.splice(s,1),this.layers.splice(e.localIndex,0,a)}this.layers.reverse(),this.onUpdate(o)}else{let s=this.layers.find(a=>a.uuid===n);if(s){let a=t.layers.data(n);if(s.updateByOp({...e,path:e.path.slice(2)},a,o)){let c=Sr.create(this.layerIdGen++,n,a,o);this.layers.splice(this.layers.findIndex(u=>u.uuid===n),1,c),this.onUpdate(o)}}}}}blendColors(){let e=this.layers.findIndex(o=>o instanceof nt),t=this.layers.findIndex(o=>o instanceof wr);if(e!==-1&&e<t){let o=this.layers[e].color;for(let n=e+1;n<t;++n){let s=this.layers[n];s instanceof nt&&(o=new wi(o,s.color,s.alpha,s.mode))}this.fragment.color=o}else this.fragment.color=void 0}blendAfterColors(){let e=new Ne("outgoingLight","f"),t=this.layers.findIndex(o=>o instanceof wr);if(this.layers.length>t+1){for(let o=t+1;o<this.layers.length;++o){let n=this.layers[o];n instanceof nt&&(e=new wi(e,n.color,n.alpha,n.mode))}this.fragment.afterColor=e}else this.fragment.afterColor=void 0}blendPositions(){let e=this.layers.filter(t=>t instanceof _i);if(e.length>0){let t=e[0].position;for(let o=1;o<e.length;++o)e[o]&&(t=new At(t,e[o].position,At.ADD),t=new At(t,new Y(.5).setReadonly(!0),At.MUL));this.fragment.position=t}else this.fragment.position=void 0}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,t){this.build({renderer:t}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}clampUniformsForPreview(e,t){let o=(n,s,a)=>Math.min(Math.max(n,s),a);for(let n of this.layers)if(n.type==="displace"){this.uniformsBackup[`f${n.id}_intensity`]=n.uniforms[`f${n.id}_intensity`].value;let s=o(n.uniforms[`f${n.id}_intensity`].value,e,t);n.uniforms[`f${n.id}_intensity`].value=s}}restoreClampedUniforms(){for(let e of this.layers)e.type==="displace"&&(e.uniforms[`f${e.id}_intensity`].value=this.uniformsBackup[`f${e.id}_intensity`])}customProgramCacheKey(){return this.getHash()}updateFrame(e){for(let t=0;t<this.updaters.length;++t)e.updateNode(this.updaters[t])}build(e){e=e??{};let t=e.builder??new pa;return this.lights=this.lightLayer.data.category!=="basic",t.setMaterial(this,e.renderer),t.build(this.fragment,this.fragment),this.vertexShader=t.getCode("vertex"),this.fragmentShader=t.getCode("fragment"),this.defines=t.defines,this.uniforms=t.uniforms,this.extensions=t.extensions,this.updaters=t.updaters,this.transparent=t.requires.transparent||this.blending>ha.NormalBlending,this}dispose(){this.layers.forEach(e=>e.dispose()),super.dispose()}getHash(){let e="{";return e+='"fragment":'+this.fragment.getHash(),e+="}",e}};Object.defineProperties(Zt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});var To=class extends Zt{};var Ue=require("three");function bb(i,r){r.uniforms[`f${r.id}_transmissionSamplerMap`].value=i.texture,r.uniforms[`f${r.id}_transmissionDepthMap`].value=i.depthTexture}function Sb(i,r){r.uniforms[`f${r.id}_normalMap`].value=i.texture,r.uniforms[`f${r.id}_depthMap`].value=i.depthTexture}function wb(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let r=new Map,e=i.geometry.attributes.position.array,t=i.geometry.attributes.normal.array,o=new Float32Array(e.length);for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=new Ue.Vector3(t[n],t[n+1],t[n+2]);r.has(s)?r.get(s)?.normals.push(a):r.set(s,{normals:[a],result:new Ue.Vector3})}r.forEach((n,s)=>{for(let a of n.normals)n.result.add(a);n.result.divideScalar(n.normals.length)});for(let n=0;n<e.length;n+=3){let s=`${e[n]}_${e[n+1]}_${e[n+2]}`,a=r.get(s)?.result;a&&(o[n]=a.x,o[n+1]=a.y,o[n+2]=a.z)}i.geometry.setAttribute("extrudeNormal",new Ue.Float32BufferAttribute(o,3))}function Tb(i){if(i.geometry.attributes.extrudeNormals||!i.geometry.attributes.position)return;let r=i.geometry.attributes.position.array,e=new Float32Array(r.length),t=new Ue.Vector3;for(let o=0;o<r.length;o+=3)t.set(r[o],r[o+1],r[o+2]).normalize(),e[o]=t.x,e[o+1]=t.y,e[o+2]=t.z;i.geometry.setAttribute("extrudeNormal",new Ue.Float32BufferAttribute(e,3))}function No(i){if(i.objectType!=="TextFrame"){if(Array.isArray(i.material)){for(let r of i.material)if(r.getLayersOfType("outline").length===0)return}else if(i.material.getLayersOfType("outline").length===0)return;i.objectType==="Mesh2D"?Tb(i):wb(i)}}function Co(i){if(!i.geometry.attributes.position)return;let r=i.geometry.attributes.position.array,e=new Float32Array(r.length),t=parseInt(i.uuid.replace(/\D/g,"")),o=[Ue.MathUtils.seededRandom(t),Ue.MathUtils.seededRandom(t+1e4),Ue.MathUtils.seededRandom(t+2e4)];for(let n=0;n<r.length;n++)e[n]=o[n%3];i.geometry.setAttribute("randomColor",new Ue.BufferAttribute(e,3))}function bd(i,r,e){let t=!1,o=e.getLayersOfType("transmission"),n=e.getLayersOfType("outline");return n.length>0&&(r.layers.set(8),o.length===0&&r.layers.enable(3),t=!0,i!==void 0&&n.forEach(s=>Sb(i,s)),Co(r),No(r)),o.length===0&&n.length===0&&r.layers.set(0),t}function Sd(i,r,e){if(!e.layers)return!1;let t=!1,o=e.getLayersOfType("transmission"),n=e.getLayersOfType("outline");return o.length>0&&(r.layers.set(3),n.length>0&&r.layers.enable(8),t=!0,i!==void 0&&o.forEach(s=>bb(i,s))),o.length===0&&n.length===0&&r.layers.set(0),t}function wd(i,r){let e=!1;return r.traverseEntity(t=>{if(t instanceof Ue.Mesh&&t.objectType!=="TextFrame")if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)bd(i,t,t.material[o])&&(e=!0);else bd(i,t,t.material)&&(e=!0)}),e}function Td(i,r){let e=!1;return r.traverseEntity(t=>{if(t instanceof Ue.Mesh)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)Sd(i,t,t.material[o])&&(e=!0);else Sd(i,t,t.material)&&(e=!0)}),e}function Nd(i){"material"in i&&Nb(i.material),"geometry"in i&&i.geometry.dispose()}function Nb(i){mc(i).forEach(r=>{r instanceof To||r.dispose()})}var Cb=new Ue.Raycaster,Lb=new Ue.Matrix4,Ib=new Ue.Ray;function Cd(i,r,e){let t=i.cloner;if(t)for(let o of t.children){let n=Lb.copy(o.matrixWorld).invert(),s=Ib.copy(r.ray).applyMatrix4(n),a=i.matrixWorld;s.applyMatrix4(a);let l=Cb;l.set(s.origin,s.direction),l.near=r.near,l.far=r.far,l.intersectObject(i,!1).length>0&&e.push({object:i})}}var lt=class extends kt(ga.Mesh){constructor(e,t){super(e,t);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new ga.Matrix4;this.booleanExclude=null;Array.isArray(t)&&e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0)}get isGroup(){return this._cloner?.parameters.hideBase===!0}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}updateGeometry(e){let t=this.geometry,o=Yl[t.userData.type],n=this.objectType==="NonParametric"?Object.assign({},t.userData,{geometry:t}):t.userData,s=o.build(o.normalizeInputs(e,n)),a=t.uuid;this.geometry.dispose(),this.geometry=s,this.geometry.uuid=a,this.geometry.computeBoundingSphere(),No(this),t.getAttribute("randomColor")&&Co(this)}clone(e){let t=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=Di(t),n=this.material;return new this.constructor(o,n).copy(this,e)}copy(e,t=!0){return super.copy(e,t),e.cloner&&(this.cloner=new vo(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new vo(this)),this.cloner.fromClonerState(e))}fromState(e,t){return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=e.castShadow??!0,this.receiveShadow=e.receiveShadow??!0,this.booleanExclude=e.booleanExclude??null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(er.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),fr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)dr(e)&&(e.freeBooleanPointer(),fr(e)&&e.invalidateUpstreamBooleanData())}};var Pb=new no.Vector3(0,0,1),Ld=new no.Vector3,Id=new no.Vector3,Pd=new no.Matrix3,Ln=class extends lt{constructor(e=bt.create({}),t){super(e,t);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new no.EventDispatcher;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let t=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:t})}}setShape(e){this.shape&&this.shape.eventDispatcher?.removeEventListener("update",this._onShapeUpdate),this.shape=e,this.shape.eventDispatcher?.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),Pd.getNormalMatrix(this.matrixWorld),Ld.copy(Pb).applyMatrix3(Pd).normalize(),Id.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Ld,Id)}clone(e){let t=this.shape.clone(),o=this.material,n=this.geometry.userData,s=bt.create(Object.assign({},n,{shape:t})),a=new Ln(s,o).copy(this,e);return a.shape=t,t.update(),a}raycast(e,t){lt.prototype.raycast.call(this,e,t)}};function ya(i,r){return Ab(i)}function Ab(i){let r={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let t=Le.createFromState(i.shape,i.width,i.height);r.shape=t}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(t=>t.materialIndex=Math.max(t.materialIndex??0,0)),r.geometry=new Ad.BufferGeometryLoader().parse(i));let e;try{e=Di(r)}catch(t){console.error(t)}if(!e){let t=Le.createFromState(on.defaultData(),100,100);r.shape=t,e=Di(r)}return e}var me;na.then(i=>{me=i});var Md=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Od=new Uint32Array([0,1,2,3]),_d=new Uint8Array([4]),Wt=class{static build(i,r,e,t,o){let n,s,a,l=i?.phongAngle??r?.phongAngle??35;if(t===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(me.free_bvh(e),me.free_subdivision_surface(e));try{n=Wt.allocate(i,o)}catch(c){console.error(c,i),n=Wt.allocate({positionWASM:Md,indexWASM:Od,verticesPerFaceWASM:_d},o)}me.set_destination_refinement_level(n,0),s=Wt.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=Wt.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(me.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Wt.buildLevel(n,!1,l):a=null),{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}}static primitiveToQuads(i,r){i.widthSegments>16&&(i.widthSegments=16),i.heightSegments>16&&(i.heightSegments=16),i.depthSegments>16&&(i.depthSegments=16),i.radialSegments>16&&(i.radialSegments=16),i.type==="DodecahedronGeometry"&&(i.detail=0);let e=i.shape!==void 0?r.geometry:ya(i),t,o,n,s;return{positions:t,triIndices:s}=Zl(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=ec(t,s,e),{positions:t,indices:o,verticesPerFace:n}}static allocate(i,r){let e,t,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,t=i.indexWASM,o=i.verticesPerFaceWASM):(e=Md,t=Od,o=_d);let a=e.length,l=t.length,c=o.length,u=e.length+n.length+s.length,m=t.length+o.length,p=u*Float32Array.BYTES_PER_ELEMENT+m*Uint32Array.BYTES_PER_ELEMENT,d=u*Float32Array.BYTES_PER_ELEMENT,f=m*Uint32Array.BYTES_PER_ELEMENT,g=me._malloc(p),x=new Float32Array(me.HEAPF32.buffer,g,u),y=new Uint32Array(me.HEAPU32.buffer,g+d,m);x.set(e,0),x.set(n,e.length),x.set(s,e.length+n.length),y.set(t,0),y.set(o,t.length);let v;i?.scaleBaked?.some(S=>S!==1)&&(v=new He.Matrix4().makeScale(...i.scaleBaked)),r&&(v?v.premultiply(r):v=r);let P=v?me.alloc_subdivision_surface2(g,a,g+d,l,g+d+t.length*Uint32Array.BYTES_PER_ELEMENT,c,v.elements):me.alloc_subdivision_surface(g,a,g+d,l,g+d+t.length*Uint32Array.BYTES_PER_ELEMENT,c);return me._free(g),P}static buildLevel(i,r,e,t,o){let n=o?me.get_mesh_data2(i,r?me.Level.CONTROL:me.Level.REFINED,e,o.elements):me.get_mesh_data(i,r?me.Level.CONTROL:me.Level.REFINED,e),s=8,a=me.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,u=me.HEAPU32[a[c]>>2],m=me.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=me.HEAPU32[a[c]>>2],d=me.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let f=me.HEAPU32[a[c]>>2],g=me.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let x=me.HEAPU32[a[c]>>2],y=me.HEAPU32.subarray(x>>2,(x>>2)+l[c]);if(c++,t===void 0){let v=new He.BufferGeometry;if(v.setIndex(new He.Uint32BufferAttribute(y,1)),v.setAttribute("position",new He.Float32BufferAttribute(m,3)),v.setAttribute("normal",new He.Float32BufferAttribute(d,3)),r){v.setAttribute("faceMap",new He.Uint32BufferAttribute(g,1));let P=new Float32Array(d.length/3*4).fill(0);v.setAttribute("color",new He.BufferAttribute(P,4))}return me.free_mesh_data(n),v.userData.type="SubdivGeometry",v}t.getAttribute("position").copyArray(m),t.getAttribute("normal").copyArray(d),t.attributes.position.needsUpdate=!0,t.attributes.normal.needsUpdate=!0,me.free_mesh_data(n)}static buildControlCageWireframe(i,r,e){let t=me.get_wireframe_data_for_base_level(i),o=4,n=me.HEAPU32.subarray(t>>2,(t>>2)+o),s=n.subarray(2,2+2),a=0,l=me.HEAPU32[n[a]>>2],c=me.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let u=me.HEAPU32[n[a]>>2],m=me.HEAPU32.subarray(u>>2,(u>>2)+s[a]);if(r===void 0){let p=new He.BufferGeometry;p.setAttribute("position",new He.Float32BufferAttribute(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 p.setAttribute("color",new He.BufferAttribute(d,3)),p.setIndex(new He.Uint32BufferAttribute(m,1)),me.free_wireframe_data_for_base_level(t),p}r.getAttribute("position").copyArray(c),r.attributes.position.needsUpdate=!0,me.free_wireframe_data_for_base_level(t)}static updateCollabMesh(i,r,e){r||me.set_destination_refinement_level(i,1);let t=e?me.get_topological_data2(i,r?me.Level.CONTROL:me.Level.REFINED,e.elements):me.get_topological_data(i,r?me.Level.CONTROL:me.Level.REFINED),o=6,n=me.HEAPU32.subarray(t>>2,(t>>2)+o),s=n.subarray(3,3+3),a=0,l=me.HEAPU32[n[a]>>2],c=new Float32Array(me.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let u=me.HEAPU32[n[a]>>2],m=new Uint32Array(me.HEAPU32.subarray(u>>2,(u>>2)+s[a]));a++;let p=me.HEAPU32[n[a]>>2],d=new Uint8Array(me.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return me.free_topological_data(t),{positions:c,indices:m,verticesPerFace:d}}};var Dd=["getX","getY","getZ"];function Zl(i,r){let e={},t=r?r.count:i.count,o=0,n=[],s=[],a=1e4;for(let c=0;c<t;c++){let u=r?r.getX(c):c,m="";for(let p=0;p<3;p++)m+=`${~~(i[Dd[p]](u)*a)},`;if(m in e)n.push(e[m]);else{for(let p=0;p<3;p++)s.push(i[Dd[p]](u));e[m]=o,n.push(o),o++}}let l=[];for(let c=0;c<n.length;c+=3)n[c]===n[c+1]||n[c]===n[c+2]||n[c+1]===n[c+2]||l.push(n[c],n[c+1],n[c+2]);return{positions:s,triIndices:l}}var xa=new He.Vector3,Kl=new He.Vector3,Ql=new He.Vector3,Jl=new He.Vector3;function ec(i,r,e){let t=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0&&e.userData.shape.shapeHoles.length===0){let n=e.userData.shape.extractShapePointsToFlatArray([]),s=0;for(let l=0;l<n.length;l+=2)s+=(n[l]-n[(l===0?n.length:l)-2])*(n[l+1]+n[(l===0?n.length:l)-1]);i.length=0;let a=0;if(s<0)for(let l=0;l<n.length;l+=2)i.push(n[l],n[l+1],0),t.push(a++);else for(let l=n.length-2;l>=0;l-=2)i.push(n[l],n[l+1],0),t.push(a++);return o.push(a),{indices:t,verticesPerFace:o}}for(let n=0,s=e.capStartIndex??r.length;n<s;)if(r[n+1]===r[n+3]&&r[n+2]===r[n+5]||r[n+0]===r[n+3]&&r[n+2]===r[n+4]){xa.set(i[r[n]*3],i[r[n]*3+1],i[r[n]*3+2]),Kl.set(i[r[n+1]*3],i[r[n+1]*3+1],i[r[n+1]*3+2]),Ql.set(i[r[n+4]*3],i[r[n+4]*3+1],i[r[n+4]*3+2]),Jl.set(i[r[n+5]*3],i[r[n+5]*3+1],i[r[n+5]*3+2]),Kl.sub(xa).normalize(),Ql.sub(xa).normalize(),Jl.sub(xa).normalize();let a=Kl.cross(Ql).dot(Jl);Math.abs(a)>.005?(t.push(r[n],r[n+1],r[n+2]),o.push(3),n+=3):(t.push(r[n],r[n+1],r[n+4],r[n+5]),o.push(4),n+=6)}else t.push(r[n],r[n+1],r[n+2]),o.push(3),n+=3;if(e.capStartIndex!==void 0){let n=[],s=[],a=0;for(let l=0,c=0;l<i.length;l+=3,c++)i[l+2]===0&&(n.push(c),a++),i[l+2]===e.userData.parameters.depth&&s.push(c);if(e.userData.parameters.extrudeBevelSize===0){let l=s[0];s[0]=s[1],s[1]=l}n.reverse(),t.push(...n,...s),o.push(a,a)}return{indices:t,verticesPerFace:o}}var er={};uc(er,{calcBoolean:()=>Db,calcBooleanTopological:()=>_b,freeMeshSet:()=>Gb,getMeshSet:()=>Eb,transformMeshSet:()=>Bb});var Mb,Ed=new Promise(i=>{Mb=i});var Ei=require("three");var xe,In;Ed.then(i=>xe=i);function Ob(i,r){let e,{positions:t,triIndices:o}=Zl(i.getAttribute("position"),i.getIndex()),n;if(r){let{indices:s,verticesPerFace:a}=ec(t,o,i);n=a.length,e=[];for(let l=0,c=0;l<n;l++){e.push(a[l]);for(let u=0;u<a[l];u++)e.push(s[c++])}}else{let s=o.length;e=Array(s+s/3),n=0;for(let a=0,l=0;l<e.length;)e[l++]=3,n++,e[l++]=o[a++],e[l++]=o[a++],e[l++]=o[a++]}return{positions:t,faceIndices:e,nFaces:n}}function Bd(i){let r=i.length,e=r*Uint32Array.BYTES_PER_ELEMENT,t=r*Float32Array.BYTES_PER_ELEMENT,o=Number.isInteger(i[0])?e:t,n=xe._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(xe.HEAPU32.buffer,n,r):new Float32Array(xe.HEAPF32.buffer,n,r)).set(i,0),n}function Gd(i){switch(i){case 0:return xe.OP.UNION;case 1:return xe.OP.INTERSECTION;case 2:return xe.OP.A_MINUS_B;case 3:return xe.OP.B_MINUS_A;case 4:return xe.OP.SYMMETRIC_DIFFERENCE;case 5:return xe.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function _b(i,r){In===void 0&&(In=xe.init_csg());let e=Bd(i),t=xe.csg_calc_topological(In,e,i.length,Gd(r));xe._free(e);let o=6,n=xe.HEAPU32.subarray(t>>2,(t>>2)+o),s=n.subarray(3,3+3),a=0,l=xe.HEAPU32[n[a]>>2],c=new Float32Array(xe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let u=xe.HEAPU32[n[a]>>2],m=new Uint32Array(xe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));a++;let p=xe.HEAPU32[n[a]>>2],d=new Uint8Array(xe.HEAPU32.subarray(p>>2,(p>>2)+s[a]));return xe.free_mesh_data(t),{positions:c,indices:m,verticesPerFace:d}}function Db(i,r,e,t){In===void 0&&(In=xe.init_csg());let o=Bd(i),n=xe.csg_calc(In,o,i.length,t,Gd(r));xe._free(o);let s=5,a=xe.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,u=xe.HEAPU32[a[c]>>2],m=xe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let p=xe.HEAPU32[a[c]>>2],d=xe.HEAPF32.subarray(p>>2,(p>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new Ei.Float32BufferAttribute(m,3)),e.setAttribute("normal",new Ei.Float32BufferAttribute(d,3));let g=xe.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new Ei.Sphere),e.boundingSphere.center.set(g[0],g[1],g[2]),e.boundingSphere.radius=(g[3]**2+g[4]**2+g[5]**2)**.5,e.userData.parameters={width:g[3]*2,height:g[4]*2,depth:g[5]*2},xe.free_mesh_data(n),f}function Eb(i,r){if(xe===void 0)return-1;let e,t,o;if(r&&i.userData.positions!==void 0){let g=i.userData;o=g.verticesPerFace.length,e=g.positions,t=Array(g.verticesPerFace.reduce((x,y)=>x+y,0)+o);for(let x=0,y=0,v=0;x<g.verticesPerFace.length;x++){t[v++]=g.verticesPerFace[x];for(let P=0;P<g.verticesPerFace[x];P++)t[v++]=g.indices[y++]}}else({positions:e,faceIndices:t,nFaces:o}=Ob(i,r));let n=e.length,s=t.length,a=e.length,l=t.length,c=a*Float32Array.BYTES_PER_ELEMENT+l*Uint32Array.BYTES_PER_ELEMENT,u=a*Float32Array.BYTES_PER_ELEMENT,m=l*Uint32Array.BYTES_PER_ELEMENT,p=xe._malloc(c),d=new Float32Array(xe.HEAPF32.buffer,p,a),f=new Uint32Array(xe.HEAPU32.buffer,p+u,l);return d.set(e,0),f.set(t,0),xe.get_csg_mesh(p,n,p+u,s,o)}function Bb(i,r){xe.transform_csg_mesh(i,r.elements)}function Gb(i){xe.free_csg_mesh(i)}var Yl={ConeGeometry:im,CubeGeometry:sm,CylinderGeometry:om,DodecahedronGeometry:lm,EllipseGeometry:Mm,HelixGeometry:Em,IcosahedronGeometry:Gm,LatheGeometry:Rm,NonParametricGeometry:zm,PolygonGeometry:Vm,PyramidGeometry:Fm,RectangleGeometry:Um,SphereGeometry:km,PlaneGeometry:Wm,BackdropGeometry:qm,StarGeometry:$m,TextFrameGeometry:oa,TorusGeometry:Ym,TorusKnotGeometry:Qm,TriangleGeometry:Jm,VectorGeometry:bt},Di=i=>Yl[i.type].create(i);var Bi=require("three");var Rd=new Bi.Matrix4;var va=class extends lt{constructor(e=new Bi.BufferGeometry,t){super(e,t);this.booleanOp=2;this.phongAngle=35;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 n=this.children[o];fr(n)&&n.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let o=0;o<this.children.length;o++){let n=this.children[o];if(nd(n)&&n.booleanExclude===!1&&n.geometry.attributes.position?.count>0&&n.geometry.drawRange.count>0){if(n.booleanMeshSetAddress===-1){if(n.booleanMeshSetAddress=er.getMeshSet(n.geometry,e===!0),n.booleanMeshSetAddress===-1)return;er.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1}else fr(n)&&n.needsTransformForDownstream===!0?(er.transformMeshSet(n.booleanMeshSetAddress,n.matrix),n.needsTransformForDownstream=!1):n.booleanWasTransformed===!0&&(Rd.multiplyMatrices(n.matrix,n.booleanMatrixInvOld),er.transformMeshSet(n.booleanMeshSetAddress,Rd),n.booleanMatrixInvOld.copy(n.matrix).invert(),n.booleanWasTransformed=!1);this.meshSetAddresses.push(n.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return er.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let t=this.geometry;t.dispose(),this.geometry=new Bi.BufferGeometry,this.geometry.userData=t.userData,this.geometry.boundingSphere=t.boundingSphere;try{this.booleanMeshSetAddress=er.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(o){this.booleanMeshSetAddress=0,console.error(o)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0,No(this),Co(this)}updateGeometry(e){let t=e.parameters;t.operation!==void 0&&(this.booleanOp=t.operation),t.phongAngle!==void 0&&(this.phongAngle=t.phongAngle),this.invalidateDownstreamBooleanData().recomputeBoolean()}};var Ge=require("three");var zd=require("three"),Tr=i=>{var r;return r=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},r.geometryHelper=new zd.BoxBufferGeometry(30,30,30),r};var mt=require("three");var gt=require("three"),ba=new gt.Ray,tc=new gt.Sphere,Vd=new gt.Matrix4,Nr=(i,r,e,t,o=!1)=>{let n=r,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),tc.copy(n.boundingSphere),tc.applyMatrix4(s),e.ray.intersectsSphere(tc)===!1||(Vd.copy(s).invert(),ba.copy(e.ray).applyMatrix4(Vd),n.boundingBox!==null&&ba.intersectsBox(n.boundingBox)===!1))return;let a,l,c,u,m=n.index,p=n.attributes.position,d=n.drawRange,f,g;if(o===!1){let y=Math.max(0,d.start),v=Math.min(m.count,d.start+d.count);for(f=y,g=v;f<g;f+=3)if(l=m.getX(f),c=m.getX(f+1),u=m.getX(f+2),a=x(i,e,ba,p,l,c,u),a){a.faceIndex=Math.floor(f/3),t.push(a);return}}else{let v=n.attributes.position,P=new gt.Vector3,S=new gt.Vector3,b=new gt.Vector3,E=new gt.Vector3,w=2,_=1/((i.scale.x+i.scale.y+i.scale.z)/3),N=_*_,I=Math.max(0,d.start),L=Math.min(v.count,d.start+d.count);for(let A=I,k=L-1;A<k;A+=w){if(P.fromBufferAttribute(v,A),S.fromBufferAttribute(v,A+1),ba.distanceSqToSegment(P,S,E,b)>N)continue;E.applyMatrix4(i.matrixWorld);let ne=e.ray.origin.distanceTo(E);ne<e.near||ne>e.far||t.push({distance:ne,point:b.clone().applyMatrix4(i.matrixWorld),object:i})}}function x(y,v,P,S,b,E,w){let h=new gt.Vector3,_=new gt.Vector3,N=new gt.Vector3,I=new gt.Vector3,L=new gt.Vector3;if(h.fromBufferAttribute(S,b),_.fromBufferAttribute(S,E),N.fromBufferAttribute(S,w),P.intersectTriangle(h,_,N,!1,I)===null)return null;L.copy(I),L.applyMatrix4(y.matrixWorld);let k=v.ray.origin.distanceTo(L);return k<v.near||k>v.far?null:{faceIndex:1,distance:k,point:L.clone(),object:y}}};var Sa=new mt.Vector3,qt=new mt.Camera,rc=class extends mt.LineSegments{constructor(e){let t=new mt.BufferGeometry,o=new mt.LineBasicMaterial({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new mt.Color(15711266),c=new mt.Color(15711266),u=new mt.Color(2857471);m("n1","n2",l),m("n2","n4",l),m("n4","n3",l),m("n3","n1",l),m("f1","f2",l),m("f2","f4",l),m("f4","f3",l),m("f3","f1",l),m("n1","f1",l),m("n2","f2",l),m("n3","f3",l),m("n4","f4",l),m("p","n1",c),m("p","n2",c),m("p","n3",c),m("p","n4",c),m("u1","u2",u),m("u2","u3",u),m("u3","u1",u);function m(d,f,g){p(d,g),p(f,g)}function p(d,f){n.push(0,0,0),s.push(f.r,f.g,f.b),a[d]===void 0&&(a[d]=[]),a[d].push(n.length/3-1)}t.setAttribute("position",new mt.Float32BufferAttribute(n,3)),t.setAttribute("color",new mt.Float32BufferAttribute(s,3));super(t,o);this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update()}update(){let e=this.geometry,t=this.pointMap,o=!0;qt.projectionMatrixInverse.elements=[.5112609807824982,-0,-0,-0,-0,.41421356237309503,-0,-0,-0,-0,-0,-.099999,-0,-0,-1.0000000000000002,.100001];let n=1,s=1,a=o?.8:1e-4;tr("n1",t,e,qt,-n,-s,a),tr("n2",t,e,qt,n,-s,a),tr("n3",t,e,qt,-n,s,a),tr("n4",t,e,qt,n,s,a);let l=a;tr("f1",t,e,qt,-n,-s,l),tr("f2",t,e,qt,n,-s,l),tr("f3",t,e,qt,-n,s,l),tr("f4",t,e,qt,n,s,l);let c=l,u=.5;tr("u1",t,e,qt,n*.7*u,s*1.1,c),tr("u2",t,e,qt,-n*.7*u,s*1.1,c),tr("u3",t,e,qt,0,s*(1.1+.9*u),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function tr(i,r,e,t,o,n,s){Sa.set(o,n,s).unproject(t);let a=r[i];if(a!==void 0){let l=e.getAttribute("position");for(let c=0,u=a.length;c<u;c++)l.setXYZ(a[c],Sa.x,Sa.y,Sa.z)}}var wa=class extends Tr(rc){constructor(e){super(e);this.object=e;this.object=e,this.name=`CombinedCameraHelper: ${e.uuid}`}updateMatrixWorld(e){super.updateMatrixWorld(e),this.updateTarget()}updateTarget(){let e=this.object.getTarget();this.updateWorldMatrix(!0,!1),this.worldToLocal(e)}raycast(e,t){Nr(this.object,this.geometry,e,t,!0)}};var Fd=require("three");var Pn=class extends Tr(Fd.DirectionalLightHelper){constructor(e,t=15,o=10066329){super(e,t,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,Pn.geometryHelper,e,t)}};var Ud=require("three");var An=class extends Tr(Ud.AxesHelper){constructor(e,t=15){super(t);this.object=e;this.object.updateMatrixWorld(),this.name=`EmptyObjectHelper: ${e.uuid}`,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}raycast(e,t){Nr(this.object,An.geometryHelper,e,t)}update(){}};var jd=require("three");var Mn=class extends Tr(jd.PointLightHelper){constructor(e,t=15,o=6710886){super(e,t,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,Mn.geometryHelper,e,t)}};var Na=require("three");var Ta=class extends Tr(Na.SpotLightHelper){constructor(e,t=6710886){super(e,t);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,t){Nr(this.object,Ta.geometryHelper,e,t)}update(){if(this.object!==void 0){let e=Ta._vector,t=this.object.distance?this.object.distance:1e3,o=t*Math.tan(this.object.angle);this.cone.scale.set(o,o,t),e.setFromMatrixPosition(this.object.target.matrixWorld),this.cone.lookAt(e);let n=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(n);else this.cone.material.color.set(n)}}},Gi=Ta;Gi._vector=new Na.Vector3;var Cr=(i,r)=>class extends i{constructor(){super(...arguments);this.objectHelper=new r(this);this.enableHelper=!1}set visibility(o){this.visible=o,this.setHelperVisibility(o),this.setHelperChildrenVisibility(o)}get visibility(){return this.visible}get geometryHelper(){return r.geometryHelper}setHelperVisibility(o){this.objectHelper.visible=o}setHelperChildrenVisibility(o){for(let n of this.children)Yt(n)&&n.traverseEntity(s=>{Rr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Ye(o.color,n)),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 On=new Ge.Vector3,oc=new Ge.Vector3,zr=class extends Cr(kt(Ge.Camera),wa){constructor(e=window.innerWidth,t=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=po.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=t,this.orthoCamera=new Ge.OrthographicCamera(e*-.5,e*.5,t*.5,t*-.5,n??-5e4,s),this.perspCamera=new Ge.PerspectiveCamera(o,e/t,n??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,t){let o=new zr().fromState(t);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,t){e==="PerspectiveCamera"?this.perspCamera.near=t:this.orthoCamera.near=t}setZoom(e,t){t>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=t:this.orthoCamera.zoom=t)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(On),this.targetOffset=On.distanceTo(e)}getTarget(e=new Ge.Vector3){return this.getWorldDirection(oc),this.getWorldPosition(On),oc.multiplyScalar(this.targetOffset),e.copy(On).add(oc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(On),On.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Ge.Quaternion),t=new Ge.Vector3(0,0,1).applyQuaternion(e),o=new Ge.Vector3().copy(Ge.Object3D.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new Ge.Vector3().copy(Ge.Object3D.DefaultUp).projectOnPlane(t),s=new Ge.Vector3().crossVectors(n,o).dot(t)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let t=e.getWorldPosition(new Ge.Vector3),n=e.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().add(n),target:t}}getViewToObject(e){let t=e.getWorldPosition(new Ge.Vector3),n=this.getWorldDirection(new Ge.Vector3).multiplyScalar(this.targetOffset);return{position:t.clone().sub(n),target:t}}setViewplaneSize(e,t){this.left=-e*.5,this.right=e*.5,this.top=t*.5,this.bottom=-t*.5,this.aspect=e/t,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,t,o,n,s,a){this._cameraType==="PerspectiveCamera"?this.perspCamera.setViewOffset(e,t,o,n,s,a):this.orthoCamera.setViewOffset(e,t,o,n,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,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}copy(e,t){return super.copy(e,t),this.orthoCamera.copy(e.orthoCamera),this.perspCamera.copy(e.perspCamera),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.far=e.far,this.view=e.view===null?null:Object.assign({},e.view),this._cameraType=e._cameraType,this.aspect=e.aspect,this.fov=e.fov,this.focus=e.focus,this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this.targetOffset=e.targetOffset,this.updateProjectionMatrix(),this}toCameraState(e=[]){let t={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Ko(t,e)}fromCameraState(e){let{orthographic:t,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),t!==void 0&&(t.near!==void 0&&(this.orthoCamera.near=t.near),t.zoom!==void 0&&(this.orthoCamera.zoom=t.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{...super.toState(e),...this.toCameraState(e),type:this.cameraType}}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};var kd=require("three");var Lo=class extends Cr(kt(kd.Group),An){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,t){let o=new Lo().fromState(t);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}};var Io=require("three");var _n=class extends Cr(kt(Io.DirectionalLight),Pn){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=2048,this.shadow.mapSize.height=2048,this.shadow.normalBias=1;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=-1e4,o.far=2500;let n=new Io.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,t,o){let n=new _n().fromState(t,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Io.CameraHelper&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Io.CameraHelper&&(t.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Io.CameraHelper&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromDirectionalLightState(e,t){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,t),e.size!==void 0&&td(this,e.size),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),o&&this.update(),this}fromState(e,t){return super.fromState(e),this.fromDirectionalLightState(e,t),this}};var yt=require("three");var Dn=class extends Cr(kt(yt.PointLight),Mn){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new yt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new yt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new yt.Box3(n,s),l=new yt.Box3Helper(a,new yt.Color(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,t,o){let n=new Dn().fromState(t,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof yt.Box3Helper&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof yt.Box3Helper&&(t.visible=!1)}}update(){if(this.shadow&&(this.shadow.camera.updateProjectionMatrix(),this._gizmos))for(let e in this._gizmos){let t=this._gizmos[e];if(t instanceof yt.Box3Helper){let o=this.shadow.camera,n=new yt.Vector3(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new yt.Vector3(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z);t.box.set(n,s),t.updateMatrixWorld(!0)}}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromPointLightState(e,t){return super.fromLightState(e,t),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,t){return super.fromState(e),this.fromPointLightState(e,t),this}};var Ot=require("three");var Hd=new Ot.Vector3,Wd=new Ot.Vector3,qd=new Ot.Quaternion,En=class extends Cr(kt(Ot.SpotLight),Gi){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024,this.shadow.normalBias=1;let o=this.shadow.camera;o.fov=Ot.MathUtils.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Ot.CameraHelper(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,t,o){let n=new En().fromState(t,o);return n.uuid=e,n}get gizmos(){return this._gizmos}showGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Ot.CameraHelper&&(t.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Ot.CameraHelper&&(t.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let t=this._gizmos[e];t instanceof Ot.CameraHelper&&t.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),Wd.setFromMatrixPosition(this.matrixWorld),qd.setFromRotationMatrix(this.matrixWorld),Hd.copy(this.up).applyQuaternion(qd).negate().multiplyScalar(this.distance),this.target.position.copy(Wd).add(Hd),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}fromSpotLightState(e,t){return super.fromLightState(e,t),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,t){return super.fromState(e),this.fromSpotLightState(e,t),this}};var $d=i=>i.tagName==="VIDEO",Bn=class{static resize(r,e,t){let o=r/e,n;if(!t.image)return;let s=t.image;$d(s)?n=s.videoWidth/s.videoHeight:n=s.width/s.height,o>n&&(t.imageType=="WEBCAM"?t.repeat.set(-1,1*n/o):t.repeat.set(1,1*n/o)),o<n&&(t.imageType=="WEBCAM"?t.repeat.set(1*o/n*-1,1):t.repeat.set(1*o/n,1)),o==n&&(t.imageType=="WEBCAM"?t.repeat.set(-1,1):t.repeat.set(1,1))}static resizeTextureLayer(r,e,t){let o=r/e,n=t.image!==void 0?t.image.width/t.image.height:1,s;o>n?s={x:1,y:n/o}:o<n?s={x:o/n,y:1}:s={x:1,y:1},t.repeat.set(s.x,s.y),t.updateMatrix()}static resizeTextureLayers(r,e,t){let o=t.layers;for(let n=0;n<o.length;n++){let s=o[n];vd(s)&&Bn.resizeTextureLayer(r,e,s.uniforms[`f${s.id}_texture`].value)}}static resizeComplex(r,e,t,o){let n=r/e,s,a=t.image;$d(a)?s=a.videoWidth/a.videoHeight:s=a.width/a.height,o.geometry.type.includes("Shape")?(n>s&&(t.imageType=="WEBCAM"?t.repeat.set(1/r*-1,1/e*s/n):t.repeat.set(1/r,1/e*s/n)),n<s&&(t.imageType=="WEBCAM"?t.repeat.set(1/r*n/s*-1,1/e):t.repeat.set(1/r*n/s,1/e)),n==s&&(t.imageType=="WEBCAM"?t.repeat.set(1/r*-1,1/e):t.repeat.set(1/r,1/e))):(n>s&&(t.imageType=="WEBCAM"?t.repeat.set(-1,1*s/n):t.repeat.set(1,1*s/n)),n<s&&(t.imageType=="WEBCAM"?t.repeat.set(1*n/s*-1,1):t.repeat.set(1*n/s,1)),n==s&&(t.imageType=="WEBCAM"?t.repeat.set(-1,1):t.repeat.set(1,1)))}};var Ca=class extends lt{constructor(e,t){super(e,t);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.layers&&Bn.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}};var Gn=class extends lt{constructor(e,t){super(e,t);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}};var La=class extends Gn{constructor(e,t){super(e,t);this.objectType="NonParametric"}};var $t=require("three"),Xd=require("three/examples/jsm/loaders/FontLoader.js"),We=class extends $t.Mesh{constructor({char:e,originalChar:t,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new $t.MeshBasicMaterial({color:0,opacity:1,visible:!0,transparent:!0,side:$t.DoubleSide})){let c=We.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=t??e,this.fontFamily=o,this.letterSpacing=n,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new $t.Vector2,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 We._fontPath}static set FONTS_PATH(e){We._fontPath=e}updatePosition(e,t){this.localPosition.copy(e);let o=new $t.Vector3(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(t)}updateFontSize(e){let t=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*t*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let t=We.loadChar(this.char,e,this.LOD);this.geometry=t.geometry,this.resolution=t.resolution,this.glyphsHa=t.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 t=We.loadChar(e,this.fontFamily,this.LOD);this.geometry=t.geometry,this.resolution=t.resolution,this.glyphsHa=t.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 t=We.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=t.geometry,this.resolution=t.resolution,this.glyphsHa=t.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 We(e).copy(this)}static loadFont(e){return new Promise(function(t,o){We.fontCache[e]?t(We.fontCache[e]):new Xd.FontLoader().load(We.FONTS_PATH+e+".json",s=>{We.fontCache[e]=s,t(s)},void 0,o)})}static loadChar(e,t,o){if(We.charCache[e]){if(We.charCache[e][o]&&We.charCache[e][o].fontFamily===t)return We.charCache[e][o]}else We.charCache[e]={};let n=We.fontCache[t],s=n.generateShapes(e,1);return We.charCache[e][o]={geometry:new $t.ShapeBufferGeometry(s,o),fontFamily:t,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},We.charCache[e][o]}},rr=We;rr.charCache={},rr.fontCache={},rr._fontPath="/_assets/_fonts/";var Lr=require("three");var nc=require("three"),Ia=new nc.Vector2,Po=class{constructor(r,e,t){this.message=[];this.endLine=!0;this.yLinePos=r,this.lineHeight=e,this.maxCharSize=t,this.nextChar3DPos=new nc.Vector2(0,this.yLinePos+this.maxCharSize*this.lineHeight),this.align=1}addChar3D(r,e,t=this.message.length){this.message.splice(t,0,r),r.fontSize>this.maxCharSize?(this.maxCharSize=r.fontSize,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight,this.fullUpdate(e)):(r.updatePosition(this.nextChar3DPos,e),this.nextChar3DPos.x+=r.charSize)}deleteChar3D(r=this.message.length-1){let e=this.message[r];if(e)return this.message.splice(r,1),this.nextChar3DPos.x-=e.charSize,e}isEndLine(r){this.endLine=r}fullUpdate(r,e=0){this.nextChar3DPos.x=0;for(let t=e,o=this.message.length;t<o;t+=1)this.message[t].updatePosition(this.nextChar3DPos,r),this.nextChar3DPos.x+=this.message[t].charSize}checkOverFlow(r){let e,t=this.message.length-1;if(t<=0)return!1;for(;t>=0;){if(this.message[t].char!==" "){e=this.message[t];break}t-=1}return!!(t>=0&&e&&e.localPosition.x+e.charSize>r)}containSpaceOverFlow(r=this.message.length-1){for(let e=r;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}containSpace(r=this.message.length-1){if(this.endLine)return!0;for(let e=r;e>=0;e-=1)if(this.message[e].char===" ")return!0;return!1}popWord(r=this.message.length-1){let e=[],t=!0,o;for(o=r;o>=0;o-=1)if(this.message[o].char===" "){t=!1,e.length===0&&(o-=1,e.splice(0,0,this.message[o]));break}else e.splice(0,0,this.message[o]);return t?e=[]:this.message.splice(o+1,e.length),e}getWord(r=0,e=1){let t=[],o=r;for(o=r;;o+=e){if(!this.message[o]||this.message[o].char===" "){t.length===0&&this.message[o]&&(t.push(this.message[o]),this.message.splice(o,1));break}e>0?(t.push(this.message[o]),this.message.splice(o,1),o-=e):(t.splice(0,0,this.message[o]),this.message.splice(o,1))}return t}getWordAtIndex(r){let e=[];for(let t=r;t<this.message.length&&this.message[t].char!==" ";t++)e.push(this.message[t]);for(let t=r-1;t>=0&&this.message[t].char!==" ";t--)e.splice(0,0,this.message[t]);return e}wordSize(r=0,e=-1){let t=0,o=r;for(;o>=0&&o<this.message.length;){if(this.message[o].char===" "){t===0&&(t=this.message[o].charSize);break}t+=this.message[o].charSize,o+=e}return(o<0||o>=this.message.length)&&!this.endLine?this.message[r]?this.message[r].charSize:999999999:t===0?999999999:t}spaceLeft(r){return r-this.nextChar3DPos.x}popChar(r=this.message.length-1){return this.nextChar3DPos.x-=this.message[r].charSize,this.message.splice(r,1)}isEmpty(){return!this.message.length}updateNextCharPosY(){this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}updateYLinePos(r){this.yLinePos=r,this.updateNextCharPosY()}updatelineHeight(r){this.lineHeight=r,this.updateNextCharPosY()}updateFontSize(r,e=0,t=this.message.length-1){for(let o=e;o<=t;o+=1)this.message[o].updateFontSize(r);this.maxCharSize=r,this.nextChar3DPos.y=this.yLinePos+this.maxCharSize*this.lineHeight}countSpaces(){let r=0;for(let e=0;e<this.message.length;e++)this.message[e].char===" "&&(r+=1);return r}alignText(r,e,t,o,n){switch(t){case 1:this.leftAlign(r,n);break;case 3:this.centerAlign(this.spaceLeft(e),r,n);break;case 2:this.rightAlign(this.spaceLeft(e),r,n);break;case 4:this.justifyAlign(this.spaceLeft(e),r,n);break}}offsetCharacters(r,e,t){Ia.set(e,t);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Ia),r)}leftAlign(r,e){this.align=1,this.offsetCharacters(r,0,e)}centerAlign(r,e,t){this.align=3,this.offsetCharacters(e,r/2,t)}rightAlign(r,e,t){this.align=2,this.offsetCharacters(e,r,t)}justifyAlign(r,e,t){if(this.align=4,this.endLine){this.offsetCharacters(e,0,t);return}let o=this.countSpaces();if(o===0){this.offsetCharacters(e,0,t);return}let n=r/o,s=0;for(let a=0;a<this.message.length;a++)this.message[a].char===" "&&(s+=n),Ia.set(s,t),this.message[a].updatePosition(this.message[a].localPosition.add(Ia),e)}clone(){let r=new Po(this.yLinePos,this.lineHeight,this.maxCharSize);r.nextChar3DPos=this.nextChar3DPos.clone(),r.align=this.align,r.endLine=this.endLine;for(let e=0;e<this.message.length;e++)r.message.push(this.message[e].clone());return r}};var ic=class extends lt{constructor(e){super(e,new Lr.MeshBasicMaterial({transparent:!0,opacity:1,visible:!1,side:Lr.DoubleSide}));this.objectType="TextFrame";this.charContainer=new Lr.Object3D,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 Lr.Vector3(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,t,o){let n=oa.create({parameters:{width:t.width,height:t.height}}),s=new ic(n).fromState(t,o);return s.uuid=e,s}async updateText(e){this.clearText();let t=this.userData.textFrame,o=t.fontFamily;await rr.loadFont(o),t.text=e;let n=t.textOrigin,s=new Lr.MeshBasicMaterial({visible:t.visible,transparent:!0,side:Lr.DoubleSide}),a=e.split(`
|
|
1329
|
+
`),l=0;this.userData.textFrame.textLines=a.map((c,u)=>{let m=new Po(l,t.lineHeight,t.fontSize);return m.message=c.split("").map(p=>{let d={char:p,fontFamily:o,letterSpacing:t.letterSpacing,fontSize:t.fontSize,LOD:16},f=s.clone();f.color=t.hexColor,f.opacity=t.opacity;let g=new rr(d,f);return m.addChar3D(g,n),this.charContainer.add(g),g}),l+=m.maxCharSize*m.lineHeight,m}),this.textFullUpdate(),this.checkOverFlow()}clearText(){let e=this.userData.textFrame.textLines;for(;this.charContainer.children.length;){let t=this.charContainer.children[0];this.charContainer.remove(t)}for(;e.length;)e.pop()}raycast(e,t){let o=[];if(super.raycast(e,o),o.length>0){t.push(o[0]);return}let n=[];for(let s=0,a=this.charContainer.children.length;s<a;++s)if(this.charContainer.children[s]instanceof rr&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,t.push(n[0]);return}}updateGeometry(e){let t=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=e.parameters?.width??n,l=e.parameters?.height??s,c=t.textFrame;super.updateGeometry(e),c.maxLineSize=a,c.textOrigin.set(-.5*a,.5*l,0),l!==s?(this.checkOverFlow(),this.checkCapacity()):a!==n&&(n<a?this.checkCapacity():n>a&&this.checkOverFlow())}checkOverFlow(e=0){let t=this.userData,o=t.textFrame.textOrigin,n=t.textFrame.textLines;for(let s=e;s<n.length;s++){n[s].updateYLinePos(this.getNewLinePosition(s)),n[s].fullUpdate(o);let a=[];for(;n[s].checkOverFlow(t.textFrame.maxLineSize);)n[s].containSpaceOverFlow()?a.unshift(n[s].getWord(n[s].message.length-1,-1)):a.unshift(n[s].popChar());if(a.length>0){n[s+1]===void 0?(n[s].isEndLine(!1),this.createTextLine()):n[s].endLine&&(this.createTextLine(s+1),n[s].isEndLine(!1),n[s+1].isEndLine(!0));let l=0;for(let c=0;c<a.length;c+=1)for(let u=0;u<a[c].length;u+=1)n[s+1].addChar3D(a[c][u],o,l),l+=1;n[s+1].fullUpdate(o)}n[s].fullUpdate(o)}this.textFullUpdate(e)}checkCapacity(e=0){let t=this.userData,o=t.textFrame.textOrigin,n=t.textFrame.maxLineSize,s=t.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(n);if(s[a].wordSize(0,1)<=c){s[a].containSpace()?l=s[a].getWord(0,1):l=s[a].popChar(0);for(let u=0;u<l.length;u+=1)l[u]&&s[a-1].addChar3D(l[u],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 Po(this.getNewLinePosition(e),o.lineHeight,o.fontSize))}textFullUpdate(e=0){let o=this.userData.textFrame,n=o.textLines,s=this.getVerticalAlignmentOffSet();for(let a=e;a<n.length;a++)n[a].updateYLinePos(this.getNewLinePosition(a)),n[a].fullUpdate(o.textOrigin),n[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 t=this.userData.textFrame.textLines;return this.geometry.userData.parameters.height-this.getNewLinePosition(t.length)}getNewLinePosition(e){let o=this.userData.textFrame.textLines,n=0;for(let s=0;s<e;s+=1)n+=o[s].maxCharSize*o[s].lineHeight;return n}updateColor(e){let t=this.userData;t.textFrame.hexColor=e;let o=t.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.color?.isColor&&(l.color=e)}}}updateOpacity(e){let t=this.userData;t.textFrame.opacity=e;let o=t.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.opacity=e}}}updateVisible(e){let t=this.userData;t.textFrame.visible=e;let o=t.textFrame.textLines;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++){let l=s[a].material;l.visible=e}}}async updateFontFamily(e){await rr.loadFont(e);let o=this.userData.textFrame,n=o.textLines;o.fontFamily=e;for(let s=0;s<n.length;s++){let a=n[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,n=o.textLines,s=o.fontSize;o.fontSize=e;for(let a=0;a<n.length;a++)n[a].updateFontSize(e);this.textFullUpdate(),e>s?this.checkOverFlow():e<s&&this.checkCapacity()}async updateTextTransform(e){let o=this.userData.textFrame;await rr.loadFont(o.fontFamily);let n=o.textLines;switch(o.textTransform=e,e){case 2:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toUpperCase())}break;case 3:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].char.toLowerCase())}break;default:for(let s=0;s<n.length;s++){let a=n[s].message;for(let l=0;l<a.length;l++)n[s].message[l].updateChar(a[l].originalChar)}}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLetterSpacing(e){let t=this.userData,o=t.textFrame.textLines;t.textFrame.letterSpacing=e;for(let n=0;n<o.length;n++){let s=o[n].message;for(let a=0;a<s.length;a++)s[a].updateLetterSpacing(e)}this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLOD(e){let t=this.userData;t.textFrame.LOD=e;let o=t.textFrame.textLines;for(let n=0;n<o.length;n++);this.textFullUpdate(),this.checkOverFlow(),this.checkCapacity()}updateLineHeight(e){let t=this.userData,o=t.textFrame.textLines;t.textFrame.lineHeight=e;for(let n=0;n<o.length;n++)o[n].updatelineHeight(e);this.textFullUpdate()}updateVerticalAlignment(e){let t=this.userData;t.textFrame.verticalAlignment=e,this.textFullUpdate()}updateHorizontalAlignment(e){let t=this.userData;t.textFrame.horizontalAlignment=e,this.textFullUpdate()}fromTextFrameData(e,t){if(e.color!==void 0){let o=Ye(e.color,t);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,t){return super.fromState(e),this.fromTextFrameData(e,t),this}},Ao=ic;Ao.VerticalAlign=il,Ao.HorizontalAlign=nl,Ao.TextTransform=sl;var ct=require("three");var Ri=class{constructor(r){this.deletedMaterial=new To(_r.defaultTwoLayerData("basic"),this);this.deletedImage=new wo($s.emptyImage);this.materials={};this.images={};this.colors={};this.onImageLoad=()=>{this._onImageLoad&&this._onImageLoad()};this.transmissionRenderTarget=new ct.WebGLRenderTarget(2048,2048,{generateMipmaps:!0,minFilter:ct.LinearMipmapLinearFilter,magFilter:ct.LinearFilter,wrapS:ct.ClampToEdgeWrapping,wrapT:ct.ClampToEdgeWrapping}),this.transmissionRenderTarget.depthTexture=new ct.DepthTexture(2048,2048),this.normalRenderTarget=new ct.WebGLRenderTarget(1024,1024,{generateMipmaps:!1,minFilter:ct.NearestFilter,magFilter:ct.NearestFilter,type:ct.FloatType}),this.normalRenderTarget.depthTexture=new ct.DepthTexture(1024,1024),this.penumbraSizeNode=new ot(5,r.penumbraSize),this.resolutionNode=new rt(1,1),this.pixelRatioNode=new Y(window.devicePixelRatio),this.reset(r)}setOnImageLoad(r){this._onImageLoad=r}reset(r){for(let[e,t]of Object.entries(r.images))this.addImage(e,t);for(let[e,t]of Object.entries(r.colors))this.addColor(e,t);for(let[e,t]of Object.entries(r.materials))this.addMaterial(e,new To(t,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}get normalMap(){return this.normalRenderTarget.texture}addMaterial(r,e){e.uuid=r,this.materials[r]=e}deleteMaterial(r){this.materials[r]&&(this.materials[r].dispose(),delete this.materials[r])}getMaterial(r){let e=this.materials[r];return e}getMaterialOrDeletedPlaceholder(r){return this.materials[r]??this.deletedMaterial}material(r){return typeof r=="string"?this.getMaterialOrDeletedPlaceholder(r):new Zt(r,this)}getMaterials(){return this.materials}addImage(r,e){return this.images[r]?(this.images[r].updateSrc(e.data),!0):(this.images[r]=new wo(e,this.onImageLoad),!1)}deleteImage(r){this.images[r]&&delete this.images[r]}getDefaultImage(){return this.images.image_0}getImage(r){return this.images[r]??this.deletedImage}image(r){return typeof r=="string"?this.getImage(r):new Cn(r,this.onImageLoad)}getImages(){return this.images}addColor(r,e){return this.colors[r]?("a"in e?this.colors[r].setRGBA(e.r,e.g,e.b,e.a):this.colors[r].setRGBA(e.r,e.g,e.b,1),!0):("a"in e?this.colors[r]=new ro(e.r,e.g,e.b,e.a):this.colors[r]=new ro(e.r,e.g,e.b,1),!1)}updateColor(r,e){if(this.colors[r]){let t=this.colors[r];return this.colors[r].r=e.r??t.r,this.colors[r].g=e.g??t.g,this.colors[r].b=e.b??t.b,this.colors[r].a=e.a??t.a,!0}return!1}deleteColor(r){this.colors[r]&&delete this.colors[r]}getColor(r){return this.colors[r]}color(r){let e;if(typeof r=="string"){let t=this.getColor(r);t?e=t:(console.warn("Tried to create color layer params with a color key that does not exist in the assets manager"),e=new ut(0,0,0,0))}else return"a"in r?new ut(r.r,r.g,r.b,r.a):new ut(r.r,r.g,r.b,1);return e}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this._onImageLoad=void 0}},IV=new Ri(qs.emptyData());var Yd=require("three/examples/jsm/loaders/DRACOLoader.js");var io;function zb(){return io||(io=new Yd.DRACOLoader,io.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),io.decoderPending}async function Vb(i){if(io){let r={attributeIDs:io.defaultAttributeIDs,attributeTypes:io.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await io.decodeGeometry(new Int8Array(i).buffer,r)}catch(t){console.error(t)}if(e)return{index:e.index?{array:e.index.array}:void 0,attributes:Object.entries(e.attributes).map(([t,o])=>({name:t,itemSize:o.itemSize,array:o.array}))}}return null}async function Kd(i,r){let[e,t]=Ua(zs.deserialize(new Uint8Array(i))),o=[];e.scene.objects.traverse((n,s)=>{s.type==="Mesh"&&s.geometry.type==="NonParametricGeometry"&&s.geometry.data.draco!==void 0&&o.push(s)}),o.length&&await zb();for(let n of o){let s=await Vb(ka(n.geometry.data.draco));if(s){s.index&&(n.geometry.data.index={array:s.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let a={};s.attributes.forEach(({name:l,array:c,itemSize:u})=>{a[l]={array:c,itemSize:u,type:"Float32Array",normalized:!1}}),n.geometry.data.attributes=a,n.geometry.data.draco=void 0}}return r&&r(e),t.result().data}var zt=require("three");var wt=require("three");var ef=Af(Jd());var sc;na.then(i=>{sc=i});var tf=new wt.Matrix4,Fb=new wt.Matrix4,Ub=new wt.Matrix4,or=new wt.Box3,so=new wt.Vector3,jb=new wt.Matrix4,kb=new wt.Matrix4,Rn=class extends lt{constructor(e,t,o,n){super(o??t,n);this.subdivPointer=e;this.originalGeometry=t;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new wt.Matrix4;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new wt.Matrix4;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,t,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Wt.build(t.geometry,void 0,void 0,!t.flatShading),l=o.material(t.material),c=new Rn(n,s,a||void 0,l);return t.geometry.phongAngle!==void 0&&(c.phongAngle=t.geometry.phongAngle),c.calcBoundingBox(),c.freeSubdivPointer(),c.uuid=e,c.fromState(t),c}buildFromStore(e,t){let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Wt.build(e,t,this.subdivPointer,this.smoothShading,this.shearScale);e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&(this.originalGeometry?.dispose(),this.originalGeometry=o),n!==void 0&&(this.subdividedGeometry?.dispose(),this.subdividedGeometry=n??void 0),this.geometry=this.subdividedGeometry??this.originalGeometry,No(this),Co(this),e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Wt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Wt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){this.originalGeometry.dispose(),this.originalGeometry=Wt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Wt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=this.subdividedGeometry??this.originalGeometry}raycast(e,t){this.geometry=this.originalGeometry,lt.prototype.raycast.call(this,e,t),this.geometry=this.subdividedGeometry??this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,t=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:n,q:s}=(0,ef.SVD)(t),a=tf.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=Fb.set(n[0][0],n[0][1],n[0][2],0,n[1][0],n[1][1],n[1][2],0,n[2][0],n[2][1],n[2][2],0,0,0,0,1),c=Ub.copy(l).transpose();this.shearScale=jb.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=kb.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(a,c),s.every(u=>Math.abs(s[0]-u)<.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 wt.Sphere);let t=e.attributes.position,o=e.boundingSphere.center;or.setFromBufferAttribute(t),or.getCenter(o),e.boundingSphere.radius=o.distanceTo(or.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(so);let n={width:so.x,height:so.y,depth:so.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let t=this.originalGeometry;or.min.set(e[0],e[2],e[4]),or.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(or.min.applyMatrix4(this.shearScaleInv),or.max.applyMatrix4(this.shearScaleInv)),t.boundingSphere===null&&(t.boundingSphere=new wt.Sphere);let o=t.boundingSphere.center;or.getCenter(o),t.boundingSphere.radius=o.distanceTo(or.max),isNaN(t.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),or.getSize(so);let n={width:so.x,height:so.y,depth:so.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(sc.free_bvh(this.subdivPointer),sc.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,Zd(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(Zd(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters={...e.parameters}}};function Zd(i,r,e,t){let o=i.position.array,n=i.normal.array,s=tf.makeScale(r,e,t).invert().elements,a,l,c;for(var u=0,m=o.length;u<m;u+=3)o[u]*=r,o[u+1]*=e,o[u+2]*=t,a=n[u],l=n[u+1],c=n[u+2],n[u]=s[0]*a+s[4]*l+s[8]*c,n[u+1]=s[1]*a+s[5]*l+s[9]*c,n[u+2]=s[2]*a+s[6]*l+s[10]*c}var ao=require("three");function rf(i,r){r.flatShading!==void 0&&(i.flatShading=r.flatShading,i.needsUpdate=!0),r.wireframe!==void 0&&(i.wireframe=r.wireframe),r.side!==void 0&&(r.side===0?i.side=ao.FrontSide:r.side===1?i.side=ao.BackSide:i.side=ao.DoubleSide)}function Hb(i,r){if(Array.isArray(i.material))for(let e of i.material)rf(e,r);else{let e=i.material;rf(e,r)}i.objectType==="SubdivObject"&&r.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!r.flatShading,i.updateMesh())}function of(i,r,e){let t;if(r.geometry.type==="SubdivGeometry")t=Rn.createFromState(i,r,e);else{let o=r.geometry.type==="BooleanGeometry"?new ao.BufferGeometry:ya(r.geometry,e),n="materials"in r?r.materials.map(s=>e.material(s)):e.material(r.material);ks.is2DParametricMesh(o.userData.type)?t=new Ca(o,n):o?.userData.type==="VectorGeometry"?t=new Ln(o,n):r.geometry.type==="NonParametricGeometry"?t=new La(o,n):r.geometry.type==="BooleanGeometry"?(t=new va(void 0,n),t.booleanOp=r.geometry.operation,r.geometry.phongAngle!==void 0&&(t.phongAngle=r.geometry.phongAngle)):t=new Gn(o,n),t.uuid=i,t.fromState(r,e)}return Hb(t,r),t}function nf(i,r,e){return r.type==="Mesh"?of(i,r,e):r.type==="TextFrame"?Ao.createFromState(i,r,e):r.type==="Empty"?Lo.createFromState(i,r):r.type==="PointLight"?Dn.createFromState(i,r,e):r.type==="SpotLight"?En.createFromState(i,r,e):r.type==="DirectionalLight"?_n.createFromState(i,r,e):Qo.is(r.type)?zr.createFromState(i,r):(console.error(r),new Lo)}var sf=new zt.Vector3,ac=class extends sa(zt.Scene){constructor(e,t){super();this.objectType="Scene";this.alpha=1;this.backupFog=new zt.Fog(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this.needsNormalDirty=!0;this._needsTransmission=!1;this._needsNormal=!1;this._color=new zt.Color(1,0,0);this.bgColor=new zt.Color(1,1,1);this.entityByUuid={};this.ambientLight=new zt.HemisphereLight(13882323,8553090,.75),this.ambientLight.name="Default Ambient Light",this.personalCamera=this.createPersonalCamera(),this.activeCamera=this.personalCamera,this.init(e,t)}needsTransmission(e){return this.needsTransmissionDirty&&(this._needsTransmission=Td(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}needsNormal(e){return this.needsNormalDirty&&(this._needsNormal=wd(e,this),e!==void 0&&(this.needsNormalDirty=!1)),this._needsNormal}find(e){if(e===""||e===void 0)return;let t=this.entityByUuid[e];return t===void 0?this.getObjectByProperty("uuid",e):t}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,t){if(this.createChildrenObjects(e.objects,this,t),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Ye(e.backgroundColor,t)),this.updateFog(e.fog,t),this.updateAmbientLight(e.environment.ambientLight,t),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof zr&&this.switchActiveCamera(o)}this.traverse(o=>{fr(o)&&o.recomputeBoolean()})}clearScene(){this.traverseEntity(e=>{Nd(e)});for(let e of this.children)Yt(e)&&e.removeFromParent()}resetAfterClear(e,t){this.init(e,t)}createPersonalCamera(){let e=zr.createFromState(ac.PERSONAL_CAMERA_ID,{...Ws.defaultData,name:"Personal Camera"});return e.enableHelper=!1,e.objectHelper.visible=!1,delete e.isEntity,this.registerObjectCreatedInLegacy(e),e}raycast(e){let t=[],o=n=>{for(let s of n.children)Yt(s)&&!s.raycastLock&&s.visible&&((dr(s)||Rr(s)&&s.enableHelper&&s.objectHelper.parent)&&(e.intersectObject(s,!1,t),Cd(s,e,t)),o(s))};return o(this),t}traverseEntity(e){for(let t of this.children)Yt(t)&&t.traverseEntity(e)}updateFog(e,t){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Ye(e.color,t),this.backupFog.near=e.near,this.backupFog.far=e.far}dispose(){this.clearScene()}updateAmbientLight(e,t){ed(this.ambientLight,e,t),e.groundColor!==void 0&&(this.ambientLight.groundColor=Ye(e.groundColor,t)),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,t,o){for(let n of e)this.createChildObject(n.id,n.data,n.children,t,o)}registerObjectCreatedInLegacy(e){this.entityByUuid[e.uuid]=e}unregisterObject(e){delete this.entityByUuid[e.uuid];for(let t of e.children)this.unregisterObject(t)}createChildObject(e,t,o,n,s){let a=nf(e,t,s);return a&&(this.entityByUuid[e]=a,n.add(a),fr(n)&&dr(a)&&(a.prevBooleanObjectParent=n),this.createChildrenObjects(o,a,s)),a}getCenter(e){let t=[];for(let n=0,s=e.length;n<s;++n){let{id:a,recursive:l}=e[n],c=this.find(a),u=l?c.recursiveBBox:c.singleBBox;t.push(...u.vertices)}let o=new zt.Box3;return o.setFromPoints(t),o.getCenter(sf),sf}copyMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e);o?t.copy(o.matrixWorld):t.identity()}copyParentMatrixWorld(e,t){if(e===null){t.identity();return}let o=this.find(e)?.parent;o?t.copy(o.matrixWorld):t.identity()}traverseMaterial(e){this.traverseEntity(t=>{if(t instanceof lt)if(Array.isArray(t.material))for(let o=0;o<t.material.length;o++)t.material[o]instanceof Zt&&e(t.material[o]);else t.material instanceof Zt&&e(t.material)})}updateCanvasSize(e,t){this.activeCamera.setViewplaneSize(e,t);let o,n;e>=t?(o=t/e,n=1):(o=1,n=e/t),this.traverseMaterial(s=>{s.getLayersOfType("transmission").forEach(l=>{l.uniforms[`f${l.id}_aspectRatio`].value.x=o,l.uniforms[`f${l.id}_aspectRatio`].value.y=n})})}},zi=ac;zi.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";var Wb=require("three"),qb=require("three/examples/jsm/utils/BufferGeometryUtils.js");function af(i){let r;if(!!i.index)for(let e=0;e<i.index.array.length;e+=3)r=i.index.array[e],i.index.array[e]=i.index.array[e+2],i.index.array[e+2]=r}var Vi=require("three");function lf(i){let r=new Set;return i.traverse(e=>{if(dr(e))if(Xe(e.material))e.material.forEach(t=>{let o=t;r.has(o)||r.add(o)});else{let t=e.material;r.has(t)||r.add(t)}}),r.forEach(e=>{if(e instanceof Array)return;let t=e.onBeforeCompile.bind(e);$b(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Vi.Color,specularColor:new Vi.Color}),e.onBeforeCompile=(o,n)=>{t&&t(o,n),o.uniforms=Object.assign(Vi.ShaderLib.physical.uniforms,o.uniforms),e.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)})}):Xb(e)||(e.onBeforeCompile=(o,n)=>{t&&t(o,n),e.transparent=!1})}),i}function $b(i){return i.getLayersOfType("transmission").length>0}function Xb(i){let r=0;return i.layers.forEach(e=>{if(e.type!=="light"&&e.type!=="fresnel"){let t=e.uniforms["f"+e.id+"_alpha"];t&&(r+=(1-r)*t.value)}}),r<1}function cf(i){return i.traverse(r=>{if(r.type==="Camera"){let e=r;e.type=e.cameraType}}),i}function uf(i){let r=[],e=(t,o=0)=>{let n=o>0?t+o:t;return r.includes(n)?e(t,o+1):n};return i.traverse(t=>{if(r.includes(t.name)){let o=t.name,n=e(t.name);if(t.name=n,t.isMesh){let s=t;s.material instanceof Array?s.material.forEach(a=>{a.name=a.name.replace(o,n)}):s.material.isAsset||(s.material.name=s.material.name.replace(o,n))}}r.push(t.name)}),i}var pf=require("three/examples/jsm/utils/BufferGeometryUtils.js");function mf(i){let r=[];return i.traverse(e=>{e instanceof vo&&r.push(e)}),r.forEach(e=>{let t=e.object,o=e.children,n=o.map(a=>{a.updateMatrix();let l=a.geometry.clone().applyMatrix4(a.matrix);return a.matrix.determinant()<0&&af(l),l}),s=(0,pf.mergeBufferGeometries)(e.parameters.hideBase?n:[t.geometry,...n]);t.geometry=s,t.material=o[0].material,t.remove(e)}),i}function df(i){return i.traverse(r=>{r.matrixAutoUpdate=!0}),i}function ff(i){Object.values(i.shared.materials).forEach(r=>{lc(r)}),i.scene.objects.traverse((r,e)=>{"material"in e?lc(e.material):"materials"in e&&e.materials.forEach(t=>{lc(t)})})}function lc(i){if(typeof i=="string")return;let r=[];i.layers.forEach((e,t)=>{e.type==="outline"&&r.push(t)}),r.reverse().forEach(e=>{i.layers.delete(e)}),r.length&&console.warn("The Spline Loader currently does not support the outline layer.")}var hf="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Aa=class extends Ma.Loader{load(r,e,t,o=console.error){let n=new Ma.FileLoader(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),r.endsWith(".spline")?console.warn(hf+" The .spline files are only meant to be used by the Editor."):r.endsWith(".splinecode")||console.warn(hf),n.load(r,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)}},t,o)}async parse(r){let e=await Kd(r,ff),t=new Ri(e.shared);Object.values(t.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new zi(e.scene,t);o.remove(o.personalCamera),e.scene.environment.ambientLight.enabled||o.remove(o.ambientLight);let n=e.scene.publish.playCamera;if(n){let s=o.find(n);s&&Zm(s)&&Object.assign(s,{makeDefault:!0})}return o=mf(o),o=lf(o),o=cf(o),o=uf(o),o=df(o),o}};
|