@splinetool/loader 0.9.63 → 0.9.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/SplineLoader.js +41 -40
- package/package.json +1 -1
package/build/SplineLoader.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var Ud=Object.create;var jn=Object.defineProperty,kd=Object.defineProperties,Hd=Object.getOwnPropertyDescriptor,qd=Object.getOwnPropertyDescriptors,Wd=Object.getOwnPropertyNames,wc=Object.getOwnPropertySymbols,$d=Object.getPrototypeOf,Cc=Object.prototype.hasOwnProperty,Jd=Object.prototype.propertyIsEnumerable;var Lc=(i,t,e)=>t in i?jn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,I=(i,t)=>{for(var e in t||(t={}))Cc.call(t,e)&&Lc(i,e,t[e]);if(wc)for(var e of wc(t))Jd.call(t,e)&&Lc(i,e,t[e]);return i},q=(i,t)=>kd(i,qd(t));var Yd=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Tc=(i,t)=>{for(var e in t)jn(i,e,{get:t[e],enumerable:!0})},Kd=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Wd(t))!Cc.call(i,o)&&o!==e&&jn(i,o,{get:()=>t[o],enumerable:!(r=Hd(t,o))||r.enumerable});return i};var Xd=(i,t,e)=>(e=i!=null?Ud($d(i)):{},Kd(t||!i||!i.__esModule?jn(e,"default",{value:i,enumerable:!0}):e,i));var gd=Yd((_a,yd)=>{(function(i,t){typeof _a=="object"&&typeof yd<"u"?t(_a):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(_a,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,m,f,g,b,y,v=t[0].length,D=t.length;if(D<v)throw new TypeError("Invalid matrix: m < n");for(var N=[],w=[],H=[],T=e==="f"?D:v,d=g=u=0;d<D;d++)w[d]=new Array(T).fill(0);for(d=0;d<v;d++)H[d]=new Array(v).fill(0);var O,x=new Array(v).fill(0);for(d=0;d<D;d++)for(s=0;s<v;s++)w[d][s]=t[d][s];for(d=0;d<v;d++){for(N[d]=u,f=0,l=d+1,s=d;s<D;s++)f+=Math.pow(w[s][d],2);if(f<n)u=0;else for(m=(p=w[d][d])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,w[d][d]=p-u,s=l;s<v;s++){for(f=0,a=d;a<D;a++)f+=w[a][d]*w[a][s];for(p=f/m,a=d;a<D;a++)w[a][s]=w[a][s]+p*w[a][d]}for(x[d]=u,f=0,s=l;s<v;s++)f+=Math.pow(w[d][s],2);if(f<n)u=0;else{for(m=(p=w[d][d+1])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,w[d][d+1]=p-u,s=l;s<v;s++)N[s]=w[d][s]/m;for(s=l;s<D;s++){for(f=0,a=l;a<v;a++)f+=w[s][a]*w[d][a];for(a=l;a<v;a++)w[s][a]=w[s][a]+f*N[a]}}g<(b=Math.abs(x[d])+Math.abs(N[d]))&&(g=b)}if(r)for(d=v-1;0<=d;d--){if(u!==0){for(m=w[d][d+1]*u,s=l;s<v;s++)H[s][d]=w[d][s]/m;for(s=l;s<v;s++){for(f=0,a=l;a<v;a++)f+=w[d][a]*H[a][s];for(a=l;a<v;a++)H[a][s]=H[a][s]+f*H[a][d]}}for(s=l;s<v;s++)H[d][s]=0,H[s][d]=0;H[d][d]=1,u=N[d],l=d}if(e){if(e==="f")for(d=v;d<D;d++){for(s=v;s<D;s++)w[d][s]=0;w[d][d]=1}for(d=v-1;0<=d;d--){for(l=d+1,u=x[d],s=l;s<T;s++)w[d][s]=0;if(u!==0){for(m=w[d][d]*u,s=l;s<T;s++){for(f=0,a=l;a<D;a++)f+=w[a][d]*w[a][s];for(p=f/m,a=d;a<D;a++)w[a][s]=w[a][s]+p*w[a][d]}for(s=d;s<D;s++)w[s][d]=w[s][d]/u}else for(s=d;s<D;s++)w[s][d]=0;w[d][d]=w[d][d]+1}}for(o*=g,a=v-1;0<=a;a--)for(var L=0;L<50;L++){for(O=!1,l=a;0<=l;l--){if(Math.abs(N[l])<=o){O=!0;break}if(Math.abs(x[l-1])<=o)break}if(!O){for(h=0,c=l-(f=1),d=l;d<a+1&&(p=f*N[d],N[d]=h*N[d],!(Math.abs(p)<=o));d++)if(u=x[d],x[d]=Math.sqrt(p*p+u*u),h=u/(m=x[d]),f=-p/m,e)for(s=0;s<D;s++)b=w[s][c],y=w[s][d],w[s][c]=b*h+y*f,w[s][d]=-b*f+y*h}if(y=x[a],l===a){if(y<0&&(x[a]=-y,r))for(s=0;s<v;s++)H[s][a]=-H[s][a];break}for(g=x[l],p=(((b=x[a-1])-y)*(b+y)+((u=N[a-1])-(m=N[a]))*(u+m))/(2*m*b),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+m*(b/(p<0?p-u:p+u)-m))/g,d=l+(f=h=1);d<a+1;d++){if(u=N[d],b=x[d],m=f*u,u*=h,y=Math.sqrt(p*p+m*m),p=g*(h=p/(N[d-1]=y))+u*(f=m/y),u=-g*f+u*h,m=b*f,b*=h,r)for(s=0;s<v;s++)g=H[s][d-1],y=H[s][d],H[s][d-1]=g*h+y*f,H[s][d]=-g*f+y*h;if(y=Math.sqrt(p*p+m*m),p=(h=p/(x[d-1]=y))*u+(f=m/y)*b,g=-f*u+h*b,e)for(s=0;s<D;s++)b=w[s][d-1],y=w[s][d],w[s][d-1]=b*h+y*f,w[s][d]=-b*f+y*h}N[l]=0,N[a]=p,x[a]=g}for(d=0;d<v;d++)x[d]<o&&(x[d]=0);return{u:w,q:x,v:H}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});import{FileLoader as P1,Loader as O1}from"three";function Nc(i){return Array.isArray(i)?i:[i]}var Zd=typeof global=="object"&&global&&global.Object===Object&&global,Un=Zd;var Qd=typeof self=="object"&&self&&self.Object===Object&&self,ef=Un||Qd||Function("return this")(),Qe=ef;var tf=Qe.Symbol,Tt=tf;var Mc=Object.prototype,rf=Mc.hasOwnProperty,of=Mc.toString,Ri=Tt?Tt.toStringTag:void 0;function nf(i){var t=rf.call(i,Ri),e=i[Ri];try{i[Ri]=void 0;var r=!0}catch{}var o=of.call(i);return r&&(t?i[Ri]=e:delete i[Ri]),o}var Pc=nf;var sf=Object.prototype,af=sf.toString;function lf(i){return af.call(i)}var Oc=lf;var cf="[object Null]",hf="[object Undefined]",Ic=Tt?Tt.toStringTag:void 0;function pf(i){return i==null?i===void 0?hf:cf:Ic&&Ic in Object(i)?Pc(i):Oc(i)}var Rt=pf;function uf(i){return i!=null&&typeof i=="object"}var xt=uf;var mf="[object Symbol]";function df(i){return typeof i=="symbol"||xt(i)&&Rt(i)==mf}var Oo=df;function ff(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 kn=ff;var yf=Array.isArray,et=yf;var gf=1/0,Ac=Tt?Tt.prototype:void 0,Dc=Ac?Ac.toString:void 0;function Bc(i){if(typeof i=="string")return i;if(et(i))return kn(i,Bc)+"";if(Oo(i))return Dc?Dc.call(i):"";var t=i+"";return t=="0"&&1/i==-gf?"-0":t}var Ec=Bc;function xf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var bt=xf;function bf(i){return i}var Hn=bf;var vf="[object AsyncFunction]",Sf="[object Function]",wf="[object GeneratorFunction]",Lf="[object Proxy]";function Cf(i){if(!bt(i))return!1;var t=Rt(i);return t==Sf||t==wf||t==vf||t==Lf}var Io=Cf;var Tf=Qe["__core-js_shared__"],qn=Tf;var _c=function(){var i=/[^.]+$/.exec(qn&&qn.keys&&qn.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function Nf(i){return!!_c&&_c in i}var Gc=Nf;var Mf=Function.prototype,Pf=Mf.toString;function Of(i){if(i!=null){try{return Pf.call(i)}catch{}try{return i+""}catch{}}return""}var Mr=Of;var If=/[\\^$.*+?()[\]{}|]/g,Af=/^\[object .+?Constructor\]$/,Df=Function.prototype,Bf=Object.prototype,Ef=Df.toString,_f=Bf.hasOwnProperty,Gf=RegExp("^"+Ef.call(_f).replace(If,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function zf(i){if(!bt(i)||Gc(i))return!1;var t=Io(i)?Gf:Af;return t.test(Mr(i))}var zc=zf;function Rf(i,t){return i==null?void 0:i[t]}var Rc=Rf;function Ff(i,t){var e=Rc(i,t);return zc(e)?e:void 0}var At=Ff;var Vf=At(Qe,"WeakMap"),Wn=Vf;var Fc=Object.create,jf=function(){function i(){}return function(t){if(!bt(t))return{};if(Fc)return Fc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),Vc=jf;function Uf(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 jc=Uf;function kf(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var $n=kf;var Hf=800,qf=16,Wf=Date.now;function $f(i){var t=0,e=0;return function(){var r=Wf(),o=qf-(r-e);if(e=r,o>0){if(++t>=Hf)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var Uc=$f;function Jf(i){return function(){return i}}var kc=Jf;var Yf=function(){try{var i=At(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Ao=Yf;var Kf=Ao?function(i,t){return Ao(i,"toString",{configurable:!0,enumerable:!1,value:kc(t),writable:!0})}:Hn,Hc=Kf;var Xf=Uc(Hc),Jn=Xf;function Zf(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var qc=Zf;var Qf=9007199254740991,ey=/^(?:0|[1-9]\d*)$/;function ty(i,t){var e=typeof i;return t=t==null?Qf:t,!!t&&(e=="number"||e!="symbol"&&ey.test(i))&&i>-1&&i%1==0&&i<t}var Yn=ty;function ry(i,t,e){t=="__proto__"&&Ao?Ao(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Do=ry;function oy(i,t){return i===t||i!==i&&t!==t}var jr=oy;var iy=Object.prototype,ny=iy.hasOwnProperty;function sy(i,t,e){var r=i[t];(!(ny.call(i,t)&&jr(r,e))||e===void 0&&!(t in i))&&Do(i,t,e)}var Kn=sy;function ay(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?Do(e,a,l):Kn(e,a,l)}return e}var Ht=ay;var Wc=Math.max;function ly(i,t,e){return t=Wc(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=Wc(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),jc(i,this,a)}}var Xn=ly;function cy(i,t){return Jn(Xn(i,t,Hn),i+"")}var $c=cy;var hy=9007199254740991;function py(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=hy}var Zn=py;function uy(i){return i!=null&&Zn(i.length)&&!Io(i)}var Ur=uy;function my(i,t,e){if(!bt(e))return!1;var r=typeof t;return(r=="number"?Ur(e)&&Yn(t,e.length):r=="string"&&t in e)?jr(e[t],i):!1}var Jc=my;function dy(i){return $c(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&&Jc(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 Yc=dy;var fy=Object.prototype;function yy(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||fy;return i===e}var Bo=yy;function gy(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Kc=gy;var xy="[object Arguments]";function by(i){return xt(i)&&Rt(i)==xy}var Ra=by;var Xc=Object.prototype,vy=Xc.hasOwnProperty,Sy=Xc.propertyIsEnumerable,wy=Ra(function(){return arguments}())?Ra:function(i){return xt(i)&&vy.call(i,"callee")&&!Sy.call(i,"callee")},ho=wy;function Ly(){return!1}var Zc=Ly;var th=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Qc=th&&typeof module=="object"&&module&&!module.nodeType&&module,Cy=Qc&&Qc.exports===th,eh=Cy?Qe.Buffer:void 0,Ty=eh?eh.isBuffer:void 0,Ny=Ty||Zc,Eo=Ny;var My="[object Arguments]",Py="[object Array]",Oy="[object Boolean]",Iy="[object Date]",Ay="[object Error]",Dy="[object Function]",By="[object Map]",Ey="[object Number]",_y="[object Object]",Gy="[object RegExp]",zy="[object Set]",Ry="[object String]",Fy="[object WeakMap]",Vy="[object ArrayBuffer]",jy="[object DataView]",Uy="[object Float32Array]",ky="[object Float64Array]",Hy="[object Int8Array]",qy="[object Int16Array]",Wy="[object Int32Array]",$y="[object Uint8Array]",Jy="[object Uint8ClampedArray]",Yy="[object Uint16Array]",Ky="[object Uint32Array]",Ue={};Ue[Uy]=Ue[ky]=Ue[Hy]=Ue[qy]=Ue[Wy]=Ue[$y]=Ue[Jy]=Ue[Yy]=Ue[Ky]=!0;Ue[My]=Ue[Py]=Ue[Vy]=Ue[Oy]=Ue[jy]=Ue[Iy]=Ue[Ay]=Ue[Dy]=Ue[By]=Ue[Ey]=Ue[_y]=Ue[Gy]=Ue[zy]=Ue[Ry]=Ue[Fy]=!1;function Xy(i){return xt(i)&&Zn(i.length)&&!!Ue[Rt(i)]}var rh=Xy;function Zy(i){return function(t){return i(t)}}var _o=Zy;var oh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Fi=oh&&typeof module=="object"&&module&&!module.nodeType&&module,Qy=Fi&&Fi.exports===oh,Fa=Qy&&Un.process,eg=function(){try{var i=Fi&&Fi.require&&Fi.require("util").types;return i||Fa&&Fa.binding&&Fa.binding("util")}catch{}}(),Pr=eg;var ih=Pr&&Pr.isTypedArray,tg=ih?_o(ih):rh,Qn=tg;var rg=Object.prototype,og=rg.hasOwnProperty;function ig(i,t){var e=et(i),r=!e&&ho(i),o=!e&&!r&&Eo(i),n=!e&&!r&&!o&&Qn(i),s=e||r||o||n,a=s?Kc(i.length,String):[],l=a.length;for(var c in i)(t||og.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Yn(c,l)))&&a.push(c);return a}var es=ig;function ng(i,t){return function(e){return i(t(e))}}var ts=ng;var sg=ts(Object.keys,Object),nh=sg;var ag=Object.prototype,lg=ag.hasOwnProperty;function cg(i){if(!Bo(i))return nh(i);var t=[];for(var e in Object(i))lg.call(i,e)&&e!="constructor"&&t.push(e);return t}var sh=cg;function hg(i){return Ur(i)?es(i):sh(i)}var Go=hg;function pg(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var ah=pg;var ug=Object.prototype,mg=ug.hasOwnProperty;function dg(i){if(!bt(i))return ah(i);var t=Bo(i),e=[];for(var r in i)r=="constructor"&&(t||!mg.call(i,r))||e.push(r);return e}var lh=dg;function fg(i){return Ur(i)?es(i,!0):lh(i)}var lr=fg;var yg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,gg=/^\w*$/;function xg(i,t){if(et(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||Oo(i)?!0:gg.test(i)||!yg.test(i)||t!=null&&i in Object(t)}var ch=xg;var bg=At(Object,"create"),Or=bg;function vg(){this.__data__=Or?Or(null):{},this.size=0}var hh=vg;function Sg(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var ph=Sg;var wg="__lodash_hash_undefined__",Lg=Object.prototype,Cg=Lg.hasOwnProperty;function Tg(i){var t=this.__data__;if(Or){var e=t[i];return e===wg?void 0:e}return Cg.call(t,i)?t[i]:void 0}var uh=Tg;var Ng=Object.prototype,Mg=Ng.hasOwnProperty;function Pg(i){var t=this.__data__;return Or?t[i]!==void 0:Mg.call(t,i)}var mh=Pg;var Og="__lodash_hash_undefined__";function Ig(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Or&&t===void 0?Og:t,this}var dh=Ig;function zo(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])}}zo.prototype.clear=hh;zo.prototype.delete=ph;zo.prototype.get=uh;zo.prototype.has=mh;zo.prototype.set=dh;var Va=zo;function Ag(){this.__data__=[],this.size=0}var fh=Ag;function Dg(i,t){for(var e=i.length;e--;)if(jr(i[e][0],t))return e;return-1}var kr=Dg;var Bg=Array.prototype,Eg=Bg.splice;function _g(i){var t=this.__data__,e=kr(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():Eg.call(t,e,1),--this.size,!0}var yh=_g;function Gg(i){var t=this.__data__,e=kr(t,i);return e<0?void 0:t[e][1]}var gh=Gg;function zg(i){return kr(this.__data__,i)>-1}var xh=zg;function Rg(i,t){var e=this.__data__,r=kr(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var bh=Rg;function Ro(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])}}Ro.prototype.clear=fh;Ro.prototype.delete=yh;Ro.prototype.get=gh;Ro.prototype.has=xh;Ro.prototype.set=bh;var Hr=Ro;var Fg=At(Qe,"Map"),qr=Fg;function Vg(){this.size=0,this.__data__={hash:new Va,map:new(qr||Hr),string:new Va}}var vh=Vg;function jg(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var Sh=jg;function Ug(i,t){var e=i.__data__;return Sh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var Wr=Ug;function kg(i){var t=Wr(this,i).delete(i);return this.size-=t?1:0,t}var wh=kg;function Hg(i){return Wr(this,i).get(i)}var Lh=Hg;function qg(i){return Wr(this,i).has(i)}var Ch=qg;function Wg(i,t){var e=Wr(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var Th=Wg;function Fo(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])}}Fo.prototype.clear=vh;Fo.prototype.delete=wh;Fo.prototype.get=Lh;Fo.prototype.has=Ch;Fo.prototype.set=Th;var Vi=Fo;var $g="Expected a function";function ja(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError($g);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(ja.Cache||Vi),e}ja.Cache=Vi;var Nh=ja;var Jg=500;function Yg(i){var t=Nh(i,function(r){return e.size===Jg&&e.clear(),r}),e=t.cache;return t}var Mh=Yg;var Kg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Xg=/\\(\\)?/g,Zg=Mh(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(Kg,function(e,r,o,n){t.push(o?n.replace(Xg,"$1"):r||e)}),t}),Ph=Zg;function Qg(i){return i==null?"":Ec(i)}var Oh=Qg;function ex(i,t){return et(i)?i:ch(i,t)?[i]:Ph(Oh(i))}var Vo=ex;var tx=1/0;function rx(i){if(typeof i=="string"||Oo(i))return i;var t=i+"";return t=="0"&&1/i==-tx?"-0":t}var rs=rx;function ox(i,t){t=Vo(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[rs(t[e++])];return e&&e==r?i:void 0}var Ih=ox;function ix(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var jo=ix;var Ah=Tt?Tt.isConcatSpreadable:void 0;function nx(i){return et(i)||ho(i)||!!(Ah&&i&&i[Ah])}var Dh=nx;function Bh(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=Dh),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Bh(a,t-1,e,r,o):jo(o,a):r||(o[o.length]=a)}return o}var Eh=Bh;function sx(i){var t=i==null?0:i.length;return t?Eh(i,1):[]}var _h=sx;function ax(i){return Jn(Xn(i,void 0,_h),i+"")}var Gh=ax;var lx=ts(Object.getPrototypeOf,Object),Uo=lx;var cx="[object Object]",hx=Function.prototype,px=Object.prototype,zh=hx.toString,ux=px.hasOwnProperty,mx=zh.call(Object);function dx(i){if(!xt(i)||Rt(i)!=cx)return!1;var t=Uo(i);if(t===null)return!0;var e=ux.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&zh.call(e)==mx}var os=dx;function fx(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 Rh=fx;function yx(){this.__data__=new Hr,this.size=0}var Fh=yx;function gx(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var Vh=gx;function xx(i){return this.__data__.get(i)}var jh=xx;function bx(i){return this.__data__.has(i)}var Uh=bx;var vx=200;function Sx(i,t){var e=this.__data__;if(e instanceof Hr){var r=e.__data__;if(!qr||r.length<vx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new Vi(r)}return e.set(i,t),this.size=e.size,this}var kh=Sx;function ko(i){var t=this.__data__=new Hr(i);this.size=t.size}ko.prototype.clear=Fh;ko.prototype.delete=Vh;ko.prototype.get=jh;ko.prototype.has=Uh;ko.prototype.set=kh;var is=ko;function wx(i,t){return i&&Ht(t,Go(t),i)}var Hh=wx;function Lx(i,t){return i&&Ht(t,lr(t),i)}var qh=Lx;var Yh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Wh=Yh&&typeof module=="object"&&module&&!module.nodeType&&module,Cx=Wh&&Wh.exports===Yh,$h=Cx?Qe.Buffer:void 0,Jh=$h?$h.allocUnsafe:void 0;function Tx(i,t){if(t)return i.slice();var e=i.length,r=Jh?Jh(e):new i.constructor(e);return i.copy(r),r}var ns=Tx;function Nx(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 Kh=Nx;function Mx(){return[]}var ss=Mx;var Px=Object.prototype,Ox=Px.propertyIsEnumerable,Xh=Object.getOwnPropertySymbols,Ix=Xh?function(i){return i==null?[]:(i=Object(i),Kh(Xh(i),function(t){return Ox.call(i,t)}))}:ss,Ho=Ix;function Ax(i,t){return Ht(i,Ho(i),t)}var Zh=Ax;var Dx=Object.getOwnPropertySymbols,Bx=Dx?function(i){for(var t=[];i;)jo(t,Ho(i)),i=Uo(i);return t}:ss,as=Bx;function Ex(i,t){return Ht(i,as(i),t)}var Qh=Ex;function _x(i,t,e){var r=t(i);return et(i)?r:jo(r,e(i))}var ls=_x;function Gx(i){return ls(i,Go,Ho)}var ep=Gx;function zx(i){return ls(i,lr,as)}var cs=zx;var Rx=At(Qe,"DataView"),hs=Rx;var Fx=At(Qe,"Promise"),ps=Fx;var Vx=At(Qe,"Set"),us=Vx;var tp="[object Map]",jx="[object Object]",rp="[object Promise]",op="[object Set]",ip="[object WeakMap]",np="[object DataView]",Ux=Mr(hs),kx=Mr(qr),Hx=Mr(ps),qx=Mr(us),Wx=Mr(Wn),po=Rt;(hs&&po(new hs(new ArrayBuffer(1)))!=np||qr&&po(new qr)!=tp||ps&&po(ps.resolve())!=rp||us&&po(new us)!=op||Wn&&po(new Wn)!=ip)&&(po=function(i){var t=Rt(i),e=t==jx?i.constructor:void 0,r=e?Mr(e):"";if(r)switch(r){case Ux:return np;case kx:return tp;case Hx:return rp;case qx:return op;case Wx:return ip}return t});var qo=po;var $x=Object.prototype,Jx=$x.hasOwnProperty;function Yx(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Jx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var sp=Yx;var Kx=Qe.Uint8Array,Ua=Kx;function Xx(i){var t=new i.constructor(i.byteLength);return new Ua(t).set(new Ua(i)),t}var Wo=Xx;function Zx(i,t){var e=t?Wo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var ap=Zx;var Qx=/\w*$/;function e0(i){var t=new i.constructor(i.source,Qx.exec(i));return t.lastIndex=i.lastIndex,t}var lp=e0;var cp=Tt?Tt.prototype:void 0,hp=cp?cp.valueOf:void 0;function t0(i){return hp?Object(hp.call(i)):{}}var pp=t0;function r0(i,t){var e=t?Wo(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ms=r0;var o0="[object Boolean]",i0="[object Date]",n0="[object Map]",s0="[object Number]",a0="[object RegExp]",l0="[object Set]",c0="[object String]",h0="[object Symbol]",p0="[object ArrayBuffer]",u0="[object DataView]",m0="[object Float32Array]",d0="[object Float64Array]",f0="[object Int8Array]",y0="[object Int16Array]",g0="[object Int32Array]",x0="[object Uint8Array]",b0="[object Uint8ClampedArray]",v0="[object Uint16Array]",S0="[object Uint32Array]";function w0(i,t,e){var r=i.constructor;switch(t){case p0:return Wo(i);case o0:case i0:return new r(+i);case u0:return ap(i,e);case m0:case d0:case f0:case y0:case g0:case x0:case b0:case v0:case S0:return ms(i,e);case n0:return new r;case s0:case c0:return new r(i);case a0:return lp(i);case l0:return new r;case h0:return pp(i)}}var up=w0;function L0(i){return typeof i.constructor=="function"&&!Bo(i)?Vc(Uo(i)):{}}var ds=L0;var C0="[object Map]";function T0(i){return xt(i)&&qo(i)==C0}var mp=T0;var dp=Pr&&Pr.isMap,N0=dp?_o(dp):mp,fp=N0;var M0="[object Set]";function P0(i){return xt(i)&&qo(i)==M0}var yp=P0;var gp=Pr&&Pr.isSet,O0=gp?_o(gp):yp,xp=O0;var I0=1,A0=2,D0=4,bp="[object Arguments]",B0="[object Array]",E0="[object Boolean]",_0="[object Date]",G0="[object Error]",vp="[object Function]",z0="[object GeneratorFunction]",R0="[object Map]",F0="[object Number]",Sp="[object Object]",V0="[object RegExp]",j0="[object Set]",U0="[object String]",k0="[object Symbol]",H0="[object WeakMap]",q0="[object ArrayBuffer]",W0="[object DataView]",$0="[object Float32Array]",J0="[object Float64Array]",Y0="[object Int8Array]",K0="[object Int16Array]",X0="[object Int32Array]",Z0="[object Uint8Array]",Q0="[object Uint8ClampedArray]",eb="[object Uint16Array]",tb="[object Uint32Array]",Re={};Re[bp]=Re[B0]=Re[q0]=Re[W0]=Re[E0]=Re[_0]=Re[$0]=Re[J0]=Re[Y0]=Re[K0]=Re[X0]=Re[R0]=Re[F0]=Re[Sp]=Re[V0]=Re[j0]=Re[U0]=Re[k0]=Re[Z0]=Re[Q0]=Re[eb]=Re[tb]=!0;Re[G0]=Re[vp]=Re[H0]=!1;function fs(i,t,e,r,o,n){var s,a=t&I0,l=t&A0,c=t&D0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!bt(i))return i;var h=et(i);if(h){if(s=sp(i),!a)return $n(i,s)}else{var p=qo(i),u=p==vp||p==z0;if(Eo(i))return ns(i,a);if(p==Sp||p==bp||u&&!o){if(s=l||u?{}:ds(i),!a)return l?Qh(i,qh(s,i)):Zh(i,Hh(s,i))}else{if(!Re[p])return o?i:{};s=up(i,p,a)}}n||(n=new is);var m=n.get(i);if(m)return m;n.set(i,s),xp(i)?i.forEach(function(b){s.add(fs(b,t,e,b,i,n))}):fp(i)&&i.forEach(function(b,y){s.set(y,fs(b,t,e,y,i,n))});var f=c?l?cs:ep:l?lr:Go,g=h?void 0:f(i);return qc(g||i,function(b,y){g&&(y=b,b=i[y]),Kn(s,y,fs(b,t,e,y,i,n))}),s}var ys=fs;var rb=1,ob=4;function ib(i){return ys(i,rb|ob)}var ji=ib;function nb(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 wp=nb;var sb=wp(),Lp=sb;function ab(i,t,e){(e!==void 0&&!jr(i[t],e)||e===void 0&&!(t in i))&&Do(i,t,e)}var Ui=ab;function lb(i){return xt(i)&&Ur(i)}var Cp=lb;function cb(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var ki=cb;function hb(i){return Ht(i,lr(i))}var Tp=hb;function pb(i,t,e,r,o,n,s){var a=ki(i,e),l=ki(t,e),c=s.get(l);if(c){Ui(i,e,c);return}var h=n?n(a,l,e+"",i,t,s):void 0,p=h===void 0;if(p){var u=et(l),m=!u&&Eo(l),f=!u&&!m&&Qn(l);h=l,u||m||f?et(a)?h=a:Cp(a)?h=$n(a):m?(p=!1,h=ns(l,!0)):f?(p=!1,h=ms(l,!0)):h=[]:os(l)||ho(l)?(h=a,ho(a)?h=Tp(a):(!bt(a)||Io(a))&&(h=ds(l))):p=!1}p&&(s.set(l,h),o(h,l,r,n,s),s.delete(l)),Ui(i,e,h)}var Np=pb;function Mp(i,t,e,r,o){i!==t&&Lp(t,function(n,s){if(o||(o=new is),bt(n))Np(i,t,s,e,Mp,r,o);else{var a=r?r(ki(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),Ui(i,s,a)}},lr)}var Pp=Mp;function ub(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Op=ub;function mb(i,t){return t.length<2?i:Ih(i,Rh(t,0,-1))}var Ip=mb;var db=Yc(function(i,t,e){Pp(i,t,e)}),uo=db;function fb(i,t){return t=Vo(t,i),i=Ip(i,t),i==null||delete i[rs(Op(t))]}var Ap=fb;function yb(i){return os(i)?void 0:i}var Dp=yb;var gb=1,xb=2,bb=4,vb=Gh(function(i,t){var e={};if(i==null)return e;var r=!1;t=kn(t,function(n){return n=Vo(n,i),r||(r=n.length>1),n}),Ht(i,cs(i),e),r&&(e=ys(e,gb|xb|bb,Dp));for(var o=t.length;o--;)Ap(e,t[o]);return e}),$o=vb;var Jo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Jo||(Jo={}));var mo;(o=>{o.DefaultUp=[0,1,0],o.DefaultTargetOffset=1e3,o.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:5,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:o.DefaultUp,isUpVectorFlipped:!1,targetOffset:o.DefaultTargetOffset};function r(n){return n.type==="PerspectiveCamera"?n.perspective.zoom:n.orthographic.zoom}o.getZoom=r})(mo||(mo={}));var Bp;(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})(Bp||(Bp={}));var Yo;(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})(Yo||(Yo={}));var Ep;(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})(Ep||(Ep={}));var $r;(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!=null?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})($r||($r={}));var Ft;(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})(Ft||(Ft={}));var cr;(s=>{s.white=q(I({},Ft.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 q(I({},Ft.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 Ft.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})(cr||(cr={}));var gs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(gs||(gs={}));var _p;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(_p||(_p={}));var Gp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(Gp||(Gp={}));var xs;(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})(xs||(xs={}));var qt=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n=q(I({},r),{[t]:e});return Object.setPrototypeOf(n,qt.prototype),n}}add(t,e){var o;let r=this.runOp({type:1,id:t,data:e});return(o=r==null?void 0:r.data)!=null?o:this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:s}=t,a=q(I({},e),{[n]:s});return Object.setPrototypeOf(a,qt.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=I({},e);return Object.setPrototypeOf(n,qt.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function Hi(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"&&Hi(r)}return Object.freeze(i)}function zp(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 bs=class extends Error{};function hr(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 Rp(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 Fp(){return typeof process<"u"}function Vp(i,t){for(let e of i)t(e.id,e.data),Vp(e.children,t)}function jp(i,t){t(i.id,i.data);for(let e of i.children)jp(e,t)}var Wt=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Wt.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hi(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){var r;return(r=this.get(e))==null?void 0:r.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){var r;return e===null?this:(r=this.get(e))==null?void 0:r.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&jp(o,r)}}traverse(e){Vp(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]=q(I({},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]=q(I({},n[c]),{children:a})}Object.setPrototypeOf(n,Wt.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,m)=>u.fi-m.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:q(I({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 m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===n)throw new bs("cyclic tree");m=this.parent(m)}}let s=this.parent(n);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(m=>m.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=q(I({},h),{fi:o}),l=[...l,h],l.sort((m,f)=>m.fi-f.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,id: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(I(I({},o),n))}r.sort((o,n)=>zp(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 q(I({},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 hr(0,o,o);{let s=n[0].fi;return hr(s-o,s,o)}}else{let s=this.get(r);if(s===void 0||this.parent(r)!==e)throw new Error("illegal args");let a=n.find(l=>l.fi>s.fi);if(a===void 0){let l=n[n.length-1].fi;return hr(l,l+o,o)}else return hr(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=I({},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 Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)Hi(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){var r;return(r=this.get(e))==null?void 0:r.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let 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]=q(I({},a),{data:r}),this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return Fp()||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:I({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=q(I({},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 hr(0,r,r);{let n=o[0].fi;return hr(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 hr(a,a+r,r)}else return hr(n.fi,s.fi,r)}}};var Up=Symbol(),ws=Symbol(),Ko=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof Ss);){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[ws];r&&r(),delete this._children[t]}}}},Ha=class extends Ko{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=q(I({},this._current),{[t]:e})}runOp(t){this.reportOp(t,vs.runOp(this._current,t))}},qa=class extends Ko{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=q(I({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,qt.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},kp={get(i,t){if(t===ws)return()=>{i._parent=null};if(t===Up)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=Ls(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]}}},Sb=q(I({},kp),{set(i,t,e){var o;let r={type:0,props:{[t]:(o=Ja(e))!=null?o: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}}),wb=q(I({},kp),{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}}),Xo=class extends Ko{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ws]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=(a=e.get(t))==null?void 0:a.data,s=Ls(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)}},Zo=class extends Ko{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[ws]=()=>{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 q(I({},this._current.get(t)),{data:this.data(t)})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=(a=e.get(t))==null?void 0:a.data,s=Ls(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&&Cs.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push(q(I({},t),{path:e}))}var Ss=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 Ls(i,t,e){return e instanceof Wt?new Xo(i,t,e):e instanceof Je?new Zo(i,t,e):e instanceof qt?new Proxy(new qa(i,t,e),wb):e!==null&&typeof e=="object"?Rp(e)?e:new Proxy(new Ha(i,t,e),Sb):e}function Wa(i){let t=new Ss(i);return[Ls(t,"",i),t]}function $a(i,t){let[e,r]=Wa(i);return t(e),r.result()}function Ja(i){return i instanceof Xo||i instanceof Zo?i._current:i!==null&&typeof i=="object"?i[Up]:i}var Cs;(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=I({},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 Wt||o instanceof Xo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Je||o instanceof Zo)&&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})(Cs||(Cs={}));var Ts=class{},qi=class extends Ts{constructor(e){super();this.id=e}},Wi=class extends Ts{constructor(e){super();this.data=e}};var Ka;try{Ka=new TextDecoder}catch{}var ee,Yr,S=0;var Xp=[],Xa=Xp,Za=0,Dt={},Oe,Jr,$t=0,pr=0,Vt,Ir,Nt=[],Ae,Hp={useRecords:!1,mapsAsObjects:!0},$i=class{},el=new $i;el.name="MessagePack 0xC1";var Qo=!1,ur=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(ee)return ru(()=>(Ms(),this?this.unpack(t,e):ur.prototype.unpack.call(Hp,t,e)));Yr=e>-1?e:t.length,S=0,Za=0,pr=0,Jr=null,Xa=Xp,Vt=null,ee=t;try{Ae=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ee=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof ur){if(Dt=this,this.structures)return Oe=this.structures,Ns();(!Oe||Oe.length>0)&&(Oe=[])}else Dt=Hp,(!Oe||Oe.length>0)&&(Oe=[]);return Ns()}unpackMultiple(t,e){let r,o=0;try{Qo=!0;let n=t.length,s=this?this.unpack(t,n):Is.unpack(t,n);if(e){for(e(s);S<n;)if(o=S,e(Ns())===!1)return}else{for(r=[s];S<n;)o=S,r.push(Ns());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{Qo=!1,Ms()}}_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 Ns(){try{if(!Dt.trusted&&!Qo){let t=Oe.sharedLength||0;t<Oe.length&&(Oe.length=t)}let i=Ye();if(S==Yr)Oe.restoreStructures&&qp(),Oe=null,ee=null,Ir&&(Ir=null);else if(S>Yr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!Qo)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Oe.restoreStructures&&qp(),Ms(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function qp(){for(let i in Oe.restoreStructures)Oe[i]=Oe.restoreStructures[i];Oe.restoreStructures=null}function Ye(){let i=ee[S++];if(i<160)if(i<128){if(i<64)return i;{let t=Oe[i&63]||Dt.getStructures&&Zp()[i&63];return t?(t.read||(t.read=tl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,Dt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[eu()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}else if(i<192){let t=i-160;if(pr>=S)return Jr.slice(S-$t,(S+=t)-$t);if(pr==0&&Yr<140){let e=t<16?rl(t):Qp(t);if(e!=null)return e}return Qa(t)}else{let t;switch(i){case 192:return null;case 193:return Vt?(t=Ye(),t>0?Vt[1].slice(Vt.position1,Vt.position1+=t):Vt[0].slice(Vt.position0,Vt.position0-=t)):el;case 194:return!1;case 195:return!0;case 196:return Ya(ee[S++]);case 197:return t=Ae.getUint16(S),S+=2,Ya(t);case 198:return t=Ae.getUint32(S),S+=4,Ya(t);case 199:return fo(ee[S++]);case 200:return t=Ae.getUint16(S),S+=2,fo(t);case 201:return t=Ae.getUint32(S),S+=4,fo(t);case 202:if(t=Ae.getFloat32(S),Dt.useFloat32>2){let e=Os[(ee[S]&127)<<1|ee[S+1]>>7];return S+=4,(e*t+(t>0?.5:-.5)>>0)/e}return S+=4,t;case 203:return t=Ae.getFloat64(S),S+=8,t;case 204:return ee[S++];case 205:return t=Ae.getUint16(S),S+=2,t;case 206:return t=Ae.getUint32(S),S+=4,t;case 207:return Dt.int64AsNumber?(t=Ae.getUint32(S)*4294967296,t+=Ae.getUint32(S+4)):t=Ae.getBigUint64(S),S+=8,t;case 208:return Ae.getInt8(S++);case 209:return t=Ae.getInt16(S),S+=2,t;case 210:return t=Ae.getInt32(S),S+=4,t;case 211:return Dt.int64AsNumber?(t=Ae.getInt32(S)*4294967296,t+=Ae.getUint32(S+4)):t=Ae.getBigInt64(S),S+=8,t;case 212:if(t=ee[S++],t==114)return Kp(ee[S++]&63);{let e=Nt[t];if(e)return e.read?(S++,e.read(Ye())):e.noBuffer?(S++,e()):e(ee.subarray(S,++S));throw new Error("Unknown extension "+t)}case 213:return t=ee[S],t==114?(S++,Kp(ee[S++]&63,ee[S++])):fo(2);case 214:return fo(4);case 215:return fo(8);case 216:return fo(16);case 217:return t=ee[S++],pr>=S?Jr.slice(S-$t,(S+=t)-$t):Cb(t);case 218:return t=Ae.getUint16(S),S+=2,pr>=S?Jr.slice(S-$t,(S+=t)-$t):Tb(t);case 219:return t=Ae.getUint32(S),S+=4,pr>=S?Jr.slice(S-$t,(S+=t)-$t):Nb(t);case 220:return t=Ae.getUint16(S),S+=2,$p(t);case 221:return t=Ae.getUint32(S),S+=4,$p(t);case 222:return t=Ae.getUint16(S),S+=2,Jp(t);case 223:return t=Ae.getUint32(S),S+=4,Jp(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 Lb=/^[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=>Lb.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Ye);return i.highByte===0&&(i.read=Wp(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=Ye()}return r}return e.count=0,i.highByte===0?Wp(t,e):e}var Wp=(i,t)=>function(){let e=ee[S++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=Oe[r]||Zp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=tl(o,i)),o.read()};function Zp(){let i=ru(()=>(ee=null,Dt.getStructures()));return Oe=Dt._mergeStructures(i,Oe)}var Qa=Ps,Cb=Ps,Tb=Ps,Nb=Ps;function Ps(i){let t;if(i<16&&(t=rl(i)))return t;if(i>64&&Ka)return Ka.decode(ee.subarray(S,S+=i));let e=S+i,r=[];for(t="";S<e;){let o=ee[S++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=ee[S++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=ee[S++]&63,s=ee[S++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=ee[S++]&63,s=ee[S++]&63,a=ee[S++]&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+=at.apply(String,r),r.length=0)}return r.length>0&&(t+=at.apply(String,r)),t}function $p(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}function Jp(i){if(Dt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[eu()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}}var at=String.fromCharCode;function Qp(i){let t=S,e=new Array(i);for(let r=0;r<i;r++){let o=ee[S++];if((o&128)>0){S=t;return}e[r]=o}return at.apply(String,e)}function rl(i){if(i<4)if(i<2){if(i===0)return"";{let t=ee[S++];if((t&128)>1){S-=1;return}return at(t)}}else{let t=ee[S++],e=ee[S++];if((t&128)>0||(e&128)>0){S-=2;return}if(i<3)return at(t,e);let r=ee[S++];if((r&128)>0){S-=3;return}return at(t,e,r)}else{let t=ee[S++],e=ee[S++],r=ee[S++],o=ee[S++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){S-=4;return}if(i<6){if(i===4)return at(t,e,r,o);{let n=ee[S++];if((n&128)>0){S-=5;return}return at(t,e,r,o,n)}}else if(i<8){let n=ee[S++],s=ee[S++];if((n&128)>0||(s&128)>0){S-=6;return}if(i<7)return at(t,e,r,o,n,s);let a=ee[S++];if((a&128)>0){S-=7;return}return at(t,e,r,o,n,s,a)}else{let n=ee[S++],s=ee[S++],a=ee[S++],l=ee[S++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){S-=8;return}if(i<10){if(i===8)return at(t,e,r,o,n,s,a,l);{let c=ee[S++];if((c&128)>0){S-=9;return}return at(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=ee[S++],h=ee[S++];if((c&128)>0||(h&128)>0){S-=10;return}if(i<11)return at(t,e,r,o,n,s,a,l,c,h);let p=ee[S++];if((p&128)>0){S-=11;return}return at(t,e,r,o,n,s,a,l,c,h,p)}else{let c=ee[S++],h=ee[S++],p=ee[S++],u=ee[S++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){S-=12;return}if(i<14){if(i===12)return at(t,e,r,o,n,s,a,l,c,h,p,u);{let m=ee[S++];if((m&128)>0){S-=13;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,m)}}else{let m=ee[S++],f=ee[S++];if((m&128)>0||(f&128)>0){S-=14;return}if(i<15)return at(t,e,r,o,n,s,a,l,c,h,p,u,m,f);let g=ee[S++];if((g&128)>0){S-=15;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,m,f,g)}}}}}function Ya(i){return Dt.copyBuffers?Uint8Array.prototype.slice.call(ee,S,S+=i):ee.subarray(S,S+=i)}function fo(i){let t=ee[S++];if(Nt[t])return Nt[t](ee.subarray(S,S+=i));throw new Error("Unknown extension type "+t)}var Yp=new Array(4096);function eu(){let i=ee[S++];if(i>=160&&i<192){if(i=i-160,pr>=S)return Jr.slice(S-$t,(S+=i)-$t);if(!(pr==0&&Yr<180))return Qa(i)}else return S--,Ye();let t=(i<<5^(i>1?Ae.getUint16(S):i>0?ee[S]:0))&4095,e=Yp[t],r=S,o=S+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Ae.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=ee[r++],n!=e[s++]){r=1879048192;break}if(r===o)return S=r,e.string;o-=3,r=S}for(e=[],Yp[t]=e,e.bytes=i;r<o;)n=Ae.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=ee[r++],e.push(n);let a=i<16?rl(i):Qp(i);return a!=null?e.string=a:e.string=Qa(i)}var Kp=(i,t)=>{var e=Ye();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=Oe[i];return o&&o.isShared&&((Oe.restoreStructures||(Oe.restoreStructures=[]))[i]=o),Oe[i]=e,e.read=tl(e,r),e.read()},tu=typeof self=="object"?self:global;Nt[0]=()=>{};Nt[0].noBuffer=!0;Nt[101]=()=>{let i=Ye();return(tu[i[0]]||Error)(i[1])};Nt[105]=i=>{let t=Ae.getUint32(S-4);Ir||(Ir=new Map);let e=ee[S],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Ir.set(t,o);let n=Ye();return o.used?Object.assign(r,n):(o.target=n,n)};Nt[112]=i=>{let t=Ae.getUint32(S-4),e=Ir.get(t);return e.used=!0,e.target};Nt[115]=()=>new Set(Ye());var ol=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Nt[116]=i=>{let t=i[0],e=ol[t];if(!e)throw new Error("Could not find typed array for code "+t);return new tu[e](Uint8Array.prototype.slice.call(i,1).buffer)};Nt[120]=()=>{let i=Ye();return new RegExp(i[0],i[1])};Nt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=S;S+=t-4,Vt=[Ye(),Ye()],Vt.position0=0,Vt.position1=0;let r=S;S=e;try{return Ye()}finally{S=r}};Nt[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 ru(i){let t=Yr,e=S,r=Za,o=$t,n=pr,s=Jr,a=Xa,l=Ir,c=Vt,h=new Uint8Array(ee.slice(0,Yr)),p=Oe,u=Oe.slice(0,Oe.length),m=Dt,f=Qo,g=i();return Yr=t,S=e,Za=r,$t=o,pr=n,Jr=s,Xa=a,Ir=l,Vt=c,ee=h,Qo=f,Oe=p,Oe.splice(0,Oe.length,...u),Dt=m,Ae=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),g}function Ms(){ee=null,Ir=null,Oe=null}function ou(i){i.unpack?Nt[i.type]=i.unpack:Nt[i.type]=i}var Os=new Array(147);for(let i=0;i<256;i++)Os[i]=+("1e"+Math.floor(45.15-i*.30103));var Is=new ur({useRecords:!1}),Mb=Is.unpack,Pb=Is.unpackMultiple,Ob=Is.unpack,As={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Ib=new Float32Array(1),nA=new Uint8Array(Ib.buffer,0,4);var Ds;try{Ds=new TextEncoder}catch{}var Bs,nl,Es=typeof Buffer<"u",il=Es?Buffer.allocUnsafeSlow:Uint8Array,au=Es?Buffer:Uint8Array,iu=Es?4294967296:2144337920,R,Ke,M=0,mr,dr=null,Ab=/[\u0080-\uFFFF]/,Ji=Symbol("record-id"),yo=class extends ur{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=au.prototype.utf8Write?function(d,O,x){return R.utf8Write(d,O,x)}:Ds&&Ds.encodeInto?function(d,O){return Ds.encodeInto(d,R.subarray(O)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,u=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=u?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=m>32||f+m>64,b=m+64,y=m+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let v=[],D=0,N=0;this.pack=this.encode=function(d,O){if(R||(R=new il(8192),Ke=new DataView(R.buffer,0,8192),M=0),mr=R.length-10,mr-M<2048?(R=new il(R.length),Ke=new DataView(R.buffer,0,R.length),mr=R.length-10,M=0):M=M+7&2147483640,r=M,a=h.structuredClone?new Map:null,h.bundleStrings?(dr=["",""],R[M++]=214,R[M++]=98,dr.position=M-r,M+=4):dr=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let x=o.sharedLength||0;if(x>m)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 L=0;L<x;L++){let C=o[L];if(!C)continue;let P,$=o.transitions;for(let K=0,oe=C.length;K<oe;K++){let ae=C[K];P=$[ae],P||(P=$[ae]=Object.create(null)),$=P}$[Ji]=L+64}l=x}p||(o.nextId=x+64)}n&&(n=!1),s=o||[];try{if(w(d),dr){Ke.setUint32(dr.position+r,M-dr.position-r);let x=dr;dr=null,w(x[0]),w(x[1])}if(h.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>mr&&T(M),h.offset=M;let x=Bb(R.subarray(r,M),a.idsToInsert);return a=null,x}return O&cu?(R.start=r,R.end=M,R):R.subarray(r,M)}finally{if(o){if(N<10&&N++,D>1e4)o.transitions=null,N=0,D=0,v.length>0&&(v=[]);else if(v.length>0&&!p){for(let x=0,L=v.length;x<L;x++)v[x][Ji]=0;v=[]}if(n&&h.saveStructures){let x=o.sharedLength||m;o.length>x&&(o=o.slice(0,x));let L=R.subarray(r,M);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(d)):(l=x,L)}}O&Vb&&(M=r)}};let w=d=>{M>mr&&(R=T(M));var O=typeof d,x;if(O==="string"){let L=d.length;if(dr&&L>=8&&L<4096){let $=Ab.test(d);dr[$?0:1]+=d,R[M++]=193,w($?-L:L);return}let C;L<32?C=1:L<256?C=2:L<65536?C=3:C=5;let P=L*3;if(M+P>mr&&(R=T(M+P)),L<64||!c){let $,K,oe,ae=M+C;for($=0;$<L;$++)K=d.charCodeAt($),K<128?R[ae++]=K:K<2048?(R[ae++]=K>>6|192,R[ae++]=K&63|128):(K&64512)===55296&&((oe=d.charCodeAt($+1))&64512)===56320?(K=65536+((K&1023)<<10)+(oe&1023),$++,R[ae++]=K>>18|240,R[ae++]=K>>12&63|128,R[ae++]=K>>6&63|128,R[ae++]=K&63|128):(R[ae++]=K>>12|224,R[ae++]=K>>6&63|128,R[ae++]=K&63|128);x=ae-M-C}else x=c(d,M+C,P);x<32?R[M++]=160|x:x<256?(C<2&&R.copyWithin(M+2,M+1,M+1+x),R[M++]=217,R[M++]=x):x<65536?(C<3&&R.copyWithin(M+3,M+2,M+2+x),R[M++]=218,R[M++]=x>>8,R[M++]=x&255):(C<5&&R.copyWithin(M+5,M+3,M+3+x),R[M++]=219,Ke.setUint32(M,x),M+=4),M+=x}else if(O==="number")if(d>>>0===d)d<64?R[M++]=d:d<256?(R[M++]=204,R[M++]=d):d<65536?(R[M++]=205,R[M++]=d>>8,R[M++]=d&255):(R[M++]=206,Ke.setUint32(M,d),M+=4);else if(d>>0===d)d>=-32?R[M++]=256+d:d>=-128?(R[M++]=208,R[M++]=d+256):d>=-32768?(R[M++]=209,Ke.setInt16(M,d),M+=2):(R[M++]=210,Ke.setInt32(M,d),M+=4);else{let L;if((L=this.useFloat32)>0&&d<4294967296&&d>=-2147483648){R[M++]=202,Ke.setFloat32(M,d);let C;if(L<4||(C=d*Os[(R[M]&127)<<1|R[M+1]>>7])>>0===C){M+=4;return}else M--}R[M++]=203,Ke.setFloat64(M,d),M+=8}else if(O==="object")if(!d)R[M++]=192;else{if(a){let C=a.get(d);if(C){if(!C.id){let P=a.idsToInsert||(a.idsToInsert=[]);C.id=P.push(C)}R[M++]=214,R[M++]=112,Ke.setUint32(M,C.id),M+=4;return}else a.set(d,{offset:M-r})}let L=d.constructor;if(L===Object)H(d,!0);else if(L===Array){x=d.length,x<16?R[M++]=144|x:x<65536?(R[M++]=220,R[M++]=x>>8,R[M++]=x&255):(R[M++]=221,Ke.setUint32(M,x),M+=4);for(let C=0;C<x;C++)w(d[C])}else if(L===Map){x=d.size,x<16?R[M++]=128|x:x<65536?(R[M++]=222,R[M++]=x>>8,R[M++]=x&255):(R[M++]=223,Ke.setUint32(M,x),M+=4);for(let[C,P]of d)w(C),w(P)}else{for(let C=0,P=Bs.length;C<P;C++){let $=nl[C];if(d instanceof $){let K=Bs[C];if(K.write){K.type&&(R[M++]=212,R[M++]=K.type,R[M++]=0),w(K.write.call(this,d));return}let oe=R,ae=Ke,ne=M;R=null;let ge;try{ge=K.pack.call(this,d,V=>(R=oe,oe=null,M+=V,M>mr&&T(M),{target:R,targetView:Ke,position:M-V}),w)}finally{oe&&(R=oe,Ke=ae,M=ne,mr=R.length-10)}ge&&(ge.length+M>mr&&T(ge.length+M),M=Db(ge,R,M,K.type));return}}H(d,!d.hasOwnProperty)}}else if(O==="boolean")R[M++]=d?195:194;else if(O==="bigint"){if(d<BigInt(1)<<BigInt(63)&&d>=-(BigInt(1)<<BigInt(63)))R[M++]=211,Ke.setBigInt64(M,d);else if(d<BigInt(1)<<BigInt(64)&&d>0)R[M++]=207,Ke.setBigUint64(M,d);else if(this.largeBigIntToFloat)R[M++]=203,Ke.setFloat64(M,Number(d));else throw new RangeError(d+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(O==="undefined")this.encodeUndefinedAsNil?R[M++]=192:(R[M++]=212,R[M++]=0,R[M++]=0);else if(O==="function")w(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+O)},H=this.useRecords===!1?this.variableMapSize?d=>{let O=Object.keys(d),x=O.length;x<16?R[M++]=128|x:x<65536?(R[M++]=222,R[M++]=x>>8,R[M++]=x&255):(R[M++]=223,Ke.setUint32(M,x),M+=4);let L;for(let C=0;C<x;C++)w(L=O[C]),w(d[L])}:(d,O)=>{R[M++]=222;let x=M-r;M+=2;let L=0;for(let C in d)(O||d.hasOwnProperty(C))&&(w(C),w(d[C]),L++);R[x+++r]=L>>8,R[x+r]=L&255}:d=>{let O=Object.keys(d),x,L=s.transitions||(s.transitions=Object.create(null)),C=0;for(let $=0,K=O.length;$<K;$++){let oe=O[$];x=L[oe],x||(x=L[oe]=Object.create(null),C++),L=x}let P=L[Ji];if(P)P>=96&&g?(R[M++]=((P-=96)&31)+96,R[M++]=P>>5):R[M++]=P;else{P=s.nextId,P||(P=64),P<b&&this.shouldShareStructure&&!this.shouldShareStructure(O)?(P=s.nextOwnId,P<y||(P=b),s.nextOwnId=P+1):(P>=y&&(P=b),s.nextId=P+1);let $=O.highByte=P>=96&&g?P-96>>5:-1;L[Ji]=P,s[P-64]=O,P<b?(O.isShared=!0,s.sharedLength=P-63,n=!0,$>=0?(R[M++]=(P&31)+96,R[M++]=$):R[M++]=P):($>=0?(R[M++]=213,R[M++]=114,R[M++]=(P&31)+96,R[M++]=$):(R[M++]=212,R[M++]=114,R[M++]=P),C&&(D+=N*C),v.length>=f&&(v.shift()[Ji]=0),v.push(L),w(O))}for(let $=0,K=O.length;$<K;$++)w(d[O[$]])},T=d=>{let O;if(d>16777216){if(d-r>iu)throw new Error("Packed buffer would be larger than maximum buffer size");O=Math.min(iu,Math.round(Math.max((d-r)*(d>67108864?1.25:2),4194304)/4096)*4096)}else O=(Math.max(d-r<<2,R.length-1)>>12)+1<<12;let x=new il(O);return Ke=new DataView(x.buffer,0,O),R.copy?R.copy(x,0,r,d):x.set(R.slice(r,d)),M-=r,r=0,mr=x.length-10,R=x}}useBuffer(t){R=t,Ke=new DataView(R.buffer,R.byteOffset,R.byteLength),M=0}};nl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,$i];Bs=[{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?nu(i,16,t):su(Es?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==au&&this.structuredClone?nu(i,ol.indexOf(e.name),t):su(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function nu(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 su(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 Db(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 Bb(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 go(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)");nl.unshift(i.Class),Bs.unshift(i)}ou(i)}var lu=new yo({useRecords:!1}),Eb=lu.pack,_b=lu.pack;var{NEVER:Gb,ALWAYS:zb,DECIMAL_ROUND:Rb,DECIMAL_FIT:Fb}=As,cu=512,Vb=1024;var hu=new yo({structuredClone:!0});go({Class:qt.prototype.constructor,type:1,write(i){return I({},i)},read(i){return Object.setPrototypeOf(i,qt.prototype),i}});go({Class:Je.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Je.prototype),i}});go({Class:Wt.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Wt.prototype),i}});go({Class:qi.prototype.constructor,type:4,write(i){return i.id},read(i){return new qi(i)}});go({Class:Wi.prototype.constructor,type:5,write(i){return i.data},read(i){return new Wi(i)}});function jb(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}var _s;(r=>{function i(o){return hu.pack(o)}r.serialize=i;function t(o){return hu.unpack(o)}r.deserialize=t;function e(o){return jb(i(o)).toString()}r.checksum=e})(_s||(_s={}));var Gs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(Gs||(Gs={}));var zs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:2500,helper:!0};if(r==="SpotLight")return{type:r,color:cr.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:2500,helper:!0};if(r==="DirectionalLight")return{type:r,color:cr.white,intensity:1,shadows:!0,size:2500,depth:2500,helper:!0};throw new Error("not implemented")}})(zs||(zs={}));var sl;(e=>{e.defaultData={castShadow:!0,receiveShadow:!0};function t(r,o){return r.castShadow===o.castShadow&&r.receiveShadow===o.receiveShadow}e.equals=t})(sl||(sl={}));var al;(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})(al||(al={}));var Rs;(t=>t.defaultData=q(I(I({},al.defaultData),sl.defaultData),{cloner:null,booleanExclude:null}))(Rs||(Rs={}));var ll=(o=>(o[o.Left=1]="Left",o[o.Right=2]="Right",o[o.Center=3]="Center",o[o.Justify=4]="Justify",o))(ll||{}),cl=(r=>(r[r.Top=1]="Top",r[r.Center=2]="Center",r[r.Bottom=3]="Bottom",r))(cl||{}),hl=(r=>(r[r.None=1]="None",r[r.Upper=2]="Upper",r[r.Lower=3]="Lower",r))(hl||{}),Fs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:cr.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Fs||(Fs={}));var ei;(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:Ft.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:q(I({},Ft.fromHex(6710886)),{a:1}),colorB:q(I({},Ft.fromHex(6710886)),{a:1}),colorC:q(I({},Ft.fromHex(16777215)),{a:1}),colorD:q(I({},Ft.fromHex(16777215)),{a:1}),distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8]};case"fresnel":return{type:"fresnel",alpha:1,visible:!0,mode:0,color:cr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(ei||(ei={}));var xo;(a=>{function 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(m=>c+=`${m}`):typeof u=="object"?Object.values(u).forEach(m=>{typeof m=="number"?c+=`${m.toFixed(4)}`:c+=`${m}`}):c+=`${u}`})}),c}a.getHash=t;function e(l){let c=0;for(let h of l.layers)"alpha"in h.data&&h.data.type!=="light"&&h.data.type!=="fresnel"&&(c+=(1-c)*h.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Je}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return n("phong",l,c)}a.defaultData=o;function n(l,c="layer1",h="layer2"){let p=new Je;return p.push({fi:0,data:ei.defaultData("light",l),id:c}),p.push({fi:1,data:ei.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=n;function s(l,c="basic",h="layer1",p="layer2"){let u=ei.defaultData("texture");Object.assign(u.texture,{image:l});let m=new Je;return m.push({fi:0,data:u,id:h}),m.push({fi:1,data:ei.defaultData("light",c),id:p}),{layers:m}}a.defaultTwoLayerTextureData=s})(xo||(xo={}));var ti;(t=>{function i(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(ti||(ti={}));var Vs;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(Vs||(Vs={}));var Yi;(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:ti.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})(Yi||(Yi={}));var Ki;(o=>{o.identity=q(I({},gs.identity),{hiddenMatrix:$r.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==null?void 0:s.position)||n.position,rotation:(s==null?void 0:s.rotation)||n.rotation,scale:(s==null?void 0:s.scale)||n.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Yo.isEqual(n.position,s.position)?null:s.position,rotation:Yo.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Yo.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:$r.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Ki||(Ki={}));var Ar;(t=>t.defaultData=I({states:new Je,events:new Je,visible:!0,raycastLock:!1},Ki.identity))(Ar||(Ar={}));var pu;(t=>t.defaultData=I({type:"Empty"},Ar.defaultData))(pu||(pu={}));var js;(t=>t.defaultData=I(I({type:"Mesh"},Ar.defaultData),Rs.defaultData))(js||(js={}));var uu;(t=>t.defaultData=I(I({type:"TextFrame"},Ar.defaultData),Fs.defaultData))(uu||(uu={}));var Us;(t=>t.defaultData=I(I(I({},Ar.defaultData),Ki.identity),mo.defaultData))(Us||(Us={}));var mu;(t=>{function i(e){return I(I({},Ar.defaultData),zs.defaultData(e))}t.defaultData=i})(mu||(mu={}));var du;(r=>(r.defaultCamera=I({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:$r.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},mo.defaultData),r.defaultMeshObject=q(I(I({name:"Rectangle"},Ar.defaultData),js.defaultData),{geometry:Yi.defaultData("RectangleGeometry"),material:xo.defaultTwoLayerData("basic","layer1","layer2")}),r.defaultBooleanObject=q(I(I({name:"Boolean"},Ar.defaultData),js.defaultData),{geometry:Yi.defaultData("BooleanGeometry"),material:xo.defaultTwoLayerData("phong","layer1","layer2")})))(du||(du={}));var fu;(e=>{function i(r,o){if(o===void 0)return r;let n=I({},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&&uo(c,l)}}).data),n.materials&&o.materials&&(n.materials=$a(n.materials,s=>{var a,l;for(let c=0;c<n.materials.length;c++){let h=o.materials[c];if(typeof h!="string")for(let[p,u]of Object.entries(h.layers)){let m=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(p);m&&uo(m,u)}}}).data),n}e.patchMaterialState=i;function t(r,o){var s,a;if(o===void 0)return r;let n=I({},r);if(Object.assign(n,Ki.merge(n,o)),Jo.is(r.type)){n.orthographic=I({},n.orthographic),n.perspective=I({},n.perspective);let l=o;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(n.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(n.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(n.targetOffset=l.targetOffset)}else if(r.type==="Mesh")n.geometry=I({},n.geometry),Object.assign(n.geometry,o.geometry),n=i(n,o);else if(Gs.is(r.type)){let l=o;n.intensity!==void 0&&(n.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?n.color=l.color:n.color=Ft.clone(l.color))}return n}e.patch=t})(fu||(fu={}));import{ConeBufferGeometry as Hb}from"three";import{BufferGeometry as Ub,CylinderBufferGeometry as kb,Float32BufferAttribute as pl,Vector2 as tr,Vector3 as ks}from"three";var gu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var s,a,l,c,h;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},i.parameters),r=e.width/2,o=(a=e.radiusTop)!=null?a:r,n=(l=e.radiusBottom)!=null?l: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((c=e.height)!=null?c:e.width),depth:Math.abs((h=e.depth)!=null?h: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:m}=i.parameters,f;return p||m?f=new Xi(c,h,r,o,n,s,a,l*Math.PI/180,p,p,u,m):f=new kb(c,h,r,o,n,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:q(I({},i),{type:"CylinderGeometry"})})}};function Kr(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function yu(i){return new tr(i.y,-i.x)}var Xi=class extends Ub{constructor(t,e,r,o,n,s,a,l,c,h,p,u,m=!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 f=[],g=[],b=[],y=[],v=0,D=r/2,N=new ks,w=new ks;m&&t==0&&(t=c),m&&e==0&&(e=h);let H=new tr(t,D),T=new tr(e,-D),d=null,O=null,x=null,L=null,C=H.clone().sub(T),P=0,$=0,K=0;u>0&&(P=Math.min(t,e)*(1-u),$=t-P,K=e-P);let oe=H.clone();oe.x-=P;let ae=Math.PI-C.angle(),ne=C.angle(),ge=Math.tan(ne/2),V=Math.tan(ae/2),E=ge+V,B=u?E:V,G=u?E:ge;if(c=Math.min(c,(t-$)/B,C.length()/E),h=Math.min(h,(e-K)/G,C.length()/E),c>0){let j=c/ge;d=H.clone().sub(new tr(j,c)),u&&(x=d.clone(),x.x-=P-E*c),H.sub(C.clone().setLength(j))}if(h>0){let j=h/V;O=T.clone().sub(new tr(j,-h)),T.add(C.clone().setLength(j)),u&&(L=O.clone(),L.x-=P-E*h,oe.sub(C.clone().setLength(j)))}C=H.clone().sub(T);let A=C.length()<.5,_=[];for(let j=0;j<=o;j++){let z=[],k=j/o,se=k*l+a,W=new tr(Math.sin(se),Math.cos(se));L&&O?(Y(z,k,W,ae,h,L,-1,!0),Y(z,k,W,ne,h,O,-1,!1)):O?(U(z,W,O.x,0,-1),Y(z,k,W,ne,h,O,-1,!1)):s||U(z,W,e,K,-1);let J=yu(C).normalize();if(Kr(J,W,N),!A)for(let X=0;X<=n;X++){let Z=X/n,Q=C.clone().multiplyScalar(Z).add(T);Kr(Q,W,w),g.push(w.x,w.y,w.z),b.push(N.x,N.y,N.z),y.push(k,.5+w.y/r),z.push(v++)}if(x&&d?(Y(z,k,W,ae,c,d,1,!1),Y(z,k,W,ne,c,x,1,!0)):d?(Y(z,k,W,ae,c,d,1,!1),U(z,W,d.x,0,1)):s||U(z,W,t,$,1),u&&!A){let X=yu(C).multiplyScalar(-1).normalize();Kr(X,W,N);for(let Z=0;Z<=n;Z++){let Q=Z/n,le=C.clone().multiplyScalar(-Q).add(oe);Kr(le,W,w),g.push(w.x,w.y,w.z),b.push(N.x,N.y,N.z),y.push(k,.5+w.y/r),z.push(v++)}}u&&!s&&z.push(z[0]),_.push(z)}for(let j=0;j<_.length-1;j++)for(let z=0;z<_[0].length-1;z++){if(s&&u&&z==n)continue;let k=_[j][z],se=_[j+1][z],W=_[j+1][z+1],J=_[j][z+1],X=g[W*3+0],Z=g[W*3+2];f.push(k,se,J),(X!=0||Z!=0)&&f.push(se,W,J)}l<Math.PI*2&&(F(-1,_[0],a),F(1,_[_.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new pl(g,3)),this.setAttribute("normal",new pl(b,3)),this.setAttribute("uv",new pl(y,2));function Y(j,z,k,se,W,J,X,Z){for(let Q=0;Q<p+1;Q++){let le=Q/p,ie=X<0?le:1-le;Z&&(ie-=1),ie*=se;let pe=new tr(Math.sin(ie),Math.cos(ie)*X),Ge=pe.clone().multiplyScalar(W).add(J);Kr(Ge,k,w),g.push(w.x,w.y,w.z),Kr(pe,k,N),b.push(N.x,N.y,N.z),y.push(z,.5+w.y/r),j.push(v++)}}function U(j,z,k,se,W){let J=new ks,X=new tr,Z=[k,se];W<0&&Z.reverse();for(let Q of Z)X.set(Q,D*W),Kr(X,z,J),g.push(J.x,J.y,J.z),b.push(0,W,0),y.push(.5,.5),j.push(v++)}function F(j,z,k){let se=new tr(Math.sin(k),Math.cos(k)),W=new tr(-Math.cos(k),Math.sin(k)),J=new ks,X=j<0?(le,ie,pe)=>f.push(le,ie,pe):(le,ie,pe)=>f.push(le,pe,ie),Z=new tr((t+e+$+K)/4,0);Kr(Z,se,J),g.push(J.x,J.y,J.z),b.push(W.x,0,W.y),y.push(.5,.5);let Q=v++;for(let le of z){let ie=g.slice(le*3,le*3+3);g.push(...ie),b.push(W.x,0,W.y);let pe=y.slice(le*2,le*2+2);y.push(...pe),v++}for(let le=Q+1;le<v-1;le++)X(Q,le,le+1);X(Q,v-1,Q+1)}}};var xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Xi(0,t/2,r,o,n,s,a,l*Math.PI/180,c,h,p,0,!0):u=new Hb(t/2,r,o,n,s),u.scale(1,1,e/t),Object.assign(u,{userData:q(I({},i),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as qb,BufferGeometry as Wb,Float32BufferAttribute as ul,Vector3 as Zi}from"three";var bu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 qb(t,e,r,o,n,s):c=new dl(t,e,r,o,n,s,a,l),Object.assign(c,{userData:q(I({},i),{type:"CubeGeometry"})})}},ml=Math.PI/2,dl=class extends Wb{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=[],m=[],f=0,g=0;b("z","y","x",-1,-1,r,e,t,s,n,0),b("z","y","x",1,-1,r,e,-t,s,n,1),b("x","z","y",1,1,t,r,e,o,s,2),b("x","z","y",1,-1,t,r,-e,o,s,3),b("x","y","z",1,-1,t,e,r,o,n,4),b("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 ul(p,3)),this.setAttribute("normal",new ul(u,3)),this.setAttribute("uv",new ul(m,2));function b(D,N,w,H,T,d,O,x,L,C,P){let $=(d-2*a)/L,K=(O-2*a)/C,oe=d/2-a,ae=O/2-a,ne=x/2,ge=L+1,V=C+1,E=0,B=0,G=new Zi;for(let A=0;A<V;A++){let _=A*K-ae;for(let Y=0;Y<ge;Y++){let U=Y*$-oe;G[D]=U*H,G[N]=_*T,G[w]=ne,p.push(G.x,G.y,G.z),G[D]=0,G[N]=0,G[w]=x>0?1:-1,u.push(G.x,G.y,G.z),m.push(Y/L),m.push(1-A/C),E+=1}}for(let A=0;A<C;A++)for(let _=0;_<L;_++){let Y=f+_+ge*A,U=f+_+ge*(A+1),F=f+(_+1)+ge*(A+1),j=f+(_+1)+ge*A;h.push(Y,U,j),h.push(U,F,j),B+=6}c.addGroup(g,B,P),g+=B,f+=E}function y(D,N,w,H,T,d,O,x,L,C,P){let $=(O-2*a)/C,K=O/2-a,oe=x/2-a,ae=L/2,ne=C+1,ge=0,V=0,E=new Zi,B=new Zi;for(let G=0;G<l+1;G++){let A=G/l*ml,_=Math.sin(A)*a,Y=(1-Math.cos(A))*a,U=Math.sin(A),F=Math.cos(A);E[N]=(oe+_)*T,E[w]=(ae-Y)*d,B[D]=0,B[N]=U*Math.sign(E[N]),B[w]=F*Math.sign(E[w]);for(let j=0;j<ne;j++){let z=j*$-K;E[D]=z*H,p.push(E.x,E.y,E.z),u.push(B.x,B.y,B.z),m.push(j/C),m.push(0),ge+=1}}for(let G=0;G<l;G++)for(let A=0;A<C;A++){let _=f+A+ne*G,Y=f+A+ne*(G+1),U=f+(A+1)+ne*(G+1),F=f+(A+1)+ne*G;h.push(_,Y,F),h.push(Y,U,F),V+=6}c.addGroup(g,V,P),g+=V,f+=ge}function v(D,N,w){let H=new Zi,T=new Zi(t/2,e/2,r/2);T.subScalar(a);let d=[],O=D*N*w>0?(L,C,P)=>h.push(L,C,P):(L,C,P)=>h.push(L,P,C);for(let L=0;L<=l;L++){let C=[],P=ml*(1-L/l),$=Math.cos(P),K=Math.sin(P),oe=0;for(let ae=0;ae<=L;ae++){let ne=Math.cos(oe),ge=Math.sin(oe);H.x=$*ne,H.y=K,H.z=$*ge;let V=T.clone().addScaledVector(H,a);p.push(D*V.x,N*V.y,w*V.z),u.push(D*H.x,N*H.y,w*H.z),m.push(0,0),C.push(f++),oe+=ml/L}d.push(C)}let x=d.length-1;for(let L=0;L<x;L++){let C=d[L],P=d[L+1],$=C.length-1;O(C[0],P[1],P[0]);for(let K=1;K<=$;K++)O(C[K-1],C[K],P[K]),O(C[K],P[K+1],P[K])}}}};import{BufferGeometry as $b,Float32BufferAttribute as fl,Triangle as Jb,Vector3 as Dr,Vector2 as yl}from"three";var Xr=class extends $b{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new fl(a,3)),this.setAttribute("normal",new fl(c,3)),this.setAttribute("uv",new fl(l,2));return;function h(){var ge;n=Math.min(1-1e-5,n),n==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Dr,g=f.clone(),b=new Jb,y=n*o,v=o-y,D=s+1,N=new Dr,w=(V,E)=>N.subVectors(V,E).normalize(),H=(V,E)=>Array(V).fill(void 0).map(E),T=H(t.length/3,(V,E)=>new Dr().fromArray(t,E*3).setLength(o)),d=[],O=1e6;for(let V=0;V<T.length;V++){let E=T[V],B=[],G,A,_,Y=1e10,U=-1;for(;(U=e.indexOf(V,U+1))!=-1;){let k=U-U%3;G=e[k+(U+1)%3],A=e[k+(U+2)%3],_=E.distanceToSquared(T[G]),Y=Math.min(Y,_),B.push([G,A,_])}Y+=1e-6;let F=[],j=0,z=B.length;for(let k=0;k<z;k++){[G,A,_]=B[j];let se=((ge=d[G])==null?void 0:ge.includes(V))==!0;_<=Y&&F.push(G+ +se*O),j=B.findIndex(W=>W[0]==A)}d.push(F)}let x=[];{let V=0,E=0,B,G,A=m==3;for(let _=0;_<=s;_++){B=_*(_+1)/2,G=(_+1)*(_+2)/2;for(let Y=0;Y<s-_;Y++)[V,E]=[B+Y+_+2,G+Y+_+3],x.push(B,G,...A?[E,B]:[V,G],E,V),[B,G]=[V,E];x.push(B,G,B+s+2)}}let L=f.clone(),C=f.clone(),P=f.clone(),$=f.clone(),K=f.clone(),oe=[],ae=H(T.length,()=>H(m,()=>f.clone()));for(let V=0;V<T.length;V++){f.copy(T[V]).normalize(),L.copy(f).multiplyScalar(v);let E=d[V];for(let F=0;F<E.length;F++){let j=E[F],z=E[(F+1)%m];b.setFromPointsAndIndices(T,V,j%O,z%O),b.b.sub(b.a).setLength(1e10).add(b.a),b.c.sub(b.a).setLength(1e10).add(b.a),b.closestPointToPoint(L,ae[V][F])}let B=[],G=[],A=[],_=new Dr;s==0&&[...ae[V]].reduce((F,j)=>F.add(j),_).multiplyScalar(1/m);for(let F=0;F<m;F++){let j=[],z=(F-1+m)%m,k=ae[V][z],se=ae[V][F];f.copy(k).sub(L),g.copy(se).sub(L);let W=L.angleTo(f),J=f.angleTo(g),X=Math.cos(W)*y;s==0?C.copy(_):C.copy(L).setLength(v+X),G.push(X);let Z=[C,k,se];for(let Q=0;Q<2;Q++){let le=Z[Q],ie=Z[Q+1];$.subVectors(le,L),K.subVectors(ie,L),P.crossVectors($,K).normalize();for(let pe=0;pe<D;pe++){let Ge=[W,J][Q]*pe/D;f.copy($).applyAxisAngle(P,Ge).add(L),B.push(f.clone()),Q&&(w(f,L),j.push([pe==0?le:f.clone(),N.clone()]))}Q&&(w(ie,L),j.push([ie,N.clone()]))}A.push(j)}oe.push(A);let Y=2*D,U=2;for(let F=0;F<m;F++){let j=Y*F,z=Y*((F+1)%m),k=[B[j]];for(let W=1;W<D;W++){$=B[j+W],K=B[z+W],k.push($);for(let J=1,X=W-U+1;J<=X;J++)f.lerpVectors($,K,J/(X+1)),f.sub(L).setLength(G[F]).add(L),k.push(f.clone());k.push(K)}for(let W=0;W<D;W++)k.push(B[W+D+j]);k.push(B[z+D]);let se=x.map(W=>k[W]);a.push(...se.map(W=>[W.x,W.y,W.z]).flat()),c.push(...se.map(W=>(w(W,L),[N.x,N.y,N.z])).flat())}}let ne=[];for(let V=0;V<d.length;V++)for(let E=0;E<m;E++){let B=d[V][E];if(B<O){let G=d[B].findIndex(Y=>Y%O==V),A=oe[V][E],_=oe[B][G];for(let Y=0;Y<D;Y++){let U=A[Y],F=_[D-Y],j=A[Y+1],z=_[D-(Y+1)];[U,F,j,j,F,z].forEach(k=>{a.push(k[0].x,k[0].y,k[0].z),c.push(k[1].x,k[1].y,k[1].z)})}ne.push(A[0][0],_[D][0],A[D][0],_[0][0])}}for(;ne.length;){let V,E,B,G;[V,E]=ne.splice(0,2);let A=[V];for(;V!=E;)A.push(E),B=ne.indexOf(E),G=B%2,E=ne.splice(B-G,2)[1-G];N.subVectors(A[0],A[1]).cross(f.subVectors(A[0],A[2])).normalize();let _=N.dot(A[0])<0;_&&N.negate();for(let Y=1;Y<=A.length-2;Y++)[A[Y+ +_],A[Y+1-+_],A[0]].forEach(U=>{a.push(U.x,U.y,U.z),c.push(N.x,N.y,N.z)})}}function p(){let u=new Dr;for(let T=0;T<a.length;T+=3){u.x=a[T+0],u.y=a[T+1],u.z=a[T+2];let d=w(u)/2/Math.PI+.5,O=H(u)/Math.PI+.5;l.push(d,1-O)}let m=new Dr,f=new Dr,g=new Dr,b=new Dr,y=new yl,v=new yl,D=new yl,N=(T,d,O,x)=>{x<0&&T.x===1&&(l[d]=T.x-1),O.x===0&&O.z===0&&(l[d]=x/2/Math.PI+.5)};for(let T=0,d=0;T<a.length;T+=9,d+=6){m.set(a[T+0],a[T+1],a[T+2]),f.set(a[T+3],a[T+4],a[T+5]),g.set(a[T+6],a[T+7],a[T+8]),y.set(l[d+0],l[d+1]),v.set(l[d+2],l[d+3]),D.set(l[d+4],l[d+5]),b.copy(m).add(f).add(g).divideScalar(3);let O=w(b);N(y,d+0,m,O),N(v,d+2,f,O),N(D,d+4,g,O)}for(let T=0;T<l.length;T+=6){let d=l[T+0],O=l[T+2],x=l[T+4],L=Math.max(d,O,x),C=Math.min(d,O,x);L>.9&&C<.1&&(d<.2&&(l[T+0]+=1),O<.2&&(l[T+2]+=1),x<.2&&(l[T+4]+=1))}function w(T){return Math.atan2(T.z,-T.x)}function H(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(t){return new Xr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Yb}from"three";var vu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Qi(t*.5,n,s):new Yb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:q(I({},i),{type:"DodecahedronGeometry"})})}},Qi=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 Qi(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as sv,Plane as av,Shape as _u,Vector2 as Br,Vector3 as lv,MathUtils as Ll,LineCurve as Cl,QuadraticBezierCurve as Gu,CubicBezierCurve as $s}from"three";import{CubicBezierCurve as Hs,EllipseCurve as Kb,LineCurve as qs,LineCurve3 as Xb,MathUtils as Zb,QuadraticBezierCurve as xl,SplineCurve as Qb,Vector2 as vt,Vector3 as Lu}from"three";var en=1e-12,ri=class{constructor(t){this.position=new vt;this.startPosition=new vt;this.uuid=Zb.generateUUID();this.position=t.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(t){this.position.copy(this.startPosition).add(t)}copy(t){return this.position.copy(t.position),this.startPosition.copy(t.startPosition),this}clone(){return new ri(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},oi=class extends ri{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new oi(this.parent).copy(this)}},rr=class extends ri{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new oi(this),new oi(this))}static create(e,r){let o=new rr(e,new vt(...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 rr(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){var o,n;let e=(o=this.curveBefore)==null?void 0:o.getTangentAt(1),r=(n=this.curveAfter)==null?void 0:n.getTangentAt(0);return[e,r]}computeNormals(e=new vt,r=new vt){let[o,n]=this.computeTangents();return o&&n&&(Su(o,e),Su(n,r)),[e,r]}computeTangent(e=new vt){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new vt){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function Su(i,t=new vt){let e=i.length();return t.set(-i.y/e,i.x/e)}var bl=i=>i,ii=new vt,Ws=new vt,ev=new vt,tv=new vt,rv=new vt,ov=new vt,Cu=new Lu,Tu=new Lu;function Nu(i){let t=new vt;t.addVectors(i.v0,ii.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new vt;return e.addVectors(i.v2,Ws.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new Hs(i.v0,t,e,i.v2)}function tn(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function iv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function nv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function vl(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 Mu(i,t,e){return wu(i,t)&&wu(t,e)&&gl(i.position,t.position,e.position)}function gl(i,t,e){return ii.copy(t).sub(i).cross(Ws.copy(e).sub(i))===0}function Pu(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 Ou(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Iu(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 vl(t,i,e)>Math.PI&&(h*=-1),tn(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 Sl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function wu(i,t){return gl(i.position,i.controls[1].position,t.position)&&gl(i.position,t.controls[0].position,t.position)}function Au(i,t,e,r,o=.5){let n=ii.subVectors(t,i).multiplyScalar(o).add(i),s=Ws.subVectors(e,t).multiplyScalar(o).add(t),a=ev.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=tv.subVectors(s,n).multiplyScalar(o).add(n),h=rv.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=ov.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 Du(i,t,e=12,r=!0){let o=Tu.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=bl(t[l]),h=ii,p=Zr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof Hs||c instanceof xl||c instanceof qs){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),n!==void 0&&nv(n,o))continue;n===void 0&&(n=Cu),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 Bu(i,t,e,r=12,o=!0){let n=Tu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=bl(t[l]),p=ii,u=Zr(h,r);a.push(u);for(let m=0;m<=u;m++)if(h instanceof Hs||h instanceof xl||h instanceof qs){if(h.getPoint(m/u,p),n.set(p.x,p.y,0),c!=null&&c.equals(n))continue;c===void 0?c=Cu:(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 wl(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=Zr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Zr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Zr(i[0].roundedCurveCorner,t)*.5),r}function Zr(i,t=12){return i&&i instanceof Kb?t*2:i&&(i instanceof qs||i instanceof Xb)?1:i&&i instanceof Qb?t*i.points.length:t}function Eu(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=bl(t[s]),l=Zr(a,e),c=ii;for(let h=0;h<=l;h++)if(a instanceof Hs||a instanceof xl||a instanceof qs){if(a.getPoint(h/l,c),o!==void 0&&iv(o,c,en))continue;o===void 0&&(o=Ws),o.copy(c),i.push(c.x,c.y),n++}}return tn(i[0],i[i.length-2],en)&&tn(i[1],i[i.length-1],en)&&(i.pop(),i.pop()),r&&n>1&&!(tn(i[n-1],i[1],en)&&tn(i[n-2],i[0],en))&&(i.push(i[0],i[1]),n++),i}var Tl=new Br,cv=new Br,hv=new Br,pv=new Br,uv=new Br,mv=new Br,Pe=class extends _u{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new sv;this.plane=new av(new lv(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=Ll.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Pe;return n.isClosed=e.isClosed,n.points=e.points.map(s=>rr.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Pe.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=Tl.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=Ll.generateUUID()){let n;e instanceof Br?n=e:n=new Br(e,r);let s=new rr(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 Du(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=wl(this.points,e,!1),this.roundedCurveDivisions=wl(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Bu(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),Eu(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=Zr(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(Sl(n,s)){let p=n.position.distanceTo(s.position);return n.position.distanceTo(Tl.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){Sl(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){var o,n,s;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let a=0,l=this.points.length;a<l;a++){let c=this.points[a];if(a===0)this.moveTo(c.position.x,c.position.y);else{let h=this.points[a-1];this._applyCurveForPoint(c,h)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let a=this.points[0],l=this.points[this.points.length-1];this._applyCurveForPoint(a,l)}if(this.points.length>2){let a=0;for(let l=0,c=this.points.length;l<c;l++){let h=this.points[l],p=(o=this.points[l-1])!=null?o:this.points[this.points.length-1],u=(n=this.points[l+1])!=null?n:this.points[0],m=h.roundness,f=p&&u&&Mu(p,h,u);if(!h.controlsMoved()&&m>0&&!f){let g=h.curveBefore,b=h.curveAfter;if(g===void 0||b===void 0)continue;let y=h.roundedCurveBefore,v=h.roundedCurveAfter,D=g.getLength(),N=b.getLength(),w=Math.min(m,D*.499),H=Math.min(m,N*.499),T=Math.min(w,H),d=1-T/D,O=T/N,x=g.getPointAt(d,Tl),L=b.getPointAt(O,cv);this._subSplitCurve(g,y,d,x,void 0),this._subSplitCurve(b,v,O,void 0,L);let C;if(this.useCubicForRoundedCorners){let P=vl(x,h.position,L)/2,$=Math.tan(P)*x.distanceTo(h.position),[K,oe]=Pu(x,L,$,hv,pv),ae=Ou(K,oe,h.position),[ne,ge]=Iu(ae,x,L,$,uv,mv);C=new $s(x.clone(),ne.clone(),ge.clone(),L.clone())}else C=new Gu(x.clone(),h.position.clone(),L.clone());h.roundedCurveCorner=C,this.roundedCurves.splice(l+a,0,C),a++}}}e&&((s=this.eventDispatcher)==null||s.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,o,n,s){if(e instanceof Cl)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=Au(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 Pe(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){var o;this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let n=0;n<r;n++){let s=n*7,a=e.points[s+0],l=e.points[s+1],c=e.points[s+2],h=e.points[s+3],p=e.points[s+4],u=e.points[s+5],m=e.points[s+6],f=new rr(Ll.generateUUID(),new Br(a,l));f.controls[0].position.set(c,h),f.controls[1].position.set(p,u),f.roundness=m,this.points.push(f)}return this.shapeHoles=(o=e.shapeHoles)!=null&&o.length?e.shapeHoles.map(n=>{let s=new Pe;return s.fromJSON(n),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof $s&&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 Gu&&(n[a]=Nu(n[a]));for(a=0,l=n.length;a<l;a++){let p=n[a],u=a>0?n[a-1]:null,m;p instanceof $s?(m=this.createPoint(p.v0),m.controls[1].position.copy(p.v1)):p instanceof Cl&&(m=this.createPoint(p.v1)),m!==void 0&&(u!==null&&r(m,u),s.push(m))}let c=n[n.length-1],h=!1;return c instanceof $s?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof Cl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof _u&&(this.shapeHoles=e.holes.map(n=>{let s=new Pe;return s.fromShape(n),s})),this.update(),this}};var Ml=Math.PI*2;function Nl({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function dv(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 zu(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 fv(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),m=Math.pow(a,2),f=h*p-h*m-p*u;f<0&&(f=0),f/=h*m+p*u,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/n*a,b=f*-n/o*s,y=g+(i+e)/2,v=b+(t+r)/2,D=(s-g)/o,N=(a-b)/n,w=(-s-g)/o,H=(-a-b)/n,T=zu(1,0,D,N),d=zu(D,N,w,H);return!c&&d>0&&(d-=Ml),c&&d<0&&(d+=Ml),{centerx:y,centery:v,ang1:T,ang2:d}}function Ru({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=fv(i,t,e,r,o,n,c,h,s,a),{ang1:m,ang2:f}=u,{centerx:g,centery:b}=u,y=Math.abs(f)/(Ml/4);Math.abs(1-y)<1e-7&&(y=1);let v=Math.max(Math.ceil(y),1);f/=v;for(let D=0;D<v;D++)l.push(dv(m,f)),m+=f;return l.map(D=>{let{x:N,y:w}=Nl(D[0],o,n,g,b),{x:H,y:T}=Nl(D[1],o,n,g,b),{x:d,y:O}=Nl(D[2],o,n,g,b);return{x1:N,y1:w,x2:H,y2:T,x:d,y:O}})}import{BufferAttribute as Ys,BufferGeometry as vv}from"three";var qe;(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"})(qe||(qe={}));var ot;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ot||(ot={}));function me(i,t){if(!i)throw t||"Assertion Failed!"}var ce=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){me(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){me(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){me(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){me(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}(),rn=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}(),Js=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}(),ni=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}(),Fu=function(){function i(){var t=new ni,e=new rn,r=new Js(0),o=new Js(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 Js(0),r=new Js(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;me(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;me(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 ni,e=new ni,r=new rn,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 ni;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new rn;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 rn;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 ni;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 rn;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&&ce.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ce.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){me(o.prev===n),l=o.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(me(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){me(s.prev===a),l=s.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(me(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)me(l.Sym.next===c.Sym),me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Org!==null),me(l.Dst!==null),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l);me(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}(),Vu=function(){function i(){this.handle=null}return i}(),ju=function(){function i(){this.key=null,this.node=0}return i}(),yv=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 Vu,this.handles[r]=new ju;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,me(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 Vu;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new ju}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;me(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}(),Pl=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}(),Uu=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),gv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new Uu,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 Uu;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}(),xv=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?ce.vertLeq(n.Org,s.Org)?ce.edgeSign(s.Dst,n.Org,s.Org)<=0:ce.edgeSign(n.Dst,s.Org,n.Org)>=0:ce.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ce.edgeSign(n.Dst,o,n.Org)>=0;var a=ce.edgeEval(n.Dst,o,n.Org),l=ce.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){me(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 Pl;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 qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},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 me(ce.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,me(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=ce.vertL1dist(e,t),n=ce.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(ce.vertLeq(o.Org,n.Org)){if(ce.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ce.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(ce.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(me(!ce.vertEq(o.Dst,n.Dst)),ce.vertLeq(o.Dst,n.Dst)){if(ce.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(ce.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 ni,m,f;if(me(!ce.vertEq(c,l)),me(ce.edgeSign(l,t.event,s)<=0),me(ce.edgeSign(c,t.event,a)>=0),me(s!==t.event&&a!==t.event),me(!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(ce.vertLeq(s,a)){if(ce.edgeSign(c,s,a)>0)return!1}else if(ce.edgeSign(l,a,s)<0)return!1;return i.debugEvent(t),ce.intersect(l,s,c,a,u),me(Math.min(s.t,l.t)<=u.t),me(u.t<=Math.max(a.t,c.t)),me(Math.min(c.s,l.s)<=u.s),me(u.s<=Math.max(a.s,s.s)),ce.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),m=ce.vertLeq(s,a)?s:a,ce.vertLeq(m,u)&&(u.s=m.s,u.t=m.t),ce.vertEq(u,s)||ce.vertEq(u,a)?(i.checkForRightSplice(t,e),!1):!ce.vertEq(l,t.event)&&ce.edgeSign(l,t.event,u)>=0||!ce.vertEq(c,t.event)&&ce.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),f=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,f,!0),!0):(ce.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),ce.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),ce.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),ce.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}ce.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,ce.vertEq(o.Org,r)){me(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ce.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}me(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(me(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),ce.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 Pl;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ce.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ce.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);me(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 Pl,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 gv(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||(me(e.fixUpperEdge),me(++r===1)),me(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,ce.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 yv(n,ce.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,me(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||!ce.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}(),bv=function(){function i(){this.mesh=new Fu,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=qe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return 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],m=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var b=0;b<3;++b)n=e.coords[b],c[b]=n,f[b]=e,l[b]=n,m[b]=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,m[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=f[v],o=m[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(;ce.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ce.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ce.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ce.edgeGoesLeft(o.Lnext)||ce.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&&(ce.edgeGoesRight(r.Lprev)||ce.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===ot.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var u=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){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 m=l;m<r;++m)this.elements[u++]=-1;if(e===ot.CONNECTED_POLYGONS){n=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==h.anEdge);for(var f=l;f<r;++f)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 Fu),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=qe.ODD),e===void 0&&(e=ot.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_(),xv.computeInterior(this,s);var a=this.mesh;return e===ot.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===ot.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function bo(i){var t=i.windingRule,e=t===void 0?qe.ODD:t,r=i.elementType,o=r===void 0?ot.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,m=i.strict,f=m===void 0?!0:m,g=i.debug,b=g===void 0?!1:g;if(!u&&f)throw new Error("Contours can't be empty");if(!!u){var y=new bv;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,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:b?y.mesh:void 0}}}var $D=qe.ODD,JD=qe.NONZERO,YD=qe.POSITIVE,KD=qe.NEGATIVE,XD=qe.ABS_GEQ_TWO,ZD=ot.POLYGONS,QD=ot.CONNECTED_POLYGONS,e2=ot.BOUNDARY_CONTOURS;var si=class extends vv{constructor(e,r=12,o={}){var f,g,b;super();this.type="ShapeGeometry";this.windingRule=qe.ODD;this.elementType=ot.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:qe.ODD,elementType:ot.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(y=>y.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let y=0,v=n.length/2;y<v;y++){let D=y*2,N=n[D+0],w=n[D+1];if(h!==void 0&&N!==h&&(l=!1),p!==void 0&&w!==p&&(c=!1),h=N,p=w,!l&&!c)break}!l&&!c&&(a=bo({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=(f=a==null?void 0:a.vertexCount)!=null?f:1,m=(g=a==null?void 0:a.elementCount)!=null?g:1;if(this._positionAttribute=new Ys(new Float32Array(u*3),3),this._normalAttribute=new Ys(new Float32Array(u*3),3),this._uvAttribute=new Ys(new Float32Array(u*2),2),this._indexAttribute=new Ys(new Uint32Array(m*3),1),a){let y=1/0,v=-1/0,D=1/0,N=-1/0;for(let T=0,d=u;T<d;T++){let O=T*2,x=a.vertices[O+0],L=a.vertices[O+1];x<y&&(y=x),x>v&&(v=x),L<D&&(D=L),L>N&&(N=L)}let w=v-y,H=N-D;for(let T=0,d=u;T<d;T++){let O=T*2,x=a.vertices[O+0],L=a.vertices[O+1],C=(x-y)/w,P=(L-D)/H;this._positionAttribute.setXYZ(T,x,L,0),this._normalAttribute.setXYZ(T,0,0,1),this._uvAttribute.setXY(T,C,P)}for(let T=0,d=m;T<d;T++){let O=T*3,x=a.elements[O+0],L=a.elements[O+1],C=a.elements[O+2];this._indexAttribute.setX(O+0,x),this._indexAttribute.setX(O+1,L),this._indexAttribute.setX(O+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((b=a==null?void 0:a.elementCount)!=null?b:1)*3)}clone(){let e=new si(this._shape,this._curveSegments);return e.userData=ji(this.userData),e}};import{BufferAttribute as Xs,BufferGeometry as Sv}from"three";var Ks=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*Ks.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*Ks.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)}},on=Ks;on.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Ol=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),ai=class extends Sv{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(T=>{let d=T.extractShapePointsToFlatArray([],n),O=[];for(let x=d.length-1;x>=1;x-=2){let L=d[x-1],C=d[x-0];O.push(L,C)}return O}),c=bo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=bo({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let p=c.elementCount;if(h){c.elementCount+=h.elementCount;for(let T=0;T<h.elements.length;T++){let d=h.elements[T],O=T%2===0?c.vertexCount:0;c.elements.push(d+O)}for(let T=0;T<h.vertexIndices.length;T++){let d=h.vertexIndices[T],O=c.vertexCount;c.vertexIndices.push(d+O)}for(let T=0;T<h.vertices.length;T++){let d=h.vertices[T];c.vertices.push(d)}}let u=1/0,m=-1/0,f=1/0,g=-1/0;for(let T=0,d=c.vertexCount;T<d;T++){let O=T*2,x=c.vertices[O+0],L=c.vertices[O+1];x<u&&(u=x),x>m&&(m=x),L<f&&(f=L),L>g&&(g=L)}this._minX=u,this._minY=f,this._width=m-u,this._height=g-f;let b=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new on(b);let y=[],v=[];for(let T=c.elementCount-1;T>=0;T--){let d=T>=p,O=T*2,x=c.elements[O+0],L=c.elements[O+1],C=x+L,P={start:x,count:L,normals:[],continuous:[],concave:[]},$=x,K=C-1,oe=x+1,ae=this._shape.roundedCurves.length;do{let E=$-x,B=c.vertices[K*2+0],G=c.vertices[K*2+1],A=c.vertices[$*2+0],_=c.vertices[$*2+1],Y=c.vertices[oe*2+0],U=c.vertices[oe*2+1],F=A-B,j=_-G,z=Math.sqrt(F*F+j*j);F/=z,j/=z;let k=A-Y,se=_-U,W=Math.sqrt(k*k+se*se);k/=W,se/=W,P.normals[E*2+0]=-se,P.normals[E*2+1]=k,P.concave[E]=F*se-j*k>0;let J=c.vertexIndices[$];if(Array.isArray(J))P.continuous[E]=!1;else{let[X,Z]=this._shape.getCurveIndexFromVertexId(J-1,!0);if(Z>0&&Z<1)P.continuous[E]=!0;else{let Q=Z===1?X+1:X-1;Q=(Q+ae)%ae;let le=Z===1?0:1,ie=this._shape.roundedCurves[X].getTangent(Z),pe=this._shape.roundedCurves[Q].getTangent(le);P.continuous[E]=ie.dot(pe)>.95}}d&&(P.normals[E*2+0]*=-1,P.normals[E*2+1]*=-1),[K,$,oe]=[$,oe,oe+1],oe>=C&&(oe-=L)}while(oe!==x+1);let ne=[];ne.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(x*2,C*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((E,B)=>[B,B]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(x*2,C*2)});for(let E=1;E<=this._bevelSegments;E++){let B=E/this._bevelSegments*Math.PI/2,G=(1-Math.cos(B))*this._bevelSize,A=[],_=[],Y=[],U=[],F=0;for(let z=0;z<L;z++){let k=z*2,se=(z-1+L)%L*2,W=c.vertices[P.start*2+k+0],J=c.vertices[P.start*2+k+1],X=-P.normals[se+0]*G,Z=-P.normals[se+1]*G,Q=-P.normals[k+0]*G,le=-P.normals[k+1]*G;if(P.concave[z]||!P.concave[z]&&d){let ie=Math.atan2(Z,X),pe=Math.atan2(le,Q);pe>ie&&(pe-=Math.PI*2);let Ge=pe-ie;if(P.continuous[z]||d){let xe=ie+Ge/2,$e=Math.cos(xe)*G,Te=Math.sin(xe)*G;A[2*F+0]=W+$e*(d?-1:1),A[2*F+1]=J+Te*(d?-1:1),U[F]=z,F++}else{let xe=Math.max(1,Math.floor(n/4*Math.abs(Ge)/Math.PI));for(let $e=0;$e<=xe;$e++){let Te=ie+Ge*($e/xe),ht=Math.cos(Te)*G,Ct=Math.sin(Te)*G;A[2*F+0]=W+ht,A[2*F+1]=J+Ct,U[F]=z,F++}}}else A[2*F+0]=W+X,A[2*F+1]=J+Z,U[F]=z,_[z]=F,F++,A[2*F+0]=W,A[2*F+1]=J,U[F]=z,F++,A[2*F+0]=W+Q,A[2*F+1]=J+le,U[F]=z,Y[z]=F,F++}let j=bo({windingRule:qe.POSITIVE,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[A],edgeCreateCallback:z=>{let se=z.Org.idx,W=U[se],J=U[(se+1)%U.length];z.idx=[W,J],z.Sym.idx=[J,W]},vertexIdCallback:z=>{let k=z.Lprev.idx;return[k?k[1]:0,z.idx[0]]}});if(!j)throw console.log("Error"),new Error(`error generating bevel geometry for ${E}'th loop`);if(!j.vertexCount)break;for(let z=0;z<j.vertexIndices.length;z++){let[k,se]=j.vertexIndices[z];if(k===se)continue;let W=se;se<k&&(W+=L);for(let J=k;J<W;J++){let X=J%L,Z=(J+1)%L;if(!P.continuous[X]||!P.continuous[Z]){j.vertexIndices[z]=[k,X],j.vertexIndices.splice(z+1,0,[Z,se]),j.vertices.splice((z+1)*2,0,j.vertices[z*2],j.vertices[z*2+1]);break}}}ne.push({bevelI:E,angle:B,size:G,boundary:j,reverseMap:U,insetPoints:A})}let ge=(E,B,G)=>{let A=0,_=E.boundary.vertexIndices.length;for(;A<_&&G(E.boundary.vertexIndices[B]);)B=(B+1)%_,A++;return A},V=y.length;for(let E=1;E<ne.length;E++){let B=ne[E-1],G=ne[E],A=B.boundary.vertexIndices.length,_=G.boundary.vertexIndices.length;if(!A||!_)break;let Y=P.concave.length,U=0,F=Ol(U,L);for(;!B.boundary.vertexIndices.filter(F).length||!G.boundary.vertexIndices.filter(F).length;)U++,F=Ol(U,L);let j=B.boundary.vertexIndices.findIndex(F),z=G.boundary.vertexIndices.findIndex(F);do j=(j+1)%A;while(F(B.boundary.vertexIndices[j]));do z=(z+1)%_;while(F(G.boundary.vertexIndices[z]));U=(U+1)%L;let k=U,se=this.buildBevelVert(P,B,(j-1+A)%A),W=this.buildBevelVert(P,G,(z-1+_)%_),J=se,X=W,Z,Q,le=!1;do{F=Ol(U,L);let ie=ge(B,j,F),pe=ge(G,z,F),Ge=le;if(le=!1,ie&&!pe){for(let xe=0;xe<ie;xe++)Z=this.buildBevelVert(P,B,(j+xe)%A,xe/(ie-1)),y.push(J.topN,Z.topP,X.topN),y.push(Z.bottomP,J.bottomN,X.bottomN),J=Z;le=!0}else if(!ie&&pe)for(let xe=0;xe<pe;xe++)Q=this.buildBevelVert(P,G,(z+xe)%_,xe/(pe-1)),y.push(X.topN,J.topP,Q.topP),y.push(J.bottomP,X.bottomN,Q.bottomP),X=Q;else if(ie&&pe)if(Z=this.buildBevelVert(P,B,j,0),Q=this.buildBevelVert(P,G,z,0),Ge?(y.push(J.topN,Q.topP,X.topN),y.push(J.topN,Z.topP,Q.topP),y.push(Q.bottomP,J.bottomN,X.bottomN),y.push(Q.bottomP,Z.bottomP,J.bottomN)):(y.push(X.topN,J.topN,Z.topP),y.push(X.topN,Z.topP,Q.topP),y.push(Z.bottomP,J.bottomN,X.bottomN),y.push(Z.bottomP,X.bottomN,Q.bottomP)),J=Z,X=Q,ie===pe)for(let xe=1;xe<ie;xe++)Z=this.buildBevelVert(P,B,(j+xe)%A,xe/(ie-1)),Q=this.buildBevelVert(P,G,(z+xe)%_,xe/(pe-1)),y.push(J.topN,Z.topP,X.topN),y.push(X.topN,Z.topP,Q.topP),y.push(Z.bottomP,J.bottomN,X.bottomN),y.push(Z.bottomP,X.bottomN,Q.bottomP),J=Z,X=Q;else if(ie>pe){let xe=ie/pe,$e=0;for(let Te=1;Te<ie;Te++)Z=this.buildBevelVert(P,B,(j+Te)%A,Te/(ie-1)),y.push(J.topN,Z.topP,X.topN),y.push(Z.bottomP,J.bottomN,X.bottomN),J=Z,Te>($e+1)*xe&&($e++,Q=this.buildBevelVert(P,G,(z+$e)%_,$e/(pe-1)),y.push(X.topN,Z.topP,Q.topP),y.push(Z.bottomP,X.bottomN,Q.bottomP),X=Q)}else{let xe=pe/ie,$e=0;for(let Te=1;Te<pe;Te++)Q=this.buildBevelVert(P,G,(z+Te)%_,Te/(pe-1)),y.push(X.topN,Z.topP,Q.topP),y.push(Z.bottomP,X.bottomN,Q.bottomP),X=Q,Te>($e+1)*xe&&($e++,Z=this.buildBevelVert(P,B,(j+$e)%A,$e/(ie-1)),y.push(J.topN,Z.topP,X.topN),y.push(Z.bottomP,J.bottomN,X.bottomN),J=Z)}j=(j+ie)%A,z=(z+pe)%_,U=(U+1)%Y}while(U!==k)}{let E=ne[0];for(let B=0,G=E.boundary.vertexCount;B<G;B++){let A=this.buildBevelVert(P,E,B),_=this.buildBevelVert(P,E,(B+1)%G);y.push(_.topP,A.topN,A.bottomN),y.push(_.topP,A.bottomN,_.bottomP)}}if(d){let E=[];for(let B=y.length-1;B>=V+2;B-=3){let G=y[B-2],A=y[B-1],_=y[B-0];E.push(_,A,G)}y.splice(V,y.length-V,...E)}if(d){let E=[];for(let B=ne[ne.length-1].boundary.vertices.length-1;B>=1;B-=2){let G=ne[ne.length-1].boundary.vertices[B-1],A=ne[ne.length-1].boundary.vertices[B-0];E.push(G,A)}v.push(E)}if(!d){let E=ne[ne.length-1],B=bo({windingRule:ne.length>1?qe.POSITIVE:qe.ODD,elementType:ot.POLYGONS,vertexSize:2,strict:!0,contours:[E.insetPoints,...v]});if(!B)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let G=0;G<B.elementCount*3;G+=3){let A=this.buildSurfaceVert(B,B.elements[G+0]),_=this.buildSurfaceVert(B,B.elements[G+1]),Y=this.buildSurfaceVert(B,B.elements[G+2]);y.push(A.top,_.top,Y.top),y.push(Y.bottom,_.bottom,A.bottom)}}this.vertexCache={}}this._buffer.shrink();let D=new Xs(Uint32Array.from(y),1),N=new Xs(this._buffer.positions,3),w=new Xs(this._buffer.normals,3),H=new Xs(this._buffer.uvs,2);N.needsUpdate=!0,w.needsUpdate=!0,H.needsUpdate=!0,D.needsUpdate=!0,this.setAttribute("position",N),this.setAttribute("normal",w),this.setAttribute("uv",H),this.setIndex(D)}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 m=Math.cos(r.angle),f=Math.sin(r.angle),g=o*2,b=c*2,y=h*2,v=r.boundary.vertices[g+0],D=r.boundary.vertices[g+1],N=(1-f)*this._bevelSize,w=(v-this._minX)/this._width,H=(D-this._minY)/this._height,T=e.normals[b+0],d=e.normals[b+1],O=e.normals[y+0],x=e.normals[y+1];if(u){let K=O-T,oe=x-d;T=T+K*(1-n),d=d+oe*(1-n);let ae=Math.sqrt(T*T+d*d);T/=ae,d/=ae}let L=this._buffer.get(p?2:4),C=L*3,P=L*2,$={i:o,fi:c,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=D,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=T*m,this._buffer.normals[C+1]=d*m,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=w,this._buffer.uvs[P+1]=H,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=D,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=T*m,this._buffer.normals[C+4]=d*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=H,this._buffer.uvs[P+3]=w,p||(L+=2,C+=6,P+=4,$.topP=L+0,$.bottomP=L+1,this._buffer.positions[C+0]=v,this._buffer.positions[C+1]=D,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=O*m,this._buffer.normals[C+1]=x*m,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=w,this._buffer.uvs[P+1]=H,this._buffer.positions[C+3]=v,this._buffer.positions[C+4]=D,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=O*m,this._buffer.normals[C+4]=x*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=H,this._buffer.uvs[P+3]=w),this.vertexCache[s]=$,$}clone(){let e=new ai(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=ji(this.userData),e}};var ut=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var c,h,p,u,m,f,g;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs((h=e.height)!=null?h:e.width),n=Math.abs((p=e.depth)!=null?p:0),s=(u=i.shape)!=null?u:t==null?void 0:t.shape,a=(m=s==null?void 0:s.roundness)!=null?m:e.roundness;s!==void 0&&(s instanceof Pe?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Pe(r,o).fromJSON(s),((f=i.parameters)==null?void 0:f.roundness)!==void 0&&((g=i.parameters)==null?void 0:g.roundness)>0&&s.update(!1));let l=s!=null?s:new Pe(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 si(i.shape,o):s=new ai(i.shape,t,e,o,r),Object.assign(s,{userData:q(I({},i),{type:"VectorGeometry"})})}};import{MathUtils as Hu,Vector2 as qu}from"three";var Wu=Math.PI*2,$u=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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=wv(c,h,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let m=ut.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(m,{userData:q(I({},i),{type:"EllipseGeometry"})})}};function wv(i,t,e,r,o,n){if(r>=Wu)return o>30||o%4===0?(Cv(i,t,e,n),Math.round(o/4)):ku(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=Ru({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?Lv(i,s.x,s.y,c,o,t,e,n):ku(i,r,o,t,e,n)}function Lv(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(li(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=i.points[c],m=li(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),m.controls[0].position.set(p.x2,p.y2),i.addPoint(m)}return a>0?Ju(i,n,s,a):i.addPoint(li(0,0)),l}function ku(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(li(c,h))}return t<Wu?n>0?Ju(i,r,o,n):i.addPoint(li(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Yu(i,r,o,n)),1}function Cv(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Zs(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Zs(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Zs(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Zs(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Yu(i,t,e,r)}function li(i,t){return new rr(Hu.generateUUID(),new qu(i,t))}function Zs(i,t,e,r,o,n){let s=li(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function Ju(i,t,e,r){Ku(i,t,e,r).forEach(n=>i.addPoint(n))}function Yu(i,t,e,r){let o=Ku(i,t,e,r),n=new Pe;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Ku(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new qu(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=Hu.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),h=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(h),l.controls[1].position.copy(c)}),a}import{BufferGeometry as Tv,Float32BufferAttribute as Il,Vector3 as Xu}from"three";var Zu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var a,l,c;let e=Object.assign({},(a=t==null?void 0:t.parameters)!=null?a:{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs((l=e.height)!=null?l:r),n=Math.abs((c=e.depth)!=null?c: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 nn(!1,t,e,r,o,n,s,a,l,c,h,p);return Object.assign(u,{userData:q(I({},i),{type:"HelixGeometry"})})}},nn=class extends Tv{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 m=t&&s===1;m&&(u=0),p>100&&(p=100);let f=()=>new Xu,g=new Xu,b=f(),y=f(),v=f(),D,N,w,H,T,d,O,x,L=f(),C=f(),P=f(),$=f(),K=f(),oe=f(),ae=f(),ne=f(),ge=r-2*l+.001,V=ge/s,E=Math.ceil(a*s),B=E+1,G=ge/E,A=-ge/2,_=h+1,Y=2*Math.PI/h,U=Math.PI/2/u,F=.01,j=Math.min((1-p/100)*l,l-F),z=l-j,k=0,se=2,W=u*se+se,J=_*W/se,X=J+_*B,Z=_*(B+W),[Q,le,ie]=[3,3,2].map(ke=>Array(Z*ke).fill(0)),pe=[],Ge=n-l;function xe(ke,gt){let Gt=Math.PI/2;d=gt*G,x=2*Math.PI*(d%V)/V+Gt,d+=A,O=Math.sin(x)*Ge,T=Math.cos(x)*Ge,t?ke.set(T,O,d):ke.set(T,d,O)}xe(g,-1e-10),xe(b,0),L.copy(g),xe(g,1);let $e=g.distanceTo(b),Te=z+j,ht=$e*E+2*Te,Ct=j,Cr=ht-Te;for(let ke=0;ke<=E;ke++){xe(y,ke),ne.subVectors(y,L).normalize(),L.copy(y),oe.copy(y).setComponent(+t+1,0).normalize(),ae.crossVectors(ne,oe).normalize();let gt=ke===0,Gt=ke===E,En=gt?3*Math.PI/2:U,_n=gt?Ct:Cr,Gn=gt?_:X,zn=gt?0:Z-_,Rn=ne.clone().multiplyScalar(gt?-z:z).add(y),Fn=ne.clone().multiplyScalar(gt?-1:1).normalize();for(let kt=0;kt<_;kt++){let zi=kt*Y;if(C.addVectors(g.copy(oe).multiplyScalar(l*Math.cos(zi)),b.copy(ae).multiplyScalar(l*Math.sin(zi))),P.copy(C).normalize(),gt||Gt){m||(k=zn+kt,[0,1,2].forEach(pt=>{Q[k*3+pt]=Rn.getComponent(pt),le[k*3+pt]=Fn.getComponent(pt)}),ie[k*2]=+Gt,ie[k*2+1]=kt/h),b.copy(P).multiplyScalar(j),v.addVectors(y,b);for(let pt=0;pt<u;pt++){let Po=pt*U+En;$.addVectors(g.copy(ne).multiplyScalar(z*Math.sin(Po)),b.copy(P).multiplyScalar(z*Math.cos(Po))),K.copy($).normalize(),b.addVectors(v,$),$.normalize(),k=Gn+pt*_+kt,[0,1,2].forEach(co=>{Q[k*3+co]=b.getComponent(co),le[k*3+co]=K.getComponent(co)});let Vn=+gt+Math.sin(Po);ie[k*2]=(_n+z*Vn)/ht,ie[k*2+1]=kt/h}}b.addVectors(y,C),k=J+ke*_+kt,[0,1,2].forEach(pt=>{Q[k*3+pt]=b.getComponent(pt),le[k*3+pt]=P.getComponent(pt)}),ie[k*2]=(Te+ke*$e)/ht,ie[k*2+1]=kt/h}}let yt=B+2*u+se,Tr=1,[ao,lo]=m?[Tr,Tr+B-1]:[0,yt-1];for(let ke=ao;ke<=lo-1;ke++){let gt=m&&ke===lo-1;for(let Gt=0;Gt<_-1;Gt++)D=ke*_+Gt,N=D+1,w=(gt?Gt:D)+_,H=(gt?Gt+1:N)+_,ke===0?pe.push(N,H,w):ke===yt-2?pe.push(D,N,w):pe.push(D,N,w,N,H,w)}this.setIndex(pe),this.setAttribute("position",new Il(Q,3)),this.setAttribute("normal",new Il(le,3)),this.setAttribute("uv",new Il(ie,2))}};import{IcosahedronBufferGeometry as Nv}from"three";var Qu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 sn(t*.5,n,s):new Nv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:q(I({},i),{type:"IcosahedronGeometry"})})}},sn=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 sn(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as Mv,Shape as Pv}from"three";var em=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s,a;((o=(r=i.parameters)==null?void 0:r.points)!=null?o:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{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((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new Pv;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 Mv(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:q(I({},i),{type:"LatheGeometry"})})}};import{BufferGeometry as rm,BufferGeometryLoader as _v,Vector3 as Gv,BoxBufferGeometry as om}from"three";import{BufferGeometry as Ov,Vector2 as Al,Vector3 as tm}from"three";import{Geometry as Iv,Face3 as Av}from"three/examples/jsm/deprecated/Geometry.js";var Dv=["a","b","c"];function Bv(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Dl(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function Bl(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 Ev(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],Bl(s.a,s.b,i,r,s,e),Bl(s.b,s.c,i,r,s,e),Bl(s.c,s.a,i,r,s,e)}function Qs(i,t,e,r,o){i.push(new Av(t,e,r,void 0,void 0,o))}function ci(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function ea(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var ta=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Ov?t=new Iv().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 tm,r,o,n,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],m=new Map;Ev(l,c,u,m);let f=[],g,b,y,v,D,N,w;for(let F of Array.from(m.keys())){for(b=m.get(F),y=new tm,D=3/8,N=1/8,w=b.faces.length,w!=2&&(D=.5,N=0,w!=1),y.addVectors(b.a,b.b).multiplyScalar(D),e.set(0,0,0),s=0;s<w;s++){for(v=b.faces[s],a=0;a<3&&(g=l[Bv(v,Dv[a])],!(g!==b.a&&g!==b.b));a++);g&&e.add(g)}e.multiplyScalar(N),y.add(e),b.newEdge=f.length,f.push(y)}let H,T,d,O,x,L,C,P=[];for(o=0,n=l.length;o<n;o++){for(L=l[o],x=u[o].edges,r=x.length,r==3?H=3/16:r>3&&(H=3/(8*r)),T=1-r*Number(H),d=H,r<=2&&(r==2?(T=3/4,d=1/8):r==1||r==0),C=L.clone().multiplyScalar(T),e.set(0,0,0),s=0;s<r;s++)O=x[s],g=O.a!==L?O.a:O.b,e.add(g);e.multiplyScalar(Number(d)),C.add(e),P.push(C)}let $=P.concat(f),K=P.length,oe,ae,ne,ge=[],V=[],E,B,G,A,_=new Al,Y=new Al,U=new Al;for(o=0,n=c.length;o<n;o++)v=c[o],oe=Number(Dl(v.a,v.b,m).newEdge)+K,ae=Number(Dl(v.b,v.c,m).newEdge)+K,ne=Number(Dl(v.c,v.a,m).newEdge)+K,Qs(ge,oe,ae,ne,v.materialIndex),Qs(ge,v.a,oe,ne,v.materialIndex),Qs(ge,v.b,ae,oe,v.materialIndex),Qs(ge,v.c,ne,ae,v.materialIndex),p&&(E=h[o],B=E[0],G=E[1],A=E[2],_.set(ci(B.x,G.x),ci(B.y,G.y)),Y.set(ci(G.x,A.x),ci(G.y,A.y)),U.set(ci(B.x,A.x),ci(B.y,A.y)),ea(V,_,Y,U),ea(V,B,_,U),ea(V,G,Y,_),ea(V,A,U,Y));t.vertices=$,t.faces=ge,p&&(t.faceVertexUvs[0]=V)}};var it=new Gv,im=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s;let e=(s=(n=i.geometry)!=null?n:t==null?void 0:t.geometry)!=null?s:new rm().copy(new om(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(it),r={width:it.x,height:it.y,depth:it.z,subdivisions:0}):r=t.parameters;let o=I(I({},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){var l;let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=(l=i.geometry)!=null?l:new rm().copy(new om(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(t!==it.x||e!==it.y||r!==it.z)&&n.scale(it.x===0?1:t/it.x,it.y===0?1:e/it.y,it.z===0?1:r/it.z);let a=n.originalGeometry;return o>0?(a===void 0||(s==null?void 0:s.subdivisions)!==o)&&(a===void 0&&(a=n),n=new ta(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:q(I({},i),{type:"NonParametricGeometry"})})}static loadFromUrl(i,t,e){new _v(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(n.parameters,{width:100,height:it.y*s,depth:it.z*s}),t(this.build(n))})}};var nm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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,m=2*Math.PI/r;for(let g=0;g<r;g++){let b=m*g,y=p+Math.sin(b)*c,v=u+Math.cos(b)*h;l.addPoint(l.createPoint(y,v))}l.isClosed=!0;for(let g=0,b=l.points.length;g<b;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=ut.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:q(I({},i),{type:"PolygonGeometry"})})}};import{BufferGeometry as zv,Float32BufferAttribute as El,Vector2 as fr,Vector3 as lt}from"three";var sm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Gl(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:q(I({},i),{type:"PyramidGeometry"})})}};function an(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function _l(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 Rv(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var Gl=class extends zv{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,m=e/2,f=Math.PI/r,g=t*Math.cos(Math.PI/r),b=2*Math.PI/r,y=(r-2)*Math.PI/r,v=Math.PI-y,D=new lt(0,-m,0),N=new lt(0,m,0),w=new fr(t,-m),H=new fr(g,-m),T=new fr(0,N.y).sub(H),d=new fr(0,N.y).sub(w),O=new fr(T.y,-T.x).normalize(),x=new fr(d.y,-d.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-T.angle())/2)-1e-8;s=Math.min(s,C);let P;{let V=new lt(O.x,O.y,0),E=new lt(Math.cos(b)*V.x,V.y,Math.sin(b)*V.x);P=V.angleTo(E)}let $=s/Math.tan((Math.PI-T.angle())/2),K=s/Math.tan((Math.PI-P)/2),oe=new lt;if(!n){c.push(D.x,D.y,D.z),h.push(0,-1,0),p.push(0,0);let V=u++,E=[],B=w.clone(),G=$/Math.cos(Math.PI/r);B.x-=G;for(let A=0;A<r;A++){let _=A/r*Math.PI*2+f,Y=new fr(Math.sin(_),Math.cos(_));an(B,Y,oe),c.push(oe.x,oe.y,oe.z),h.push(0,-1,0),p.push(0,0),E.push(u++)}for(let A=0;A<E.length;A++)l.push(E[A],V,E[(A+1)%E.length])}let ae=[];{let V=new lt,E=new lt,B=new lt,G=new lt,A=new lt,_=new lt;for(let Y=0;Y<r;Y++){let U=Y/r*Math.PI*2+f,F=(Y+.5)/r*Math.PI*2+f,j=(Y+1)/r*Math.PI*2+f,z=new fr(Math.sin(U),Math.cos(U)),k=new fr(Math.sin(F),Math.cos(F)),se=new fr(Math.sin(j),Math.cos(j));an(w,z,E),an(w,se,B),an(O,k,V),_l(N,E,B,K,K,G),c.push(G.x,G.y,G.z),_l(E,N,B,K,$,A),c.push(A.x,A.y,A.z),_l(B,E,N,$,K,_),c.push(_.x,_.y,_.z),h.push(V.x,V.y,V.z),h.push(V.x,V.y,V.z),h.push(V.x,V.y,V.z),p.push(0,0),p.push(0,0),p.push(0,0);let W=u++,J=u++,X=u++;if(l.push(W,J,X),s>0){{let le=E.clone().add(B).multiplyScalar(.5),ie=N.clone().sub(le).normalize(),Ge=D.clone().sub(le).normalize().add(ie).normalize().multiplyScalar(-1),xe=_.clone().sub(A);ne(le,xe,Ge,T.angle())}let Z,Q;{let le=new lt;an(x,se,le);let ie=_.clone().add(G).multiplyScalar(.5);ie=Rv(ie,B,N);let pe=_.clone().sub(G);[Z,Q]=ne(ie,pe,le,P,G.y)}{let le=Z,ie=le.clone().setY(0).normalize(),pe=new lt(0,-1,0),Ge=ie.clone().cross(pe);ge(le,ie,pe,Ge)}ae.concat(Q);{let le=T.angle(),ie=Math.PI-le,pe=N.clone();pe.y-=s/Math.sin(le-Math.PI/2);let Ge=new lt,xe=[];for(let Te=0;Te<a;Te++){let ht=[],Ct=Math.PI/2-ie*Te/a,Cr=Math.cos(Ct),yt=Math.sin(Ct),Tr=F;for(let ao=0;ao<=Te;ao++){let lo=Math.cos(Tr),ke=Math.sin(Tr);V.x=Cr*ke,V.y=yt,V.z=Cr*lo,Ge.copy(pe).addScaledVector(V,s),c.push(Ge.x,Ge.y,Ge.z),h.push(V.x,V.y,V.z),p.push(0,0),ht.push(u++),Tr+=Math.PI*2/Te/r}xe.push(ht)}Q.reverse(),xe.push(Q);let $e=xe.length-1;for(let Te=0;Te<$e;Te++){let ht=xe[Te],Ct=xe[Te+1],Cr=ht.length-1;l.push(Ct[1],ht[0],Ct[0]);for(let yt=1;yt<=Cr;yt++)l.push(ht[yt],ht[yt-1],Ct[yt]),l.push(Ct[yt+1],ht[yt],Ct[yt])}}}}}this.setIndex(l),this.setAttribute("position",new El(c,3)),this.setAttribute("normal",new El(h,3)),this.setAttribute("uv",new El(p,2));function ne(V,E,B,G,A){let _=-G/2,Y=(Math.PI-G)/2,U=E.clone().normalize().cross(B);V.addScaledVector(B,-s/Math.sin(Y));let F=new lt,j=new lt,z=1,k=u,se=[];for(let W=0;W<=a;W++){let J=_+W/a*G;j.set(0,0,0),j.addScaledVector(U,Math.sin(J)),j.addScaledVector(B,Math.cos(J));for(let X=0;X<=z;X++){let Z=X/z-.5;if(F.copy(V),F.addScaledVector(E,Z),F.addScaledVector(j,s),A!=null){let Q=Math.max(0,F.y-A);F.addScaledVector(E,-Q/E.y)}c.push(F.x,F.y,F.z),h.push(j.x,j.y,j.z),p.push(0,0),X===0&&se.push(u),u++}}for(let W=0;W<a;W++)for(let J=0;J<z;J++){let X=k+J+(z+1)*W,Z=X+(z+1),Q=Z+1,le=X+1;l.push(X,Z,le),l.push(Z,Q,le)}return[V.clone().addScaledVector(E,.5),se]}function ge(V,E,B,G){let A=Math.PI/2,_=d.angle()-A,Y=[],U=new lt,F=new lt;for(let z=0;z<=a;z++){let k=[],se=z/a;for(let W=0;W<=z;W++){let X=((z?W/z:0)-.5)*v,Z=Math.cos(X),Q=Math.sin(X),le=Math.atan(Math.tan(_)*Z),ie=(A+le)*se,pe=Math.cos(ie),Ge=Math.sin(ie);U.set(0,0,0),U.addScaledVector(E,Ge*Z),U.addScaledVector(B,pe),U.addScaledVector(G,Ge*Q),F.copy(V).addScaledVector(U,s),c.push(F.x,F.y,F.z),h.push(U.x,U.y,U.z),p.push(0,0),k.push(u++)}Y.push(k)}let j=Y.length-1;for(let z=0;z<j;z++){let k=Y[z],se=Y[z+1],W=k.length-1;l.push(k[0],se[1],se[0]);for(let J=1;J<=W;J++)l.push(k[J-1],k[J],se[J]),l.push(k[J],se[J+1],se[J])}}}};var ra=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s,a,l;let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs((l=e.depth)!=null?l: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(N,w,H){return w>e&&H>r?Math.min(N*e/w,N*r/H):w>e?N*e/w:H>r?N*r/H:N}let m=[];m[0]=o[0]===0?0:u(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:u(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:u(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:u(o[3],o[3]+o[0],o[3]+o[2]);let f=h.x,g=p.x,b=p.y,y=h.y;t.addPoint(t.createPoint(f,b)),t.addPoint(t.createPoint(g,b)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let v=!0;for(let N=0,w=t.points.length;N<w;N++)t.points[N].roundness=m[N],N>0&&m[N]!==m[N-1]&&(v=!1);v&&(t.roundness=m[0]),t.useCubicForRoundedCorners=n!==1,t.update();let D=ut.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(D,{userData:q(I({},i),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as Fv}from"three";var am=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Fv(.5*t,o,n,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:q(I({},i),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as Vv}from"three";var lm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new Vv(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:q(I({},i),{type:"PlaneGeometry"})})}};import{BufferGeometry as jv,Float32BufferAttribute as zl,Vector3 as Uv}from"three";var cm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Rl(t,e,r,o,n,s);return Object.assign(a,{userData:q(I({},i),{type:"BackdropGeometry"})})}},Rl=class extends jv{constructor(t=1,e=1,r=1,o=90,n=10,s=24){super(),this.type="BackdropGeometry";let a=[],l=[],c=[];n==0&&(s=1),s=Math.max(1,Math.floor(s)),n=Math.min(n,100),o=Math.min(179,o),o*=Math.PI/180;let h=[],p=(U=0,F=0,j=0)=>new Uv(U,F,j),u=p(),m=p(),[f,g,b]=[e/2,t/2,r/2],y=-g,v=+g,[D,N,w]=[p(y,-f,+b),p(y,-f,-b),p(y,+f,-b)],[H,T]=[U=>Math.sin(U),U=>Math.cos(U)],d=(U,F=!1)=>Math.sin(U-Math.PI/(1+ +F)),O=(U,F=!1)=>Math.cos(U-Math.PI/(1+ +F));w.y=H(o)*e-f;let x=T(o)*e-b;o<=Math.PI/2?w.z=x:N.z=Math.min(N.z-x-b,D.z-.001),u.subVectors(D,N),m.subVectors(w,N);let L=Math.min(u.length(),m.length())*n/100,C=L*Math.tan(o/2),P=L/Math.cos(o/2),$=u.clone().normalize().add(m.normalize()).setLength(P).add(N);u.set(0,d(o,!0),O(o,!0)),h.push([w,u.clone()]);let K=(Math.PI-o)/s;for(let U=0;U<=s;U++){let F=Math.PI/2+o+U*K;u.set(0,H(F)*C,T(F)*C),u.add($),m.set(0,d(F),O(F)),h.push([u.clone(),m.clone()])}h.push([D,p(0,1,0)]);let oe=Math.sin(K/2)*C*2,ae=h.length-1,ne=h[0][0].distanceTo(h[1][0]),ge=h[ae-1][0].distanceTo(h[ae][0]),V=ne+oe*s+ge;h[0].push(1);for(let U=0;U<=s;U++)h[U+1].push(1-(ne+U*oe)/V);h[ae].push(0);let[E,B,G]=h[0],A,_,Y;for(let U=1;U<h.length;U++)[A,_,Y]=h[U],a.push(y,E.y,E.z,y,A.y,A.z,v,E.y,E.z,v,E.y,E.z,y,A.y,A.z,v,A.y,A.z),l.push(0,B.y,B.z,0,_.y,_.z,0,B.y,B.z,0,B.y,B.z,0,_.y,_.z,0,_.y,_.z),c.push(0,G,0,Y,1,G,1,G,0,Y,1,Y),[E,B,G]=[A,_,Y];this.setAttribute("position",new zl(a,3)),this.setAttribute("normal",new zl(l,3)),this.setAttribute("uv",new zl(c,2))}};var hm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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,m=0,f=0,g=s*Math.PI/360/o,b=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 N=0;N<o;N++){let w=g*N,H=m+Math.sin(w)*p,T=f+Math.cos(w)*u;h.addPoint(h.createPoint(H,T))}}else for(let N=0;N<o;N++){let w=m+Math.cos(b)*p,H=f+Math.sin(b)*u;h.addPoint(h.createPoint(w,H)),b+=g,w=m+Math.cos(b)*y,H=f+Math.sin(b)*v,N<=o,h.addPoint(h.createPoint(w,H)),b+=g}h.isClosed=!0;for(let N=0,w=h.points.length;N<w;N++)h.points[N].roundness=n;h.roundness=n,h.update();let D=ut.create({shape:h,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(D,{userData:q(I({},i),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as kv}from"three";var oa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new kv(t,e);return Object.assign(r,{userData:q(I({},i),{type:"TextFrameGeometry"})})}};var pm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var s,a,l;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs((a=e.height)!=null?a:e.width),n=Math.abs((l=e.depth)!=null?l: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=Hv(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:q(I({},i),{type:"TorusGeometry"})})}};function Hv(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 nn(!0,i,t,e,r,o,n,s,a,l,c,h)}import{TorusKnotBufferGeometry as qv}from"three";var um=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width),tube:(s=e.tube)!=null?s: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 qv(a,e,r,o,n,s);return Object.assign(l,{userData:q(I({},i),{type:"TorusKnotGeometry"})})}};var mm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs((s=e.depth)!=null?s: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,m=l.points.length;u<m;u++)l.points[u].roundness=r;l.roundness=r,l.update();let p=ut.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(p,{userData:q(I({},i),{type:"TriangleGeometry"})})}};var ln={};Tc(ln,{addBarycentricAttribute:()=>Kv,fixUvs:()=>Zv,loadFromUrl:()=>Xv,resizeGeometry:()=>Yv,roundShapePolygon:()=>Jv});import{BufferGeometryLoader as Wv,Float32BufferAttribute as $v,Vector3 as Fl}from"three";var dm=function(i,t){let e=t.x-i.x,r=t.y-i.y,o=Math.sqrt(e*e+r*r),n=e/o,s=r/o,a=Math.atan2(s,n);return{x:e,y:r,len:o,nx:n,ny:s,ang:a}},Jv=(i,t,e)=>{let r,o,n,s,a,l,c,h,p,u,m,f,g,b,y=t.length;for(s=t[y-2],i.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let v=dm(a,s),D=dm(a,l);c=v.nx*D.ny-v.ny*D.nx,h=v.nx*D.nx-v.ny*-D.ny,m=Math.asin(c),p=1,u=!1,h<0?m<0?m=Math.PI+m:(m=Math.PI-m,p=-1,u=!0):m>0&&(p=-1,u=!0),f=m/2,b=Math.abs(Math.cos(f)*e/Math.sin(f)),b>Math.min(v.len/2,D.len/2)?(b=Math.min(v.len/2,D.len/2),g=Math.abs(b*Math.sin(f)/Math.cos(f))):g=e,o=a.x+D.nx*b,n=a.y+D.ny*b,o+=-D.ny*g*p,n+=D.nx*g*p,i.absarc(o,n,g,v.ang+Math.PI/2*p,D.ang-Math.PI/2*p,u),s=a,a=l}i.closePath()},Yv=(i,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=i.userData.parameters,n,s,a;t===0?(t=o.width,n=1):n=t/o.width,e===0?(e=o.height,s=1):s=e/o.height,r===0?(r=o.depth,a=1):a=r/o.depth,i.scale(n,s,a),o.width=t,o.height=e,o.depth=r},Kv=(i,t)=>{let e=[new Fl(1,0,0),new Fl(0,1,0),new Fl(0,0,1)],r=i.attributes.position,o=new Float32Array(r.count*3);for(let n=0,s=r.count;n<s;n++)e[n%3].toArray(o,n*3);i.setAttribute(t,new $v(o,3))},Xv=i=>new Promise(t=>{new Wv().load(i,r=>t(r))}),Zv=(i,t,e)=>{let r=i.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let n=r.getX(o),s=r.getY(o);r.setXY(o,(n+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as $m,BufferAttribute as Jm,Uint32BufferAttribute as nc,Float32BufferAttribute as sc,Matrix4 as aw,Vector3 as La}from"three";var Qv,ia=new Promise(i=>{Qv=i});import{BufferGeometryLoader as nw}from"three";import{DoubleSide as tw,EventDispatcher as rw,Matrix3 as ow,Vector3 as ic}from"three";import{NormalBlending as SS,ShaderMaterial as wS,FrontSide as LS}from"three";import{CubeReflectionMapping as uS,CubeRefractionMapping as mS,CubeUVReflectionMapping as dS,LinearEncoding as bm,sRGBEncoding as fS}from"three";var cn=class{constructor(t){t=t!=null?t:{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as eS}from"three";var ue=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=eS.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e!=null?e:{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r!=null?r:{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r!=null?r:{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e!=null?e:this.getType(t,e);let o=t.getNodeData(r!=null?r:this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,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}getJSONNode(t){if((t==null?void 0:t.materials)&&(t==null?void 0:t.materials[this.uuid])!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof ue&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){var e;return(e=this.getJSONNode(t))!=null?e:this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),this}};var Vl=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},nt=new Vl;import{Vector2 as fm}from"three";import{MathUtils as tS}from"three";var de=class extends ue{constructor(e,r){super(e);this.scope="";r=r!=null?r:{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r!=null?r:this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=tS.generateUUID()),o=e.getUUID(o!=null?o:this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,a.output,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!=null?o:this.uuid,e.getTempVar(o,n!=null?n:this.getType(e),s,this.getLabel()).name}};var Fe=class extends de{constructor(e,r){r=r!=null?r:{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,o,n,s,a){o=e.getUUID(o!=null?o:this.getUUID()),n=n!=null?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 St=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof fm?e:new fm(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}};import{Vector3 as ym}from"three";var wt=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof ym?e:new ym(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}};import{Color as rS}from"three";var Bt=class extends rS{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}};var Er=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Bt?e:new Bt(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 oS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,gm=/[a-z_0-9]+/gi,re=class extends de{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=gm.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],m=u[0],f=this.isMethod?!this.getInputByName(m):!0,g=m;if(this.keywords[m]||this.useKeywords&&f&&nt.containsKeyword(m)){let b=this.keywords[m];if(!b){let y=nt.getKeywordData(m);y.cache&&(b=e.keywords[m]),b=b||nt.getKeyword(m,e),y.cache&&(e.keywords[m]=b)}g=b.build(e)}m!==g&&(c=c.substring(0,u.index+l)+g+c.substring(u.index+m.length+l),l+=g.length-m.length),this.getIncludeByName(g)===void 0&&nt.contains(g)&&e.include(nt.get(g))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r!=null?r:[],this.extensions=o!=null?o:{},this.keywords=n!=null?n:{},this.isMethod){let s=oS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(gm);if(a){let l=0;for(;l<a.length;){let c=a[l++],h;c==="in"||c==="out"||c==="inout"?h=a[l++]:(h=c,c="");let p=a[l++];this.inputs.push({name:p,type:h,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let n={};for(let s in this.keywords)n[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=n,(o=this.includes)!=null&&o.length){let s=[];for(let a=0;a<this.includes.length;a++)s.push(this.includes[a].toJSON(e).uuid);r.includes=s}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let o in e.keywords)this.keywords[o]=r.getNode(e.keywords[o])}return e.includes&&r&&(this.includes=e.includes.map(o=>r.getNode(o))),this}};var iS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,jl=class extends de{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||jl.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,s){this.src=e||"";let a,l,c="",h=iS.exec(e);this.useDefine=s!=null?s:this.src.charAt(0)==="#",h&&h.length>1?(l=h[1],a=h[2],c=h[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},Ne=jl;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var nS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
-
)*?)}`,"gim"),
|
|
1
|
+
var kd=Object.create;var Un=Object.defineProperty,Hd=Object.defineProperties,qd=Object.getOwnPropertyDescriptor,Wd=Object.getOwnPropertyDescriptors,$d=Object.getOwnPropertyNames,Lc=Object.getOwnPropertySymbols,Jd=Object.getPrototypeOf,Tc=Object.prototype.hasOwnProperty,Yd=Object.prototype.propertyIsEnumerable;var Cc=(i,t,e)=>t in i?Un(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,I=(i,t)=>{for(var e in t||(t={}))Tc.call(t,e)&&Cc(i,e,t[e]);if(Lc)for(var e of Lc(t))Yd.call(t,e)&&Cc(i,e,t[e]);return i},H=(i,t)=>Hd(i,Wd(t));var Kd=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Nc=(i,t)=>{for(var e in t)Un(i,e,{get:t[e],enumerable:!0})},Xd=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $d(t))!Tc.call(i,o)&&o!==e&&Un(i,o,{get:()=>t[o],enumerable:!(r=qd(t,o))||r.enumerable});return i};var Qd=(i,t,e)=>(e=i!=null?kd(Jd(i)):{},Xd(t||!i||!i.__esModule?Un(e,"default",{value:i,enumerable:!0}):e,i));var xd=Kd((Ga,gd)=>{(function(i,t){typeof Ga=="object"&&typeof gd<"u"?t(Ga):typeof define=="function"&&define.amd?define(["exports"],t):t((i=typeof globalThis<"u"?globalThis:i||self).SVDJS={})})(Ga,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,m,f,g,v,y,b=t[0].length,A=t.length;if(A<b)throw new TypeError("Invalid matrix: m < n");for(var N=[],S=[],k=[],T=e==="f"?A:b,d=g=u=0;d<A;d++)S[d]=new Array(T).fill(0);for(d=0;d<b;d++)k[d]=new Array(b).fill(0);var O,x=new Array(b).fill(0);for(d=0;d<A;d++)for(s=0;s<b;s++)S[d][s]=t[d][s];for(d=0;d<b;d++){for(N[d]=u,f=0,l=d+1,s=d;s<A;s++)f+=Math.pow(S[s][d],2);if(f<n)u=0;else for(m=(p=S[d][d])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[d][d]=p-u,s=l;s<b;s++){for(f=0,a=d;a<A;a++)f+=S[a][d]*S[a][s];for(p=f/m,a=d;a<A;a++)S[a][s]=S[a][s]+p*S[a][d]}for(x[d]=u,f=0,s=l;s<b;s++)f+=Math.pow(S[d][s],2);if(f<n)u=0;else{for(m=(p=S[d][d+1])*(u=p<0?Math.sqrt(f):-Math.sqrt(f))-f,S[d][d+1]=p-u,s=l;s<b;s++)N[s]=S[d][s]/m;for(s=l;s<A;s++){for(f=0,a=l;a<b;a++)f+=S[s][a]*S[d][a];for(a=l;a<b;a++)S[s][a]=S[s][a]+f*N[a]}}g<(v=Math.abs(x[d])+Math.abs(N[d]))&&(g=v)}if(r)for(d=b-1;0<=d;d--){if(u!==0){for(m=S[d][d+1]*u,s=l;s<b;s++)k[s][d]=S[d][s]/m;for(s=l;s<b;s++){for(f=0,a=l;a<b;a++)f+=S[d][a]*k[a][s];for(a=l;a<b;a++)k[a][s]=k[a][s]+f*k[a][d]}}for(s=l;s<b;s++)k[d][s]=0,k[s][d]=0;k[d][d]=1,u=N[d],l=d}if(e){if(e==="f")for(d=b;d<A;d++){for(s=b;s<A;s++)S[d][s]=0;S[d][d]=1}for(d=b-1;0<=d;d--){for(l=d+1,u=x[d],s=l;s<T;s++)S[d][s]=0;if(u!==0){for(m=S[d][d]*u,s=l;s<T;s++){for(f=0,a=l;a<A;a++)f+=S[a][d]*S[a][s];for(p=f/m,a=d;a<A;a++)S[a][s]=S[a][s]+p*S[a][d]}for(s=d;s<A;s++)S[s][d]=S[s][d]/u}else for(s=d;s<A;s++)S[s][d]=0;S[d][d]=S[d][d]+1}}for(o*=g,a=b-1;0<=a;a--)for(var L=0;L<50;L++){for(O=!1,l=a;0<=l;l--){if(Math.abs(N[l])<=o){O=!0;break}if(Math.abs(x[l-1])<=o)break}if(!O){for(h=0,c=l-(f=1),d=l;d<a+1&&(p=f*N[d],N[d]=h*N[d],!(Math.abs(p)<=o));d++)if(u=x[d],x[d]=Math.sqrt(p*p+u*u),h=u/(m=x[d]),f=-p/m,e)for(s=0;s<A;s++)v=S[s][c],y=S[s][d],S[s][c]=v*h+y*f,S[s][d]=-v*f+y*h}if(y=x[a],l===a){if(y<0&&(x[a]=-y,r))for(s=0;s<b;s++)k[s][a]=-k[s][a];break}for(g=x[l],p=(((v=x[a-1])-y)*(v+y)+((u=N[a-1])-(m=N[a]))*(u+m))/(2*m*v),u=Math.sqrt(p*p+1),p=((g-y)*(g+y)+m*(v/(p<0?p-u:p+u)-m))/g,d=l+(f=h=1);d<a+1;d++){if(u=N[d],v=x[d],m=f*u,u*=h,y=Math.sqrt(p*p+m*m),p=g*(h=p/(N[d-1]=y))+u*(f=m/y),u=-g*f+u*h,m=v*f,v*=h,r)for(s=0;s<b;s++)g=k[s][d-1],y=k[s][d],k[s][d-1]=g*h+y*f,k[s][d]=-g*f+y*h;if(y=Math.sqrt(p*p+m*m),p=(h=p/(x[d-1]=y))*u+(f=m/y)*v,g=-f*u+h*v,e)for(s=0;s<A;s++)v=S[s][d-1],y=S[s][d],S[s][d-1]=v*h+y*f,S[s][d]=-v*f+y*h}N[l]=0,N[a]=p,x[a]=g}for(d=0;d<b;d++)x[d]<o&&(x[d]=0);return{u:S,q:x,v:k}},i.VERSION="1.1.1",Object.defineProperty(i,"__esModule",{value:!0})})});import{FileLoader as O1,Loader as I1}from"three";function Mc(i){return Array.isArray(i)?i:[i]}var Zd=typeof global=="object"&&global&&global.Object===Object&&global,kn=Zd;var ef=typeof self=="object"&&self&&self.Object===Object&&self,tf=kn||ef||Function("return this")(),Ze=tf;var rf=Ze.Symbol,Nt=rf;var Pc=Object.prototype,of=Pc.hasOwnProperty,nf=Pc.toString,Fi=Nt?Nt.toStringTag:void 0;function sf(i){var t=of.call(i,Fi),e=i[Fi];try{i[Fi]=void 0;var r=!0}catch{}var o=nf.call(i);return r&&(t?i[Fi]=e:delete i[Fi]),o}var Oc=sf;var af=Object.prototype,lf=af.toString;function cf(i){return lf.call(i)}var Ic=cf;var hf="[object Null]",pf="[object Undefined]",Ac=Nt?Nt.toStringTag:void 0;function uf(i){return i==null?i===void 0?pf:hf:Ac&&Ac in Object(i)?Oc(i):Ic(i)}var Ft=uf;function mf(i){return i!=null&&typeof i=="object"}var bt=mf;var df="[object Symbol]";function ff(i){return typeof i=="symbol"||bt(i)&&Ft(i)==df}var Io=ff;function yf(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 Hn=yf;var gf=Array.isArray,et=gf;var xf=1/0,Dc=Nt?Nt.prototype:void 0,Bc=Dc?Dc.toString:void 0;function Ec(i){if(typeof i=="string")return i;if(et(i))return Hn(i,Ec)+"";if(Io(i))return Bc?Bc.call(i):"";var t=i+"";return t=="0"&&1/i==-xf?"-0":t}var _c=Ec;function bf(i){var t=typeof i;return i!=null&&(t=="object"||t=="function")}var vt=bf;function vf(i){return i}var qn=vf;var Sf="[object AsyncFunction]",wf="[object Function]",Lf="[object GeneratorFunction]",Cf="[object Proxy]";function Tf(i){if(!vt(i))return!1;var t=Ft(i);return t==wf||t==Lf||t==Sf||t==Cf}var Ao=Tf;var Nf=Ze["__core-js_shared__"],Wn=Nf;var Gc=function(){var i=/[^.]+$/.exec(Wn&&Wn.keys&&Wn.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function Mf(i){return!!Gc&&Gc in i}var zc=Mf;var Pf=Function.prototype,Of=Pf.toString;function If(i){if(i!=null){try{return Of.call(i)}catch{}try{return i+""}catch{}}return""}var Pr=If;var Af=/[\\^$.*+?()[\]{}|]/g,Df=/^\[object .+?Constructor\]$/,Bf=Function.prototype,Ef=Object.prototype,_f=Bf.toString,Gf=Ef.hasOwnProperty,zf=RegExp("^"+_f.call(Gf).replace(Af,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Rf(i){if(!vt(i)||zc(i))return!1;var t=Ao(i)?zf:Df;return t.test(Pr(i))}var Rc=Rf;function Ff(i,t){return i==null?void 0:i[t]}var Fc=Ff;function Vf(i,t){var e=Fc(i,t);return Rc(e)?e:void 0}var Dt=Vf;var jf=Dt(Ze,"WeakMap"),$n=jf;var Vc=Object.create,Uf=function(){function i(){}return function(t){if(!vt(t))return{};if(Vc)return Vc(t);i.prototype=t;var e=new i;return i.prototype=void 0,e}}(),jc=Uf;function kf(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 Uc=kf;function Hf(i,t){var e=-1,r=i.length;for(t||(t=Array(r));++e<r;)t[e]=i[e];return t}var Jn=Hf;var qf=800,Wf=16,$f=Date.now;function Jf(i){var t=0,e=0;return function(){var r=$f(),o=Wf-(r-e);if(e=r,o>0){if(++t>=qf)return arguments[0]}else t=0;return i.apply(void 0,arguments)}}var kc=Jf;function Yf(i){return function(){return i}}var Hc=Yf;var Kf=function(){try{var i=Dt(Object,"defineProperty");return i({},"",{}),i}catch{}}(),Do=Kf;var Xf=Do?function(i,t){return Do(i,"toString",{configurable:!0,enumerable:!1,value:Hc(t),writable:!0})}:qn,qc=Xf;var Qf=kc(qc),Yn=Qf;function Zf(i,t){for(var e=-1,r=i==null?0:i.length;++e<r&&t(i[e],e,i)!==!1;);return i}var Wc=Zf;var ey=9007199254740991,ty=/^(?:0|[1-9]\d*)$/;function ry(i,t){var e=typeof i;return t=t==null?ey:t,!!t&&(e=="number"||e!="symbol"&&ty.test(i))&&i>-1&&i%1==0&&i<t}var Kn=ry;function oy(i,t,e){t=="__proto__"&&Do?Do(i,t,{configurable:!0,enumerable:!0,value:e,writable:!0}):i[t]=e}var Bo=oy;function iy(i,t){return i===t||i!==i&&t!==t}var Ur=iy;var ny=Object.prototype,sy=ny.hasOwnProperty;function ay(i,t,e){var r=i[t];(!(sy.call(i,t)&&Ur(r,e))||e===void 0&&!(t in i))&&Bo(i,t,e)}var Xn=ay;function ly(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?Bo(e,a,l):Xn(e,a,l)}return e}var qt=ly;var $c=Math.max;function cy(i,t,e){return t=$c(t===void 0?i.length-1:t,0),function(){for(var r=arguments,o=-1,n=$c(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),Uc(i,this,a)}}var Qn=cy;function hy(i,t){return Yn(Qn(i,t,qn),i+"")}var Jc=hy;var py=9007199254740991;function uy(i){return typeof i=="number"&&i>-1&&i%1==0&&i<=py}var Zn=uy;function my(i){return i!=null&&Zn(i.length)&&!Ao(i)}var kr=my;function dy(i,t,e){if(!vt(e))return!1;var r=typeof t;return(r=="number"?kr(e)&&Kn(t,e.length):r=="string"&&t in e)?Ur(e[t],i):!1}var Yc=dy;function fy(i){return Jc(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&&Yc(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 Kc=fy;var yy=Object.prototype;function gy(i){var t=i&&i.constructor,e=typeof t=="function"&&t.prototype||yy;return i===e}var Eo=gy;function xy(i,t){for(var e=-1,r=Array(i);++e<i;)r[e]=t(e);return r}var Xc=xy;var by="[object Arguments]";function vy(i){return bt(i)&&Ft(i)==by}var Fa=vy;var Qc=Object.prototype,Sy=Qc.hasOwnProperty,wy=Qc.propertyIsEnumerable,Ly=Fa(function(){return arguments}())?Fa:function(i){return bt(i)&&Sy.call(i,"callee")&&!wy.call(i,"callee")},uo=Ly;function Cy(){return!1}var Zc=Cy;var rh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,eh=rh&&typeof module=="object"&&module&&!module.nodeType&&module,Ty=eh&&eh.exports===rh,th=Ty?Ze.Buffer:void 0,Ny=th?th.isBuffer:void 0,My=Ny||Zc,_o=My;var Py="[object Arguments]",Oy="[object Array]",Iy="[object Boolean]",Ay="[object Date]",Dy="[object Error]",By="[object Function]",Ey="[object Map]",_y="[object Number]",Gy="[object Object]",zy="[object RegExp]",Ry="[object Set]",Fy="[object String]",Vy="[object WeakMap]",jy="[object ArrayBuffer]",Uy="[object DataView]",ky="[object Float32Array]",Hy="[object Float64Array]",qy="[object Int8Array]",Wy="[object Int16Array]",$y="[object Int32Array]",Jy="[object Uint8Array]",Yy="[object Uint8ClampedArray]",Ky="[object Uint16Array]",Xy="[object Uint32Array]",Ue={};Ue[ky]=Ue[Hy]=Ue[qy]=Ue[Wy]=Ue[$y]=Ue[Jy]=Ue[Yy]=Ue[Ky]=Ue[Xy]=!0;Ue[Py]=Ue[Oy]=Ue[jy]=Ue[Iy]=Ue[Uy]=Ue[Ay]=Ue[Dy]=Ue[By]=Ue[Ey]=Ue[_y]=Ue[Gy]=Ue[zy]=Ue[Ry]=Ue[Fy]=Ue[Vy]=!1;function Qy(i){return bt(i)&&Zn(i.length)&&!!Ue[Ft(i)]}var oh=Qy;function Zy(i){return function(t){return i(t)}}var Go=Zy;var ih=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Vi=ih&&typeof module=="object"&&module&&!module.nodeType&&module,eg=Vi&&Vi.exports===ih,Va=eg&&kn.process,tg=function(){try{var i=Vi&&Vi.require&&Vi.require("util").types;return i||Va&&Va.binding&&Va.binding("util")}catch{}}(),Or=tg;var nh=Or&&Or.isTypedArray,rg=nh?Go(nh):oh,es=rg;var og=Object.prototype,ig=og.hasOwnProperty;function ng(i,t){var e=et(i),r=!e&&uo(i),o=!e&&!r&&_o(i),n=!e&&!r&&!o&&es(i),s=e||r||o||n,a=s?Xc(i.length,String):[],l=a.length;for(var c in i)(t||ig.call(i,c))&&!(s&&(c=="length"||o&&(c=="offset"||c=="parent")||n&&(c=="buffer"||c=="byteLength"||c=="byteOffset")||Kn(c,l)))&&a.push(c);return a}var ts=ng;function sg(i,t){return function(e){return i(t(e))}}var rs=sg;var ag=rs(Object.keys,Object),sh=ag;var lg=Object.prototype,cg=lg.hasOwnProperty;function hg(i){if(!Eo(i))return sh(i);var t=[];for(var e in Object(i))cg.call(i,e)&&e!="constructor"&&t.push(e);return t}var ah=hg;function pg(i){return kr(i)?ts(i):ah(i)}var zo=pg;function ug(i){var t=[];if(i!=null)for(var e in Object(i))t.push(e);return t}var lh=ug;var mg=Object.prototype,dg=mg.hasOwnProperty;function fg(i){if(!vt(i))return lh(i);var t=Eo(i),e=[];for(var r in i)r=="constructor"&&(t||!dg.call(i,r))||e.push(r);return e}var ch=fg;function yg(i){return kr(i)?ts(i,!0):ch(i)}var cr=yg;var gg=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xg=/^\w*$/;function bg(i,t){if(et(i))return!1;var e=typeof i;return e=="number"||e=="symbol"||e=="boolean"||i==null||Io(i)?!0:xg.test(i)||!gg.test(i)||t!=null&&i in Object(t)}var hh=bg;var vg=Dt(Object,"create"),Ir=vg;function Sg(){this.__data__=Ir?Ir(null):{},this.size=0}var ph=Sg;function wg(i){var t=this.has(i)&&delete this.__data__[i];return this.size-=t?1:0,t}var uh=wg;var Lg="__lodash_hash_undefined__",Cg=Object.prototype,Tg=Cg.hasOwnProperty;function Ng(i){var t=this.__data__;if(Ir){var e=t[i];return e===Lg?void 0:e}return Tg.call(t,i)?t[i]:void 0}var mh=Ng;var Mg=Object.prototype,Pg=Mg.hasOwnProperty;function Og(i){var t=this.__data__;return Ir?t[i]!==void 0:Pg.call(t,i)}var dh=Og;var Ig="__lodash_hash_undefined__";function Ag(i,t){var e=this.__data__;return this.size+=this.has(i)?0:1,e[i]=Ir&&t===void 0?Ig:t,this}var fh=Ag;function Ro(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])}}Ro.prototype.clear=ph;Ro.prototype.delete=uh;Ro.prototype.get=mh;Ro.prototype.has=dh;Ro.prototype.set=fh;var ja=Ro;function Dg(){this.__data__=[],this.size=0}var yh=Dg;function Bg(i,t){for(var e=i.length;e--;)if(Ur(i[e][0],t))return e;return-1}var Hr=Bg;var Eg=Array.prototype,_g=Eg.splice;function Gg(i){var t=this.__data__,e=Hr(t,i);if(e<0)return!1;var r=t.length-1;return e==r?t.pop():_g.call(t,e,1),--this.size,!0}var gh=Gg;function zg(i){var t=this.__data__,e=Hr(t,i);return e<0?void 0:t[e][1]}var xh=zg;function Rg(i){return Hr(this.__data__,i)>-1}var bh=Rg;function Fg(i,t){var e=this.__data__,r=Hr(e,i);return r<0?(++this.size,e.push([i,t])):e[r][1]=t,this}var vh=Fg;function Fo(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])}}Fo.prototype.clear=yh;Fo.prototype.delete=gh;Fo.prototype.get=xh;Fo.prototype.has=bh;Fo.prototype.set=vh;var qr=Fo;var Vg=Dt(Ze,"Map"),Wr=Vg;function jg(){this.size=0,this.__data__={hash:new ja,map:new(Wr||qr),string:new ja}}var Sh=jg;function Ug(i){var t=typeof i;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?i!=="__proto__":i===null}var wh=Ug;function kg(i,t){var e=i.__data__;return wh(t)?e[typeof t=="string"?"string":"hash"]:e.map}var $r=kg;function Hg(i){var t=$r(this,i).delete(i);return this.size-=t?1:0,t}var Lh=Hg;function qg(i){return $r(this,i).get(i)}var Ch=qg;function Wg(i){return $r(this,i).has(i)}var Th=Wg;function $g(i,t){var e=$r(this,i),r=e.size;return e.set(i,t),this.size+=e.size==r?0:1,this}var Nh=$g;function Vo(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])}}Vo.prototype.clear=Sh;Vo.prototype.delete=Lh;Vo.prototype.get=Ch;Vo.prototype.has=Th;Vo.prototype.set=Nh;var ji=Vo;var Jg="Expected a function";function Ua(i,t){if(typeof i!="function"||t!=null&&typeof t!="function")throw new TypeError(Jg);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||ji),e}Ua.Cache=ji;var Mh=Ua;var Yg=500;function Kg(i){var t=Mh(i,function(r){return e.size===Yg&&e.clear(),r}),e=t.cache;return t}var Ph=Kg;var Xg=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Qg=/\\(\\)?/g,Zg=Ph(function(i){var t=[];return i.charCodeAt(0)===46&&t.push(""),i.replace(Xg,function(e,r,o,n){t.push(o?n.replace(Qg,"$1"):r||e)}),t}),Oh=Zg;function ex(i){return i==null?"":_c(i)}var Ih=ex;function tx(i,t){return et(i)?i:hh(i,t)?[i]:Oh(Ih(i))}var jo=tx;var rx=1/0;function ox(i){if(typeof i=="string"||Io(i))return i;var t=i+"";return t=="0"&&1/i==-rx?"-0":t}var os=ox;function ix(i,t){t=jo(t,i);for(var e=0,r=t.length;i!=null&&e<r;)i=i[os(t[e++])];return e&&e==r?i:void 0}var Ah=ix;function nx(i,t){for(var e=-1,r=t.length,o=i.length;++e<r;)i[o+e]=t[e];return i}var Uo=nx;var Dh=Nt?Nt.isConcatSpreadable:void 0;function sx(i){return et(i)||uo(i)||!!(Dh&&i&&i[Dh])}var Bh=sx;function Eh(i,t,e,r,o){var n=-1,s=i.length;for(e||(e=Bh),o||(o=[]);++n<s;){var a=i[n];t>0&&e(a)?t>1?Eh(a,t-1,e,r,o):Uo(o,a):r||(o[o.length]=a)}return o}var _h=Eh;function ax(i){var t=i==null?0:i.length;return t?_h(i,1):[]}var Gh=ax;function lx(i){return Yn(Qn(i,void 0,Gh),i+"")}var zh=lx;var cx=rs(Object.getPrototypeOf,Object),ko=cx;var hx="[object Object]",px=Function.prototype,ux=Object.prototype,Rh=px.toString,mx=ux.hasOwnProperty,dx=Rh.call(Object);function fx(i){if(!bt(i)||Ft(i)!=hx)return!1;var t=ko(i);if(t===null)return!0;var e=mx.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Rh.call(e)==dx}var is=fx;function yx(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 Fh=yx;function gx(){this.__data__=new qr,this.size=0}var Vh=gx;function xx(i){var t=this.__data__,e=t.delete(i);return this.size=t.size,e}var jh=xx;function bx(i){return this.__data__.get(i)}var Uh=bx;function vx(i){return this.__data__.has(i)}var kh=vx;var Sx=200;function wx(i,t){var e=this.__data__;if(e instanceof qr){var r=e.__data__;if(!Wr||r.length<Sx-1)return r.push([i,t]),this.size=++e.size,this;e=this.__data__=new ji(r)}return e.set(i,t),this.size=e.size,this}var Hh=wx;function Ho(i){var t=this.__data__=new qr(i);this.size=t.size}Ho.prototype.clear=Vh;Ho.prototype.delete=jh;Ho.prototype.get=Uh;Ho.prototype.has=kh;Ho.prototype.set=Hh;var ns=Ho;function Lx(i,t){return i&&qt(t,zo(t),i)}var qh=Lx;function Cx(i,t){return i&&qt(t,cr(t),i)}var Wh=Cx;var Kh=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$h=Kh&&typeof module=="object"&&module&&!module.nodeType&&module,Tx=$h&&$h.exports===Kh,Jh=Tx?Ze.Buffer:void 0,Yh=Jh?Jh.allocUnsafe:void 0;function Nx(i,t){if(t)return i.slice();var e=i.length,r=Yh?Yh(e):new i.constructor(e);return i.copy(r),r}var ss=Nx;function Mx(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 Xh=Mx;function Px(){return[]}var as=Px;var Ox=Object.prototype,Ix=Ox.propertyIsEnumerable,Qh=Object.getOwnPropertySymbols,Ax=Qh?function(i){return i==null?[]:(i=Object(i),Xh(Qh(i),function(t){return Ix.call(i,t)}))}:as,qo=Ax;function Dx(i,t){return qt(i,qo(i),t)}var Zh=Dx;var Bx=Object.getOwnPropertySymbols,Ex=Bx?function(i){for(var t=[];i;)Uo(t,qo(i)),i=ko(i);return t}:as,ls=Ex;function _x(i,t){return qt(i,ls(i),t)}var ep=_x;function Gx(i,t,e){var r=t(i);return et(i)?r:Uo(r,e(i))}var cs=Gx;function zx(i){return cs(i,zo,qo)}var tp=zx;function Rx(i){return cs(i,cr,ls)}var hs=Rx;var Fx=Dt(Ze,"DataView"),ps=Fx;var Vx=Dt(Ze,"Promise"),us=Vx;var jx=Dt(Ze,"Set"),ms=jx;var rp="[object Map]",Ux="[object Object]",op="[object Promise]",ip="[object Set]",np="[object WeakMap]",sp="[object DataView]",kx=Pr(ps),Hx=Pr(Wr),qx=Pr(us),Wx=Pr(ms),$x=Pr($n),mo=Ft;(ps&&mo(new ps(new ArrayBuffer(1)))!=sp||Wr&&mo(new Wr)!=rp||us&&mo(us.resolve())!=op||ms&&mo(new ms)!=ip||$n&&mo(new $n)!=np)&&(mo=function(i){var t=Ft(i),e=t==Ux?i.constructor:void 0,r=e?Pr(e):"";if(r)switch(r){case kx:return sp;case Hx:return rp;case qx:return op;case Wx:return ip;case $x:return np}return t});var Wo=mo;var Jx=Object.prototype,Yx=Jx.hasOwnProperty;function Kx(i){var t=i.length,e=new i.constructor(t);return t&&typeof i[0]=="string"&&Yx.call(i,"index")&&(e.index=i.index,e.input=i.input),e}var ap=Kx;var Xx=Ze.Uint8Array,ka=Xx;function Qx(i){var t=new i.constructor(i.byteLength);return new ka(t).set(new ka(i)),t}var $o=Qx;function Zx(i,t){var e=t?$o(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.byteLength)}var lp=Zx;var e0=/\w*$/;function t0(i){var t=new i.constructor(i.source,e0.exec(i));return t.lastIndex=i.lastIndex,t}var cp=t0;var hp=Nt?Nt.prototype:void 0,pp=hp?hp.valueOf:void 0;function r0(i){return pp?Object(pp.call(i)):{}}var up=r0;function o0(i,t){var e=t?$o(i.buffer):i.buffer;return new i.constructor(e,i.byteOffset,i.length)}var ds=o0;var i0="[object Boolean]",n0="[object Date]",s0="[object Map]",a0="[object Number]",l0="[object RegExp]",c0="[object Set]",h0="[object String]",p0="[object Symbol]",u0="[object ArrayBuffer]",m0="[object DataView]",d0="[object Float32Array]",f0="[object Float64Array]",y0="[object Int8Array]",g0="[object Int16Array]",x0="[object Int32Array]",b0="[object Uint8Array]",v0="[object Uint8ClampedArray]",S0="[object Uint16Array]",w0="[object Uint32Array]";function L0(i,t,e){var r=i.constructor;switch(t){case u0:return $o(i);case i0:case n0:return new r(+i);case m0:return lp(i,e);case d0:case f0:case y0:case g0:case x0:case b0:case v0:case S0:case w0:return ds(i,e);case s0:return new r;case a0:case h0:return new r(i);case l0:return cp(i);case c0:return new r;case p0:return up(i)}}var mp=L0;function C0(i){return typeof i.constructor=="function"&&!Eo(i)?jc(ko(i)):{}}var fs=C0;var T0="[object Map]";function N0(i){return bt(i)&&Wo(i)==T0}var dp=N0;var fp=Or&&Or.isMap,M0=fp?Go(fp):dp,yp=M0;var P0="[object Set]";function O0(i){return bt(i)&&Wo(i)==P0}var gp=O0;var xp=Or&&Or.isSet,I0=xp?Go(xp):gp,bp=I0;var A0=1,D0=2,B0=4,vp="[object Arguments]",E0="[object Array]",_0="[object Boolean]",G0="[object Date]",z0="[object Error]",Sp="[object Function]",R0="[object GeneratorFunction]",F0="[object Map]",V0="[object Number]",wp="[object Object]",j0="[object RegExp]",U0="[object Set]",k0="[object String]",H0="[object Symbol]",q0="[object WeakMap]",W0="[object ArrayBuffer]",$0="[object DataView]",J0="[object Float32Array]",Y0="[object Float64Array]",K0="[object Int8Array]",X0="[object Int16Array]",Q0="[object Int32Array]",Z0="[object Uint8Array]",eb="[object Uint8ClampedArray]",tb="[object Uint16Array]",rb="[object Uint32Array]",Re={};Re[vp]=Re[E0]=Re[W0]=Re[$0]=Re[_0]=Re[G0]=Re[J0]=Re[Y0]=Re[K0]=Re[X0]=Re[Q0]=Re[F0]=Re[V0]=Re[wp]=Re[j0]=Re[U0]=Re[k0]=Re[H0]=Re[Z0]=Re[eb]=Re[tb]=Re[rb]=!0;Re[z0]=Re[Sp]=Re[q0]=!1;function ys(i,t,e,r,o,n){var s,a=t&A0,l=t&D0,c=t&B0;if(e&&(s=o?e(i,r,o,n):e(i)),s!==void 0)return s;if(!vt(i))return i;var h=et(i);if(h){if(s=ap(i),!a)return Jn(i,s)}else{var p=Wo(i),u=p==Sp||p==R0;if(_o(i))return ss(i,a);if(p==wp||p==vp||u&&!o){if(s=l||u?{}:fs(i),!a)return l?ep(i,Wh(s,i)):Zh(i,qh(s,i))}else{if(!Re[p])return o?i:{};s=mp(i,p,a)}}n||(n=new ns);var m=n.get(i);if(m)return m;n.set(i,s),bp(i)?i.forEach(function(v){s.add(ys(v,t,e,v,i,n))}):yp(i)&&i.forEach(function(v,y){s.set(y,ys(v,t,e,y,i,n))});var f=c?l?hs:tp:l?cr:zo,g=h?void 0:f(i);return Wc(g||i,function(v,y){g&&(y=v,v=i[y]),Xn(s,y,ys(v,t,e,y,i,n))}),s}var gs=ys;var ob=1,ib=4;function nb(i){return gs(i,ob|ib)}var Ui=nb;function sb(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 Lp=sb;var ab=Lp(),Cp=ab;function lb(i,t,e){(e!==void 0&&!Ur(i[t],e)||e===void 0&&!(t in i))&&Bo(i,t,e)}var ki=lb;function cb(i){return bt(i)&&kr(i)}var Tp=cb;function hb(i,t){if(!(t==="constructor"&&typeof i[t]=="function")&&t!="__proto__")return i[t]}var Hi=hb;function pb(i){return qt(i,cr(i))}var Np=pb;function ub(i,t,e,r,o,n,s){var a=Hi(i,e),l=Hi(t,e),c=s.get(l);if(c){ki(i,e,c);return}var h=n?n(a,l,e+"",i,t,s):void 0,p=h===void 0;if(p){var u=et(l),m=!u&&_o(l),f=!u&&!m&&es(l);h=l,u||m||f?et(a)?h=a:Tp(a)?h=Jn(a):m?(p=!1,h=ss(l,!0)):f?(p=!1,h=ds(l,!0)):h=[]:is(l)||uo(l)?(h=a,uo(a)?h=Np(a):(!vt(a)||Ao(a))&&(h=fs(l))):p=!1}p&&(s.set(l,h),o(h,l,r,n,s),s.delete(l)),ki(i,e,h)}var Mp=ub;function Pp(i,t,e,r,o){i!==t&&Cp(t,function(n,s){if(o||(o=new ns),vt(n))Mp(i,t,s,e,Pp,r,o);else{var a=r?r(Hi(i,s),n,s+"",i,t,o):void 0;a===void 0&&(a=n),ki(i,s,a)}},cr)}var Op=Pp;function mb(i){var t=i==null?0:i.length;return t?i[t-1]:void 0}var Ip=mb;function db(i,t){return t.length<2?i:Ah(i,Fh(t,0,-1))}var Ap=db;var fb=Kc(function(i,t,e){Op(i,t,e)}),fo=fb;function yb(i,t){return t=jo(t,i),i=Ap(i,t),i==null||delete i[os(Ip(t))]}var Dp=yb;function gb(i){return is(i)?void 0:i}var Bp=gb;var xb=1,bb=2,vb=4,Sb=zh(function(i,t){var e={};if(i==null)return e;var r=!1;t=Hn(t,function(n){return n=jo(n,i),r||(r=n.length>1),n}),qt(i,hs(i),e),r&&(e=gs(e,xb|bb|vb,Bp));for(var o=t.length;o--;)Dp(e,t[o]);return e}),Jo=Sb;var Yo;(e=>{e.all=["PerspectiveCamera","OrthographicCamera"];function t(r){return e.all.includes(r)}e.is=t})(Yo||(Yo={}));var yo;(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})(yo||(yo={}));var Ep;(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})(Ep||(Ep={}));var Ko;(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})(Ko||(Ko={}));var _p;(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})(_p||(_p={}));var Jr;(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!=null?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})(Jr||(Jr={}));var Vt;(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})(Vt||(Vt={}));var hr;(s=>{s.white=H(I({},Vt.white),{a:1});function t(a){return{r:a[0],g:a[1],b:a[2],a:a[3]}}s.from0to1=t;function e(a,l){return H(I({},Vt.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 Vt.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})(hr||(hr={}));var xs;(t=>t.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(xs||(xs={}));var Gp;(t=>t.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Gp||(Gp={}));var zp;(t=>t.defaultData={control1:[.5,.05],control2:[.1,.3]})(zp||(zp={}));var bs;(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})(bs||(bs={}));var Wt=class{modifyById(t,e){let r=this;if(r[t]===void 0)throw new Error("not expected");{let n=H(I({},r),{[t]:e});return Object.setPrototypeOf(n,Wt.prototype),n}}add(t,e){var o;let r=this.runOp({type:1,id:t,data:e});return(o=r==null?void 0:r.data)!=null?o:this}runOp(t){let e=this;if(t.type===1){let r=e[t.id],o;r===void 0?o={type:2,id:t.id}:o={type:1,id:t.id,data:r};let{id:n,data:s}=t,a=H(I({},e),{[n]:s});return Object.setPrototypeOf(a,Wt.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=I({},e);return Object.setPrototypeOf(n,Wt.prototype),delete n[r],{data:n,actual:t,reverse:{type:1,id:r,data:o}}}}throw new Error("illegal arg")}};function qi(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"&&qi(r)}return Object.freeze(i)}function Rp(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 vs=class extends Error{};function pr(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 Fp(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 Vp(){return typeof process<"u"}function jp(i,t){for(let e of i)t(e.id,e.data),jp(e.children,t)}function Up(i,t){t(i.id,i.data);for(let e of i.children)Up(e,t)}var $t=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,$t.prototype)}deepFreeze(){let e=0;for(;e<this.length;)qi(this[e]),e++}fillCaches0(e,r){this.objCaches.set(e.id,e),this.parentCaches.set(e.id,r);for(let o of e.children)this.fillCaches0(o,e.id)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,this.parentCaches=new Map;for(let e of this)this.fillCaches0(e,null)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}isDescendantOf(e,r){for(;e;){let o=this.parent(e);if(o===r)return!0;e=o}return!1}data(e){var r;return(r=this.get(e))==null?void 0:r.data}has(e){return this.childrenOf(e)!==void 0}get(e){return this.fillCaches(),this.objCaches.get(e)}childrenOf(e){var r;return e===null?this:(r=this.get(e))==null?void 0:r.children}traverseFrom(e,r){if(e===null)this.traverse(r);else{let o=this.get(e);o&&Up(o,r)}}traverse(e){jp(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]=H(I({},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]=H(I({},n[c]),{children:a})}Object.setPrototypeOf(n,$t.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,m)=>u.fi-m.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:H(I({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 m=r;for(;m!==null;){if(m===void 0)throw new Error;if(m===n)throw new vs("cyclic tree");m=this.parent(m)}}let s=this.parent(n);if(s===void 0)return null;let a=s,l=this.childrenArray(s),c=l.findIndex(m=>m.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(I({},h),{fi:o}),l=[...l,h],l.sort((m,f)=>m.fi-f.fi),e.localIndex=l.indexOf(h),p=p.modifyArrayBy(s,l),{data:p,actual:e,reverse:{type:9,parent:a,fi:u,id: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(I(I({},o),n))}r.sort((o,n)=>Rp(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 H(I({},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 pr(0,o,o);{let s=n[0].fi;return pr(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 pr(l,l+o,o)}else return pr(s.fi,a.fi,o)}}};var Ss;(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=I({},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})(Ss||(Ss={}));var Je=class extends Array{constructor(...e){super(...e);Object.setPrototypeOf(this,Je.prototype)}deepFreeze(){let e=0;for(;e<this.length;)qi(this[e]),e++}fillCaches0(e){this.objCaches.set(e.id,e)}fillCaches(){if(this.objCaches===void 0){this.objCaches=new Map,Object.getOwnPropertyDescriptor(this,"objCaches").enumerable=!1;for(let e of this)this.fillCaches0(e)}}randomId(){this.fillCaches();let e=Array.from(this.objCaches.keys());if(e.length!==0)return e[Math.max(0,Math.floor(Math.random()*e.length)-1)]}data(e){var r;return(r=this.get(e))==null?void 0:r.data}get(e){return this.fillCaches(),this.objCaches.get(e)}modifyById(e,r){if(this.get(e)===void 0)throw new Error("not expected");{let 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]=H(I({},a),{data:r}),this.modifyArrayBy(n)}}modifyArrayBy(e){Object.setPrototypeOf(e,Je.prototype);let r=e;return Vp()||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:I({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=H(I({},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 pr(0,r,r);{let n=o[0].fi;return pr(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 pr(a,a+r,r)}else return pr(n.fi,s.fi,r)}}};var kp=Symbol(),Ls=Symbol(),Xo=class{reportOp(t,e){let r=this;if(e===null)return;r._current=e.data;let o=[];for(;!(r instanceof ws);){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[Ls];r&&r(),delete this._children[t]}}}},qa=class extends Xo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){if(Array.isArray(this._current)){if(typeof t=="string"&&(t=parseInt(t),isNaN(t)))throw new Error("Invalid path");this._current=[...this._current],this._current[t]=e}else this._current=H(I({},this._current),{[t]:e})}runOp(t){this.reportOp(t,Ss.runOp(this._current,t))}},Wa=class extends Xo{constructor(t,e,r){super(),this._parent=t,this._path=e,this._current=r}update(t,e){this._current=H(I({},this._current),{[t]:e}),Object.setPrototypeOf(this._current,Wt.prototype)}runOp(t){this.reportOp(t,this._current.runOp(t))}},Hp={get(i,t){if(t===Ls)return()=>{i._parent=null};if(t===kp)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=Cs(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]}}},wb=H(I({},Hp),{set(i,t,e){var o;let r={type:0,props:{[t]:(o=Ya(e))!=null?o: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}}),Lb=H(I({},Hp),{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}}),Qo=class extends Xo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ls]=()=>{this._parent=null}}unproxy(){return this._current}update(t,e){this._current=this._current.modifyById(t,e)}runOp(t){this.reportOp(t,this._current.runOp(t))}randomId(){return this._current.randomId()}isDescendantOf(t,e){return this._current.isDescendantOf(t,e)}childrenOf(t){return this._current.childrenOf(t)}traverse(t){return this._current.traverse(t)}get(t){return this._current.get(t)}parent(t){return this._current.parent(t)}traverse(t){this._current.traverse((e,r)=>{t(e,this.data(e))})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=(a=e.get(t))==null?void 0:a.data,s=Cs(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)}},Zo=class extends Xo{constructor(t,e,r){super(),this._children={},this._parent=t,this._path=e,this._current=r,this[Ls]=()=>{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(t){let e=this.length;for(let r=0;r<e;r++){let o=this._current[r].id;t(this.data(this._current[r].id),o)}}update(t,e){this._current=this._current.modifyById(t,e)}randomId(){return this._current.randomId()}get(t){return H(I({},this._current.get(t)),{data:this.data(t)})}data(t){var a;let{_current:e,_children:r}=this,o=r===void 0?void 0:r[t];if(o!==void 0)return o;let n=(a=e.get(t))==null?void 0:a.data,s=Cs(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 Ha(i,t,e){if(i.length>0){let r=i[i.length-1];if(r.type===0&&t.type===0&&Ts.equal(r.path,e)){Object.assign(r.props,t.props);return}}i.push(H(I({},t),{path:e}))}var ws=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){Ha(this.ts,e,t),Ha(this.actual,r,t),Ha(this.reverse,o,t)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function Cs(i,t,e){return e instanceof $t?new Qo(i,t,e):e instanceof Je?new Zo(i,t,e):e instanceof Wt?new Proxy(new Wa(i,t,e),Lb):e!==null&&typeof e=="object"?Fp(e)?e:new Proxy(new qa(i,t,e),wb):e}function $a(i){let t=new ws(i);return[Cs(t,"",i),t]}function Ja(i,t){let[e,r]=$a(i);return t(e),r.result()}function Ya(i){return i instanceof Qo||i instanceof Zo?i._current:i!==null&&typeof i=="object"?i[kp]:i}var Ts;(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=I({},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 $t||o instanceof Qo)&&typeof n[s]=="string")return e(o.data(n[s]),n,s+1);if((o instanceof Je||o instanceof Zo)&&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})(Ts||(Ts={}));var Ns=class{},Wi=class extends Ns{constructor(e){super();this.id=e}},$i=class extends Ns{constructor(e){super();this.data=e}};var Xa;try{Xa=new TextDecoder}catch{}var ee,Kr,w=0;var Qp=[],Qa=Qp,Za=0,Bt={},Oe,Yr,Jt=0,ur=0,jt,Ar,Mt=[],Ae,qp={useRecords:!1,mapsAsObjects:!0},Ji=class{},tl=new Ji;tl.name="MessagePack 0xC1";var ei=!1,mr=class{constructor(t){t&&(t.useRecords===!1&&t.mapsAsObjects===void 0&&(t.mapsAsObjects=!0),t.structures?t.structures.sharedLength=t.structures.length:t.getStructures&&((t.structures=[]).uninitialized=!0,t.structures.sharedLength=0)),Object.assign(this,t)}unpack(t,e){if(ee)return ou(()=>(Ps(),this?this.unpack(t,e):mr.prototype.unpack.call(qp,t,e)));Kr=e>-1?e:t.length,w=0,Za=0,ur=0,Yr=null,Qa=Qp,jt=null,ee=t;try{Ae=t.dataView||(t.dataView=new DataView(t.buffer,t.byteOffset,t.byteLength))}catch(r){throw ee=null,t instanceof Uint8Array?r:new Error("Source must be a Uint8Array or Buffer but was a "+(t&&typeof t=="object"?t.constructor.name:typeof t))}if(this instanceof mr){if(Bt=this,this.structures)return Oe=this.structures,Ms();(!Oe||Oe.length>0)&&(Oe=[])}else Bt=qp,(!Oe||Oe.length>0)&&(Oe=[]);return Ms()}unpackMultiple(t,e){let r,o=0;try{ei=!0;let n=t.length,s=this?this.unpack(t,n):As.unpack(t,n);if(e){for(e(s);w<n;)if(o=w,e(Ms())===!1)return}else{for(r=[s];w<n;)o=w,r.push(Ms());return r}}catch(n){throw n.lastPosition=o,n.values=r,n}finally{ei=!1,Ps()}}_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 Ms(){try{if(!Bt.trusted&&!ei){let t=Oe.sharedLength||0;t<Oe.length&&(Oe.length=t)}let i=Ye();if(w==Kr)Oe.restoreStructures&&Wp(),Oe=null,ee=null,Ar&&(Ar=null);else if(w>Kr){let t=new Error("Unexpected end of MessagePack data");throw t.incomplete=!0,t}else if(!ei)throw new Error("Data read, but end of buffer not reached");return i}catch(i){throw Oe.restoreStructures&&Wp(),Ps(),(i instanceof RangeError||i.message.startsWith("Unexpected end of buffer"))&&(i.incomplete=!0),i}}function Wp(){for(let i in Oe.restoreStructures)Oe[i]=Oe.restoreStructures[i];Oe.restoreStructures=null}function Ye(){let i=ee[w++];if(i<160)if(i<128){if(i<64)return i;{let t=Oe[i&63]||Bt.getStructures&&Zp()[i&63];return t?(t.read||(t.read=rl(t,i&63)),t.read()):i}}else if(i<144)if(i-=128,Bt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[tu()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}else{i-=144;let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}else if(i<192){let t=i-160;if(ur>=w)return Yr.slice(w-Jt,(w+=t)-Jt);if(ur==0&&Kr<140){let e=t<16?ol(t):eu(t);if(e!=null)return e}return el(t)}else{let t;switch(i){case 192:return null;case 193:return jt?(t=Ye(),t>0?jt[1].slice(jt.position1,jt.position1+=t):jt[0].slice(jt.position0,jt.position0-=t)):tl;case 194:return!1;case 195:return!0;case 196:return Ka(ee[w++]);case 197:return t=Ae.getUint16(w),w+=2,Ka(t);case 198:return t=Ae.getUint32(w),w+=4,Ka(t);case 199:return go(ee[w++]);case 200:return t=Ae.getUint16(w),w+=2,go(t);case 201:return t=Ae.getUint32(w),w+=4,go(t);case 202:if(t=Ae.getFloat32(w),Bt.useFloat32>2){let e=Is[(ee[w]&127)<<1|ee[w+1]>>7];return w+=4,(e*t+(t>0?.5:-.5)>>0)/e}return w+=4,t;case 203:return t=Ae.getFloat64(w),w+=8,t;case 204:return ee[w++];case 205:return t=Ae.getUint16(w),w+=2,t;case 206:return t=Ae.getUint32(w),w+=4,t;case 207:return Bt.int64AsNumber?(t=Ae.getUint32(w)*4294967296,t+=Ae.getUint32(w+4)):t=Ae.getBigUint64(w),w+=8,t;case 208:return Ae.getInt8(w++);case 209:return t=Ae.getInt16(w),w+=2,t;case 210:return t=Ae.getInt32(w),w+=4,t;case 211:return Bt.int64AsNumber?(t=Ae.getInt32(w)*4294967296,t+=Ae.getUint32(w+4)):t=Ae.getBigInt64(w),w+=8,t;case 212:if(t=ee[w++],t==114)return Xp(ee[w++]&63);{let e=Mt[t];if(e)return e.read?(w++,e.read(Ye())):e.noBuffer?(w++,e()):e(ee.subarray(w,++w));throw new Error("Unknown extension "+t)}case 213:return t=ee[w],t==114?(w++,Xp(ee[w++]&63,ee[w++])):go(2);case 214:return go(4);case 215:return go(8);case 216:return go(16);case 217:return t=ee[w++],ur>=w?Yr.slice(w-Jt,(w+=t)-Jt):Tb(t);case 218:return t=Ae.getUint16(w),w+=2,ur>=w?Yr.slice(w-Jt,(w+=t)-Jt):Nb(t);case 219:return t=Ae.getUint32(w),w+=4,ur>=w?Yr.slice(w-Jt,(w+=t)-Jt):Mb(t);case 220:return t=Ae.getUint16(w),w+=2,Jp(t);case 221:return t=Ae.getUint32(w),w+=4,Jp(t);case 222:return t=Ae.getUint16(w),w+=2,Yp(t);case 223:return t=Ae.getUint32(w),w+=4,Yp(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 Cb=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function rl(i,t){function e(){if(e.count++>2){let o=i.read=new Function("r","return function(){return {"+i.map(n=>Cb.test(n)?n+":r()":"["+JSON.stringify(n)+"]:r()").join(",")+"}}")(Ye);return i.highByte===0&&(i.read=$p(t,i.read)),o()}let r={};for(let o=0,n=i.length;o<n;o++){let s=i[o];r[s]=Ye()}return r}return e.count=0,i.highByte===0?$p(t,e):e}var $p=(i,t)=>function(){let e=ee[w++];if(e===0)return t();let r=i<32?-(i+(e<<5)):i+(e<<5),o=Oe[r]||Zp()[r];if(!o)throw new Error("Record id is not defined for "+r);return o.read||(o.read=rl(o,i)),o.read()};function Zp(){let i=ou(()=>(ee=null,Bt.getStructures()));return Oe=Bt._mergeStructures(i,Oe)}var el=Os,Tb=Os,Nb=Os,Mb=Os;function Os(i){let t;if(i<16&&(t=ol(i)))return t;if(i>64&&Xa)return Xa.decode(ee.subarray(w,w+=i));let e=w+i,r=[];for(t="";w<e;){let o=ee[w++];if((o&128)===0)r.push(o);else if((o&224)===192){let n=ee[w++]&63;r.push((o&31)<<6|n)}else if((o&240)===224){let n=ee[w++]&63,s=ee[w++]&63;r.push((o&31)<<12|n<<6|s)}else if((o&248)===240){let n=ee[w++]&63,s=ee[w++]&63,a=ee[w++]&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+=at.apply(String,r),r.length=0)}return r.length>0&&(t+=at.apply(String,r)),t}function Jp(i){let t=new Array(i);for(let e=0;e<i;e++)t[e]=Ye();return t}function Yp(i){if(Bt.mapsAsObjects){let t={};for(let e=0;e<i;e++)t[tu()]=Ye();return t}else{let t=new Map;for(let e=0;e<i;e++)t.set(Ye(),Ye());return t}}var at=String.fromCharCode;function eu(i){let t=w,e=new Array(i);for(let r=0;r<i;r++){let o=ee[w++];if((o&128)>0){w=t;return}e[r]=o}return at.apply(String,e)}function ol(i){if(i<4)if(i<2){if(i===0)return"";{let t=ee[w++];if((t&128)>1){w-=1;return}return at(t)}}else{let t=ee[w++],e=ee[w++];if((t&128)>0||(e&128)>0){w-=2;return}if(i<3)return at(t,e);let r=ee[w++];if((r&128)>0){w-=3;return}return at(t,e,r)}else{let t=ee[w++],e=ee[w++],r=ee[w++],o=ee[w++];if((t&128)>0||(e&128)>0||(r&128)>0||(o&128)>0){w-=4;return}if(i<6){if(i===4)return at(t,e,r,o);{let n=ee[w++];if((n&128)>0){w-=5;return}return at(t,e,r,o,n)}}else if(i<8){let n=ee[w++],s=ee[w++];if((n&128)>0||(s&128)>0){w-=6;return}if(i<7)return at(t,e,r,o,n,s);let a=ee[w++];if((a&128)>0){w-=7;return}return at(t,e,r,o,n,s,a)}else{let n=ee[w++],s=ee[w++],a=ee[w++],l=ee[w++];if((n&128)>0||(s&128)>0||(a&128)>0||(l&128)>0){w-=8;return}if(i<10){if(i===8)return at(t,e,r,o,n,s,a,l);{let c=ee[w++];if((c&128)>0){w-=9;return}return at(t,e,r,o,n,s,a,l,c)}}else if(i<12){let c=ee[w++],h=ee[w++];if((c&128)>0||(h&128)>0){w-=10;return}if(i<11)return at(t,e,r,o,n,s,a,l,c,h);let p=ee[w++];if((p&128)>0){w-=11;return}return at(t,e,r,o,n,s,a,l,c,h,p)}else{let c=ee[w++],h=ee[w++],p=ee[w++],u=ee[w++];if((c&128)>0||(h&128)>0||(p&128)>0||(u&128)>0){w-=12;return}if(i<14){if(i===12)return at(t,e,r,o,n,s,a,l,c,h,p,u);{let m=ee[w++];if((m&128)>0){w-=13;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,m)}}else{let m=ee[w++],f=ee[w++];if((m&128)>0||(f&128)>0){w-=14;return}if(i<15)return at(t,e,r,o,n,s,a,l,c,h,p,u,m,f);let g=ee[w++];if((g&128)>0){w-=15;return}return at(t,e,r,o,n,s,a,l,c,h,p,u,m,f,g)}}}}}function Ka(i){return Bt.copyBuffers?Uint8Array.prototype.slice.call(ee,w,w+=i):ee.subarray(w,w+=i)}function go(i){let t=ee[w++];if(Mt[t])return Mt[t](ee.subarray(w,w+=i));throw new Error("Unknown extension type "+t)}var Kp=new Array(4096);function tu(){let i=ee[w++];if(i>=160&&i<192){if(i=i-160,ur>=w)return Yr.slice(w-Jt,(w+=i)-Jt);if(!(ur==0&&Kr<180))return el(i)}else return w--,Ye();let t=(i<<5^(i>1?Ae.getUint16(w):i>0?ee[w]:0))&4095,e=Kp[t],r=w,o=w+i-3,n,s=0;if(e&&e.bytes==i){for(;r<o;){if(n=Ae.getUint32(r),n!=e[s++]){r=1879048192;break}r+=4}for(o+=3;r<o;)if(n=ee[r++],n!=e[s++]){r=1879048192;break}if(r===o)return w=r,e.string;o-=3,r=w}for(e=[],Kp[t]=e,e.bytes=i;r<o;)n=Ae.getUint32(r),e.push(n),r+=4;for(o+=3;r<o;)n=ee[r++],e.push(n);let a=i<16?ol(i):eu(i);return a!=null?e.string=a:e.string=el(i)}var Xp=(i,t)=>{var e=Ye();let r=i;t!==void 0&&(i=i<32?-((t<<5)+i):(t<<5)+i,e.highByte=t);let o=Oe[i];return o&&o.isShared&&((Oe.restoreStructures||(Oe.restoreStructures=[]))[i]=o),Oe[i]=e,e.read=rl(e,r),e.read()},ru=typeof self=="object"?self:global;Mt[0]=()=>{};Mt[0].noBuffer=!0;Mt[101]=()=>{let i=Ye();return(ru[i[0]]||Error)(i[1])};Mt[105]=i=>{let t=Ae.getUint32(w-4);Ar||(Ar=new Map);let e=ee[w],r;e>=144&&e<160||e==220||e==221?r=[]:r={};let o={target:r};Ar.set(t,o);let n=Ye();return o.used?Object.assign(r,n):(o.target=n,n)};Mt[112]=i=>{let t=Ae.getUint32(w-4),e=Ar.get(t);return e.used=!0,e.target};Mt[115]=()=>new Set(Ye());var il=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(i=>i+"Array");Mt[116]=i=>{let t=i[0],e=il[t];if(!e)throw new Error("Could not find typed array for code "+t);return new ru[e](Uint8Array.prototype.slice.call(i,1).buffer)};Mt[120]=()=>{let i=Ye();return new RegExp(i[0],i[1])};Mt[98]=i=>{let t=(i[0]<<24)+(i[1]<<16)+(i[2]<<8)+i[3],e=w;w+=t-4,jt=[Ye(),Ye()],jt.position0=0,jt.position1=0;let r=w;w=e;try{return Ye()}finally{w=r}};Mt[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 ou(i){let t=Kr,e=w,r=Za,o=Jt,n=ur,s=Yr,a=Qa,l=Ar,c=jt,h=new Uint8Array(ee.slice(0,Kr)),p=Oe,u=Oe.slice(0,Oe.length),m=Bt,f=ei,g=i();return Kr=t,w=e,Za=r,Jt=o,ur=n,Yr=s,Qa=a,Ar=l,jt=c,ee=h,ei=f,Oe=p,Oe.splice(0,Oe.length,...u),Bt=m,Ae=new DataView(ee.buffer,ee.byteOffset,ee.byteLength),g}function Ps(){ee=null,Ar=null,Oe=null}function iu(i){i.unpack?Mt[i.type]=i.unpack:Mt[i.type]=i}var Is=new Array(147);for(let i=0;i<256;i++)Is[i]=+("1e"+Math.floor(45.15-i*.30103));var As=new mr({useRecords:!1}),Pb=As.unpack,Ob=As.unpackMultiple,Ib=As.unpack,Ds={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},Ab=new Float32Array(1),sA=new Uint8Array(Ab.buffer,0,4);var Bs;try{Bs=new TextEncoder}catch{}var Es,sl,_s=typeof Buffer<"u",nl=_s?Buffer.allocUnsafeSlow:Uint8Array,lu=_s?Buffer:Uint8Array,nu=_s?4294967296:2144337920,F,Ke,M=0,dr,fr=null,Db=/[\u0080-\uFFFF]/,Yi=Symbol("record-id"),xo=class extends mr{constructor(t){super(t),this.offset=0;let e,r,o,n,s,a,l=0,c=lu.prototype.utf8Write?function(d,O,x){return F.utf8Write(d,O,x)}:Bs&&Bs.encodeInto?function(d,O){return Bs.encodeInto(d,F.subarray(O)).written}:!1,h=this;t||(t={});let p=t&&t.sequential,u=t.structures||t.saveStructures,m=t.maxSharedStructures;if(m==null&&(m=u?32:0),m>8160)throw new Error("Maximum maxSharedStructure is 8160");let f=t.maxOwnStructures;f==null&&(f=u?32:64),p&&!t.saveStructures&&(this.structures=[]);let g=m>32||f+m>64,v=m+64,y=m+f+64;if(y>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let b=[],A=0,N=0;this.pack=this.encode=function(d,O){if(F||(F=new nl(8192),Ke=new DataView(F.buffer,0,8192),M=0),dr=F.length-10,dr-M<2048?(F=new nl(F.length),Ke=new DataView(F.buffer,0,F.length),dr=F.length-10,M=0):M=M+7&2147483640,r=M,a=h.structuredClone?new Map:null,h.bundleStrings?(fr=["",""],F[M++]=214,F[M++]=98,fr.position=M-r,M+=4):fr=null,o=h.structures,o){o.uninitialized&&(o=h._mergeStructures(h.getStructures()));let x=o.sharedLength||0;if(x>m)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 L=0;L<x;L++){let C=o[L];if(!C)continue;let P,$=o.transitions;for(let Y=0,oe=C.length;Y<oe;Y++){let ae=C[Y];P=$[ae],P||(P=$[ae]=Object.create(null)),$=P}$[Yi]=L+64}l=x}p||(o.nextId=x+64)}n&&(n=!1),s=o||[];try{if(S(d),fr){Ke.setUint32(fr.position+r,M-fr.position-r);let x=fr;fr=null,S(x[0]),S(x[1])}if(h.offset=M,a&&a.idsToInsert){M+=a.idsToInsert.length*6,M>dr&&T(M),h.offset=M;let x=Eb(F.subarray(r,M),a.idsToInsert);return a=null,x}return O&hu?(F.start=r,F.end=M,F):F.subarray(r,M)}finally{if(o){if(N<10&&N++,A>1e4)o.transitions=null,N=0,A=0,b.length>0&&(b=[]);else if(b.length>0&&!p){for(let x=0,L=b.length;x<L;x++)b[x][Yi]=0;b=[]}if(n&&h.saveStructures){let x=o.sharedLength||m;o.length>x&&(o=o.slice(0,x));let L=F.subarray(r,M);return h.saveStructures(o,l)===!1?(h._mergeStructures(h.getStructures()),h.pack(d)):(l=x,L)}}O&jb&&(M=r)}};let S=d=>{M>dr&&(F=T(M));var O=typeof d,x;if(O==="string"){let L=d.length;if(fr&&L>=8&&L<4096){let $=Db.test(d);fr[$?0:1]+=d,F[M++]=193,S($?-L:L);return}let C;L<32?C=1:L<256?C=2:L<65536?C=3:C=5;let P=L*3;if(M+P>dr&&(F=T(M+P)),L<64||!c){let $,Y,oe,ae=M+C;for($=0;$<L;$++)Y=d.charCodeAt($),Y<128?F[ae++]=Y:Y<2048?(F[ae++]=Y>>6|192,F[ae++]=Y&63|128):(Y&64512)===55296&&((oe=d.charCodeAt($+1))&64512)===56320?(Y=65536+((Y&1023)<<10)+(oe&1023),$++,F[ae++]=Y>>18|240,F[ae++]=Y>>12&63|128,F[ae++]=Y>>6&63|128,F[ae++]=Y&63|128):(F[ae++]=Y>>12|224,F[ae++]=Y>>6&63|128,F[ae++]=Y&63|128);x=ae-M-C}else x=c(d,M+C,P);x<32?F[M++]=160|x:x<256?(C<2&&F.copyWithin(M+2,M+1,M+1+x),F[M++]=217,F[M++]=x):x<65536?(C<3&&F.copyWithin(M+3,M+2,M+2+x),F[M++]=218,F[M++]=x>>8,F[M++]=x&255):(C<5&&F.copyWithin(M+5,M+3,M+3+x),F[M++]=219,Ke.setUint32(M,x),M+=4),M+=x}else if(O==="number")if(d>>>0===d)d<64?F[M++]=d:d<256?(F[M++]=204,F[M++]=d):d<65536?(F[M++]=205,F[M++]=d>>8,F[M++]=d&255):(F[M++]=206,Ke.setUint32(M,d),M+=4);else if(d>>0===d)d>=-32?F[M++]=256+d:d>=-128?(F[M++]=208,F[M++]=d+256):d>=-32768?(F[M++]=209,Ke.setInt16(M,d),M+=2):(F[M++]=210,Ke.setInt32(M,d),M+=4);else{let L;if((L=this.useFloat32)>0&&d<4294967296&&d>=-2147483648){F[M++]=202,Ke.setFloat32(M,d);let C;if(L<4||(C=d*Is[(F[M]&127)<<1|F[M+1]>>7])>>0===C){M+=4;return}else M--}F[M++]=203,Ke.setFloat64(M,d),M+=8}else if(O==="object")if(!d)F[M++]=192;else{if(a){let C=a.get(d);if(C){if(!C.id){let P=a.idsToInsert||(a.idsToInsert=[]);C.id=P.push(C)}F[M++]=214,F[M++]=112,Ke.setUint32(M,C.id),M+=4;return}else a.set(d,{offset:M-r})}let L=d.constructor;if(L===Object)k(d,!0);else if(L===Array){x=d.length,x<16?F[M++]=144|x:x<65536?(F[M++]=220,F[M++]=x>>8,F[M++]=x&255):(F[M++]=221,Ke.setUint32(M,x),M+=4);for(let C=0;C<x;C++)S(d[C])}else if(L===Map){x=d.size,x<16?F[M++]=128|x:x<65536?(F[M++]=222,F[M++]=x>>8,F[M++]=x&255):(F[M++]=223,Ke.setUint32(M,x),M+=4);for(let[C,P]of d)S(C),S(P)}else{for(let C=0,P=Es.length;C<P;C++){let $=sl[C];if(d instanceof $){let Y=Es[C];if(Y.write){Y.type&&(F[M++]=212,F[M++]=Y.type,F[M++]=0),S(Y.write.call(this,d));return}let oe=F,ae=Ke,ne=M;F=null;let ge;try{ge=Y.pack.call(this,d,j=>(F=oe,oe=null,M+=j,M>dr&&T(M),{target:F,targetView:Ke,position:M-j}),S)}finally{oe&&(F=oe,Ke=ae,M=ne,dr=F.length-10)}ge&&(ge.length+M>dr&&T(ge.length+M),M=Bb(ge,F,M,Y.type));return}}k(d,!d.hasOwnProperty)}}else if(O==="boolean")F[M++]=d?195:194;else if(O==="bigint"){if(d<BigInt(1)<<BigInt(63)&&d>=-(BigInt(1)<<BigInt(63)))F[M++]=211,Ke.setBigInt64(M,d);else if(d<BigInt(1)<<BigInt(64)&&d>0)F[M++]=207,Ke.setBigUint64(M,d);else if(this.largeBigIntToFloat)F[M++]=203,Ke.setFloat64(M,Number(d));else throw new RangeError(d+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");M+=8}else if(O==="undefined")this.encodeUndefinedAsNil?F[M++]=192:(F[M++]=212,F[M++]=0,F[M++]=0);else if(O==="function")S(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+O)},k=this.useRecords===!1?this.variableMapSize?d=>{let O=Object.keys(d),x=O.length;x<16?F[M++]=128|x:x<65536?(F[M++]=222,F[M++]=x>>8,F[M++]=x&255):(F[M++]=223,Ke.setUint32(M,x),M+=4);let L;for(let C=0;C<x;C++)S(L=O[C]),S(d[L])}:(d,O)=>{F[M++]=222;let x=M-r;M+=2;let L=0;for(let C in d)(O||d.hasOwnProperty(C))&&(S(C),S(d[C]),L++);F[x+++r]=L>>8,F[x+r]=L&255}:d=>{let O=Object.keys(d),x,L=s.transitions||(s.transitions=Object.create(null)),C=0;for(let $=0,Y=O.length;$<Y;$++){let oe=O[$];x=L[oe],x||(x=L[oe]=Object.create(null),C++),L=x}let P=L[Yi];if(P)P>=96&&g?(F[M++]=((P-=96)&31)+96,F[M++]=P>>5):F[M++]=P;else{P=s.nextId,P||(P=64),P<v&&this.shouldShareStructure&&!this.shouldShareStructure(O)?(P=s.nextOwnId,P<y||(P=v),s.nextOwnId=P+1):(P>=y&&(P=v),s.nextId=P+1);let $=O.highByte=P>=96&&g?P-96>>5:-1;L[Yi]=P,s[P-64]=O,P<v?(O.isShared=!0,s.sharedLength=P-63,n=!0,$>=0?(F[M++]=(P&31)+96,F[M++]=$):F[M++]=P):($>=0?(F[M++]=213,F[M++]=114,F[M++]=(P&31)+96,F[M++]=$):(F[M++]=212,F[M++]=114,F[M++]=P),C&&(A+=N*C),b.length>=f&&(b.shift()[Yi]=0),b.push(L),S(O))}for(let $=0,Y=O.length;$<Y;$++)S(d[O[$]])},T=d=>{let O;if(d>16777216){if(d-r>nu)throw new Error("Packed buffer would be larger than maximum buffer size");O=Math.min(nu,Math.round(Math.max((d-r)*(d>67108864?1.25:2),4194304)/4096)*4096)}else O=(Math.max(d-r<<2,F.length-1)>>12)+1<<12;let x=new nl(O);return Ke=new DataView(x.buffer,0,O),F.copy?F.copy(x,0,r,d):x.set(F.slice(r,d)),M-=r,r=0,dr=x.length-10,F=x}}useBuffer(t){F=t,Ke=new DataView(F.buffer,F.byteOffset,F.byteLength),M=0}};sl=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,Ji];Es=[{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?su(i,16,t):au(_s?Buffer.from(i):new Uint8Array(i),t)}},{pack(i,t){let e=i.constructor;e!==lu&&this.structuredClone?su(i,il.indexOf(e.name),t):au(i,t)}},{pack(i,t){let{target:e,position:r}=t(1);e[r]=193}}];function su(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 au(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 Bb(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 Eb(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 bo(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)");sl.unshift(i.Class),Es.unshift(i)}iu(i)}var cu=new xo({useRecords:!1}),_b=cu.pack,Gb=cu.pack;var{NEVER:zb,ALWAYS:Rb,DECIMAL_ROUND:Fb,DECIMAL_FIT:Vb}=Ds,hu=512,jb=1024;var pu=new xo({structuredClone:!0});bo({Class:Wt.prototype.constructor,type:1,write(i){return I({},i)},read(i){return Object.setPrototypeOf(i,Wt.prototype),i}});bo({Class:Je.prototype.constructor,type:2,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,Je.prototype),i}});bo({Class:$t.prototype.constructor,type:3,write(i){return[...i]},read(i){return Object.setPrototypeOf(i,$t.prototype),i}});bo({Class:Wi.prototype.constructor,type:4,write(i){return i.id},read(i){return new Wi(i)}});bo({Class:$i.prototype.constructor,type:5,write(i){return i.data},read(i){return new $i(i)}});function Ub(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}var Gs;(r=>{function i(o){return pu.pack(o)}r.serialize=i;function t(o){return pu.unpack(o)}r.deserialize=t;function e(o){return Ub(i(o)).toString()}r.checksum=e})(Gs||(Gs={}));var zs;(e=>{e.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function t(r){return e.all.includes(r)}e.is=t})(zs||(zs={}));var Rs;(e=>{function i(r){return t(r)}e.defaultData=i;function t(r){if(r==="PointLight")return{type:r,color:hr.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,depth:1e5,helper:!0};if(r==="SpotLight")return{type:r,color:hr.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:hr.white,intensity:1,shadows:!0,size:1e3,depth:1e5,shadowResolution:1024,helper:!0,shadowRadius:1};throw new Error("not implemented")}})(Rs||(Rs={}));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 Fs;(t=>t.defaultData=H(I(I({},ll.defaultData),al.defaultData),{cloner:null,booleanExclude:null}))(Fs||(Fs={}));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||{}),Vs;(t=>t.defaultData={width:100,height:100,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.5,letterSpacing:1,text:"",textTransform:1,color:hr.fromHexAndA(6974058,1),alpha:1,font:"roboto_regular"})(Vs||(Vs={}));var ti;(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:Vt.fromHex(4737101)};case"depth":return{type:"depth",alpha:1,visible:!0,mode:0,gradientType:1,smooth:!1,isVector:!0,isWorldSpace:!1,origin:[0,0,0],direction:[1,0,0],colors:[[1,1,1,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,near:50,far:200};case"normal":return{type:"normal",alpha:1,visible:!0,mode:0,cnormal:[1,1,1]};case"gradient":return{type:"gradient",alpha:1,visible:!0,mode:0,gradientType:0,smooth:!1,colors:[[0,0,0,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]],steps:[0,1,1,1,1,1,1,1,1,1],num:2,angle:0,offset:[0,0],morph:[0,0]};case"noise":return{type:"noise",alpha:1,visible:!0,mode:0,size:[100,100,100],noiseType:0,scale:1,move:1,colorA:H(I({},Vt.fromHex(6710886)),{a:1}),colorB:H(I({},Vt.fromHex(6710886)),{a:1}),colorC:H(I({},Vt.fromHex(16777215)),{a:1}),colorD:H(I({},Vt.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:hr.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{type:"rainbow",alpha:1,visible:!0,mode:0,filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"matcap":return{type:"matcap",alpha:1,visible:!0,mode:0,texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{type:"transmission",alpha:1,visible:!0,mode:0,thickness:10,ior:1.5,roughness:1};case"displace":return{type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,visible:!0}}}})(ti||(ti={}));var vo;(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(m=>c+=`${m}`):typeof u=="object"?Object.values(u).forEach(m=>{typeof m=="number"?c+=`${m.toFixed(4)}`:c+=`${m}`}):c+=`${u}`})}),c}a.getHash=t;function e(l){let c=0;for(let h of l.layers)"alpha"in h.data&&h.data.type!=="light"&&h.data.type!=="fresnel"&&(c+=(1-c)*h.data.alpha);return c<1}a.isTransparent=e;function r(){return{layers:new Je}}a.defaultEmptyData=r;function o(l="layer1",c="layer2"){return n("phong",l,c)}a.defaultData=o;function n(l,c="layer1",h="layer2"){let p=new Je;return p.push({fi:0,data:ti.defaultData("light",l),id:c}),p.push({fi:1,data:ti.defaultData("color"),id:h}),{layers:p}}a.defaultTwoLayerData=n;function s(l,c="basic",h="layer1",p="layer2"){let u=ti.defaultData("texture");Object.assign(u.texture,{image:l});let m=new Je;return m.push({fi:0,data:u,id:h}),m.push({fi:1,data:ti.defaultData("light",c),id:p}),{layers:m}}a.defaultTwoLayerTextureData=s})(vo||(vo={}));var ri;(t=>{function i(){return{points:new Je,roundness:0,shapeHoles:[],isClosed:!1}}t.defaultData=i})(ri||(ri={}));var js;(t=>{function i(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}t.is2DParametricMesh=i})(js||(js={}));var Ki;(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:ri.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})(Ki||(Ki={}));var Xi;(o=>{o.identity=H(I({},xs.identity),{hiddenMatrix:Jr.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==null?void 0:s.position)||n.position,rotation:(s==null?void 0:s.rotation)||n.rotation,scale:(s==null?void 0:s.scale)||n.scale,hiddenMatrix:(s==null?void 0:s.hiddenMatrix)||n.hiddenMatrix}}o.merge=e;function r(n,s){return{position:Ko.isEqual(n.position,s.position)?null:s.position,rotation:Ko.isEqual(n.rotation,s.rotation)?null:s.rotation,scale:Ko.isEqual(n.scale,s.scale)?null:s.scale,hiddenMatrix:Jr.isEqual(n.hiddenMatrix,s.hiddenMatrix)?null:s.hiddenMatrix}}o.diff=r})(Xi||(Xi={}));var Dr;(t=>t.defaultData=I({states:new Je,events:new Je,visible:!0,raycastLock:!1},Xi.identity))(Dr||(Dr={}));var uu;(t=>t.defaultData=I({type:"Empty"},Dr.defaultData))(uu||(uu={}));var Us;(t=>t.defaultData=I(I({type:"Mesh"},Dr.defaultData),Fs.defaultData))(Us||(Us={}));var mu;(t=>t.defaultData=I(I({type:"TextFrame"},Dr.defaultData),Vs.defaultData))(mu||(mu={}));var ks;(t=>t.defaultData=I(I(I({},Dr.defaultData),Xi.identity),yo.defaultData))(ks||(ks={}));var du;(t=>{function i(e){return I(I({},Dr.defaultData),Rs.defaultData(e))}t.defaultData=i})(du||(du={}));var fu;(r=>(r.defaultCamera=I({position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:Jr.identity,name:"Play Camera",visible:!0,raycastLock:!1,states:new Je,events:new Je},yo.defaultData),r.defaultMeshObject=H(I(I({name:"Rectangle"},Dr.defaultData),Us.defaultData),{geometry:Ki.defaultData("RectangleGeometry"),material:vo.defaultTwoLayerData("basic","layer1","layer2")}),r.defaultBooleanObject=H(I(I({name:"Boolean"},Dr.defaultData),Us.defaultData),{geometry:Ki.defaultData("BooleanGeometry"),material:vo.defaultTwoLayerData("phong","layer1","layer2")})))(fu||(fu={}));var yu;(e=>{function i(r,o){if(o===void 0)return r;let n=I({},r);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&&fo(c,l)}}).data),n.materials&&o.materials&&(n.materials=Ja(n.materials,s=>{var a,l;for(let c=0;c<n.materials.length;c++){let h=o.materials[c];if(typeof h!="string")for(let[p,u]of Object.entries(h.layers)){let m=(l=(a=s[c])==null?void 0:a.layers)==null?void 0:l.data(p);m&&fo(m,u)}}}).data),n}e.patchMaterialState=i;function t(r,o){var s,a;if(o===void 0)return r;let n=I({},r);if(Object.assign(n,Xi.merge(n,o)),Yo.is(r.type)){n.orthographic=I({},n.orthographic),n.perspective=I({},n.perspective);let l=o;((s=l.orthographic)==null?void 0:s.zoom)!==void 0&&(n.orthographic.zoom=l.orthographic.zoom),((a=l.perspective)==null?void 0:a.zoom)!==void 0&&(n.perspective.zoom=l.perspective.zoom),l.isUpVectorFlipped!==void 0&&(n.isUpVectorFlipped=l.isUpVectorFlipped),l.targetOffset!==void 0&&(n.targetOffset=l.targetOffset)}else if(r.type==="Mesh")n.geometry=I({},n.geometry),Object.assign(n.geometry,o.geometry),n=i(n,o);else if(zs.is(r.type)){let l=o;n.intensity!==void 0&&(n.intensity=l.intensity),l.color!==void 0&&(typeof l.color=="string"?n.color=l.color:n.color=Vt.clone(l.color))}return n}e.patch=t})(yu||(yu={}));import{ConeBufferGeometry as qb}from"three";import{BufferGeometry as kb,CylinderBufferGeometry as Hb,Float32BufferAttribute as ul,Vector2 as rr,Vector3 as Hs}from"three";var xu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var s,a,l,c,h;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:0,cornerSegments:8,hollow:0},i.parameters),r=e.width/2,o=(a=e.radiusTop)!=null?a:r,n=(l=e.radiusBottom)!=null?l: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((c=e.height)!=null?c:e.width),depth:Math.abs((h=e.depth)!=null?h: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:m}=i.parameters,f;return p||m?f=new Qi(c,h,r,o,n,s,a,l*Math.PI/180,p,p,u,m):f=new Hb(c,h,r,o,n,s,a,l*Math.PI/180),f.scale(1,1,e/t),Object.assign(f,{userData:H(I({},i),{type:"CylinderGeometry"})})}};function Xr(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function gu(i){return new rr(i.y,-i.x)}var Qi=class extends kb{constructor(t,e,r,o,n,s,a,l,c,h,p,u,m=!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 f=[],g=[],v=[],y=[],b=0,A=r/2,N=new Hs,S=new Hs;m&&t==0&&(t=c),m&&e==0&&(e=h);let k=new rr(t,A),T=new rr(e,-A),d=null,O=null,x=null,L=null,C=k.clone().sub(T),P=0,$=0,Y=0;u>0&&(P=Math.min(t,e)*(1-u),$=t-P,Y=e-P);let oe=k.clone();oe.x-=P;let ae=Math.PI-C.angle(),ne=C.angle(),ge=Math.tan(ne/2),j=Math.tan(ae/2),R=ge+j,B=u?R:j,E=u?R:ge;if(c=Math.min(c,(t-$)/B,C.length()/R),h=Math.min(h,(e-Y)/E,C.length()/R),c>0){let V=c/ge;d=k.clone().sub(new rr(V,c)),u&&(x=d.clone(),x.x-=P-R*c),k.sub(C.clone().setLength(V))}if(h>0){let V=h/j;O=T.clone().sub(new rr(V,-h)),T.add(C.clone().setLength(V)),u&&(L=O.clone(),L.x-=P-R*h,oe.sub(C.clone().setLength(V)))}C=k.clone().sub(T);let D=C.length()<.5,_=[];for(let V=0;V<=o;V++){let z=[],U=V/o,se=U*l+a,q=new rr(Math.sin(se),Math.cos(se));L&&O?(W(z,U,q,ae,h,L,-1,!0),W(z,U,q,ne,h,O,-1,!1)):O?(K(z,q,O.x,0,-1),W(z,U,q,ne,h,O,-1,!1)):s||K(z,q,e,Y,-1);let J=gu(C).normalize();if(Xr(J,q,N),!D)for(let X=0;X<=n;X++){let Q=X/n,Z=C.clone().multiplyScalar(Q).add(T);Xr(Z,q,S),g.push(S.x,S.y,S.z),v.push(N.x,N.y,N.z),y.push(U,.5+S.y/r),z.push(b++)}if(x&&d?(W(z,U,q,ae,c,d,1,!1),W(z,U,q,ne,c,x,1,!0)):d?(W(z,U,q,ae,c,d,1,!1),K(z,q,d.x,0,1)):s||K(z,q,t,$,1),u&&!D){let X=gu(C).multiplyScalar(-1).normalize();Xr(X,q,N);for(let Q=0;Q<=n;Q++){let Z=Q/n,le=C.clone().multiplyScalar(-Z).add(oe);Xr(le,q,S),g.push(S.x,S.y,S.z),v.push(N.x,N.y,N.z),y.push(U,.5+S.y/r),z.push(b++)}}u&&!s&&z.push(z[0]),_.push(z)}for(let V=0;V<_.length-1;V++)for(let z=0;z<_[0].length-1;z++){if(s&&u&&z==n)continue;let U=_[V][z],se=_[V+1][z],q=_[V+1][z+1],J=_[V][z+1],X=g[q*3+0],Q=g[q*3+2];f.push(U,se,J),(X!=0||Q!=0)&&f.push(se,q,J)}l<Math.PI*2&&(G(-1,_[0],a),G(1,_[_.length-1],a+l)),this.setIndex(f),this.setAttribute("position",new ul(g,3)),this.setAttribute("normal",new ul(v,3)),this.setAttribute("uv",new ul(y,2));function W(V,z,U,se,q,J,X,Q){for(let Z=0;Z<p+1;Z++){let le=Z/p,ie=X<0?le:1-le;Q&&(ie-=1),ie*=se;let pe=new rr(Math.sin(ie),Math.cos(ie)*X),Ge=pe.clone().multiplyScalar(q).add(J);Xr(Ge,U,S),g.push(S.x,S.y,S.z),Xr(pe,U,N),v.push(N.x,N.y,N.z),y.push(z,.5+S.y/r),V.push(b++)}}function K(V,z,U,se,q){let J=new Hs,X=new rr,Q=[U,se];q<0&&Q.reverse();for(let Z of Q)X.set(Z,A*q),Xr(X,z,J),g.push(J.x,J.y,J.z),v.push(0,q,0),y.push(.5,.5),V.push(b++)}function G(V,z,U){let se=new rr(Math.sin(U),Math.cos(U)),q=new rr(-Math.cos(U),Math.sin(U)),J=new Hs,X=V<0?(le,ie,pe)=>f.push(le,ie,pe):(le,ie,pe)=>f.push(le,pe,ie),Q=new rr((t+e+$+Y)/4,0);Xr(Q,se,J),g.push(J.x,J.y,J.z),v.push(q.x,0,q.y),y.push(.5,.5);let Z=b++;for(let le of z){let ie=g.slice(le*3,le*3+3);g.push(...ie),v.push(q.x,0,q.y);let pe=y.slice(le*2,le*2+2);y.push(...pe),b++}for(let le=Z+1;le<b-1;le++)X(Z,le,le+1);X(Z,b-1,Z+1)}}};var bu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,radialSegments:32,heightSegments:8,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadiusTop:0,cornerRadiusBottom:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Qi(0,t/2,r,o,n,s,a,l*Math.PI/180,c,h,p,0,!0):u=new qb(t/2,r,o,n,s),u.scale(1,1,e/t),Object.assign(u,{userData:H(I({},i),{type:"ConeGeometry"})})}};import{BoxBufferGeometry as Wb,BufferGeometry as $b,Float32BufferAttribute as ml,Vector3 as Zi}from"three";var vu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:0,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Wb(t,e,r,o,n,s):c=new fl(t,e,r,o,n,s,a,l),Object.assign(c,{userData:H(I({},i),{type:"CubeGeometry"})})}},dl=Math.PI/2,fl=class extends $b{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=[],m=[],f=0,g=0;v("z","y","x",-1,-1,r,e,t,s,n,0),v("z","y","x",1,-1,r,e,-t,s,n,1),v("x","z","y",1,1,t,r,e,o,s,2),v("x","z","y",1,-1,t,r,-e,o,s,3),v("x","y","z",1,-1,t,e,r,o,n,4),v("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),b(1,1,1),b(-1,1,1),b(1,-1,1),b(-1,-1,1),b(1,1,-1),b(-1,1,-1),b(1,-1,-1),b(-1,-1,-1)),this.setIndex(h),this.setAttribute("position",new ml(p,3)),this.setAttribute("normal",new ml(u,3)),this.setAttribute("uv",new ml(m,2));function v(A,N,S,k,T,d,O,x,L,C,P){let $=(d-2*a)/L,Y=(O-2*a)/C,oe=d/2-a,ae=O/2-a,ne=x/2,ge=L+1,j=C+1,R=0,B=0,E=new Zi;for(let D=0;D<j;D++){let _=D*Y-ae;for(let W=0;W<ge;W++){let K=W*$-oe;E[A]=K*k,E[N]=_*T,E[S]=ne,p.push(E.x,E.y,E.z),E[A]=0,E[N]=0,E[S]=x>0?1:-1,u.push(E.x,E.y,E.z),m.push(W/L),m.push(1-D/C),R+=1}}for(let D=0;D<C;D++)for(let _=0;_<L;_++){let W=f+_+ge*D,K=f+_+ge*(D+1),G=f+(_+1)+ge*(D+1),V=f+(_+1)+ge*D;h.push(W,K,V),h.push(K,G,V),B+=6}c.addGroup(g,B,P),g+=B,f+=R}function y(A,N,S,k,T,d,O,x,L,C,P){let $=(O-2*a)/C,Y=O/2-a,oe=x/2-a,ae=L/2,ne=C+1,ge=0,j=0,R=new Zi,B=new Zi;for(let E=0;E<l+1;E++){let D=E/l*dl,_=Math.sin(D)*a,W=(1-Math.cos(D))*a,K=Math.sin(D),G=Math.cos(D);R[N]=(oe+_)*T,R[S]=(ae-W)*d,B[A]=0,B[N]=K*Math.sign(R[N]),B[S]=G*Math.sign(R[S]);for(let V=0;V<ne;V++){let z=V*$-Y;R[A]=z*k,p.push(R.x,R.y,R.z),u.push(B.x,B.y,B.z),m.push(V/C),m.push(0),ge+=1}}for(let E=0;E<l;E++)for(let D=0;D<C;D++){let _=f+D+ne*E,W=f+D+ne*(E+1),K=f+(D+1)+ne*(E+1),G=f+(D+1)+ne*E;h.push(_,W,G),h.push(W,K,G),j+=6}c.addGroup(g,j,P),g+=j,f+=ge}function b(A,N,S){let k=new Zi,T=new Zi(t/2,e/2,r/2);T.subScalar(a);let d=[],O=A*N*S>0?(L,C,P)=>h.push(L,C,P):(L,C,P)=>h.push(L,P,C);for(let L=0;L<=l;L++){let C=[],P=dl*(1-L/l),$=Math.cos(P),Y=Math.sin(P),oe=0;for(let ae=0;ae<=L;ae++){let ne=Math.cos(oe),ge=Math.sin(oe);k.x=$*ne,k.y=Y,k.z=$*ge;let j=T.clone().addScaledVector(k,a);p.push(A*j.x,N*j.y,S*j.z),u.push(A*k.x,N*k.y,S*k.z),m.push(0,0),C.push(f++),oe+=dl/L}d.push(C)}let x=d.length-1;for(let L=0;L<x;L++){let C=d[L],P=d[L+1],$=C.length-1;O(C[0],P[1],P[0]);for(let Y=1;Y<=$;Y++)O(C[Y-1],C[Y],P[Y]),O(C[Y],P[Y+1],P[Y])}}}};import{BufferGeometry as Jb,Float32BufferAttribute as yl,Triangle as Yb,Vector3 as Br,Vector2 as gl}from"three";var Qr=class extends Jb{constructor(t=[],e=[],r="",o=1,n=.2,s=4){super(),this.type="PolyhedronGeometryRound";let a=[],l=[],c=[];h(),p(),this.setAttribute("position",new yl(a,3)),this.setAttribute("normal",new yl(c,3)),this.setAttribute("uv",new yl(l,2));return;function h(){var ge;n=Math.min(1-1e-5,n),n==0&&(s=0);let m={IcosahedronGeometry:5,DodecahedronGeometry:3,HexahedronGeometry:3,OctahedronGeometry:4,TetrahedronGeometry:3}[r],f=new Br,g=f.clone(),v=new Yb,y=n*o,b=o-y,A=s+1,N=new Br,S=(j,R)=>N.subVectors(j,R).normalize(),k=(j,R)=>Array(j).fill(void 0).map(R),T=k(t.length/3,(j,R)=>new Br().fromArray(t,R*3).setLength(o)),d=[],O=1e6;for(let j=0;j<T.length;j++){let R=T[j],B=[],E,D,_,W=1e10,K=-1;for(;(K=e.indexOf(j,K+1))!=-1;){let U=K-K%3;E=e[U+(K+1)%3],D=e[U+(K+2)%3],_=R.distanceToSquared(T[E]),W=Math.min(W,_),B.push([E,D,_])}W+=1e-6;let G=[],V=0,z=B.length;for(let U=0;U<z;U++){[E,D,_]=B[V];let se=((ge=d[E])==null?void 0:ge.includes(j))==!0;_<=W&&G.push(E+ +se*O),V=B.findIndex(q=>q[0]==D)}d.push(G)}let x=[];{let j=0,R=0,B,E,D=m==3;for(let _=0;_<=s;_++){B=_*(_+1)/2,E=(_+1)*(_+2)/2;for(let W=0;W<s-_;W++)[j,R]=[B+W+_+2,E+W+_+3],x.push(B,E,...D?[R,B]:[j,E],R,j),[B,E]=[j,R];x.push(B,E,B+s+2)}}let L=f.clone(),C=f.clone(),P=f.clone(),$=f.clone(),Y=f.clone(),oe=[],ae=k(T.length,()=>k(m,()=>f.clone()));for(let j=0;j<T.length;j++){f.copy(T[j]).normalize(),L.copy(f).multiplyScalar(b);let R=d[j];for(let G=0;G<R.length;G++){let V=R[G],z=R[(G+1)%m];v.setFromPointsAndIndices(T,j,V%O,z%O),v.b.sub(v.a).setLength(1e10).add(v.a),v.c.sub(v.a).setLength(1e10).add(v.a),v.closestPointToPoint(L,ae[j][G])}let B=[],E=[],D=[],_=new Br;s==0&&[...ae[j]].reduce((G,V)=>G.add(V),_).multiplyScalar(1/m);for(let G=0;G<m;G++){let V=[],z=(G-1+m)%m,U=ae[j][z],se=ae[j][G];f.copy(U).sub(L),g.copy(se).sub(L);let q=L.angleTo(f),J=f.angleTo(g),X=Math.cos(q)*y;s==0?C.copy(_):C.copy(L).setLength(b+X),E.push(X);let Q=[C,U,se];for(let Z=0;Z<2;Z++){let le=Q[Z],ie=Q[Z+1];$.subVectors(le,L),Y.subVectors(ie,L),P.crossVectors($,Y).normalize();for(let pe=0;pe<A;pe++){let Ge=[q,J][Z]*pe/A;f.copy($).applyAxisAngle(P,Ge).add(L),B.push(f.clone()),Z&&(S(f,L),V.push([pe==0?le:f.clone(),N.clone()]))}Z&&(S(ie,L),V.push([ie,N.clone()]))}D.push(V)}oe.push(D);let W=2*A,K=2;for(let G=0;G<m;G++){let V=W*G,z=W*((G+1)%m),U=[B[V]];for(let q=1;q<A;q++){$=B[V+q],Y=B[z+q],U.push($);for(let J=1,X=q-K+1;J<=X;J++)f.lerpVectors($,Y,J/(X+1)),f.sub(L).setLength(E[G]).add(L),U.push(f.clone());U.push(Y)}for(let q=0;q<A;q++)U.push(B[q+A+V]);U.push(B[z+A]);let se=x.map(q=>U[q]);a.push(...se.map(q=>[q.x,q.y,q.z]).flat()),c.push(...se.map(q=>(S(q,L),[N.x,N.y,N.z])).flat())}}let ne=[];for(let j=0;j<d.length;j++)for(let R=0;R<m;R++){let B=d[j][R];if(B<O){let E=d[B].findIndex(W=>W%O==j),D=oe[j][R],_=oe[B][E];for(let W=0;W<A;W++){let K=D[W],G=_[A-W],V=D[W+1],z=_[A-(W+1)];[K,G,V,V,G,z].forEach(U=>{a.push(U[0].x,U[0].y,U[0].z),c.push(U[1].x,U[1].y,U[1].z)})}ne.push(D[0][0],_[A][0],D[A][0],_[0][0])}}for(;ne.length;){let j,R,B,E;[j,R]=ne.splice(0,2);let D=[j];for(;j!=R;)D.push(R),B=ne.indexOf(R),E=B%2,R=ne.splice(B-E,2)[1-E];N.subVectors(D[0],D[1]).cross(f.subVectors(D[0],D[2])).normalize();let _=N.dot(D[0])<0;_&&N.negate();for(let W=1;W<=D.length-2;W++)[D[W+ +_],D[W+1-+_],D[0]].forEach(K=>{a.push(K.x,K.y,K.z),c.push(N.x,N.y,N.z)})}}function p(){let u=new Br;for(let T=0;T<a.length;T+=3){u.x=a[T+0],u.y=a[T+1],u.z=a[T+2];let d=S(u)/2/Math.PI+.5,O=k(u)/Math.PI+.5;l.push(d,1-O)}let m=new Br,f=new Br,g=new Br,v=new Br,y=new gl,b=new gl,A=new gl,N=(T,d,O,x)=>{x<0&&T.x===1&&(l[d]=T.x-1),O.x===0&&O.z===0&&(l[d]=x/2/Math.PI+.5)};for(let T=0,d=0;T<a.length;T+=9,d+=6){m.set(a[T+0],a[T+1],a[T+2]),f.set(a[T+3],a[T+4],a[T+5]),g.set(a[T+6],a[T+7],a[T+8]),y.set(l[d+0],l[d+1]),b.set(l[d+2],l[d+3]),A.set(l[d+4],l[d+5]),v.copy(m).add(f).add(g).divideScalar(3);let O=S(v);N(y,d+0,m,O),N(b,d+2,f,O),N(A,d+4,g,O)}for(let T=0;T<l.length;T+=6){let d=l[T+0],O=l[T+2],x=l[T+4],L=Math.max(d,O,x),C=Math.min(d,O,x);L>.9&&C<.1&&(d<.2&&(l[T+0]+=1),O<.2&&(l[T+2]+=1),x<.2&&(l[T+4]+=1))}function S(T){return Math.atan2(T.z,-T.x)}function k(T){return Math.atan2(-T.y,Math.sqrt(T.x*T.x+T.z*T.z))}}}static fromJSON(t){return new Qr(t.vertices,t.indices,t.radius,t.corner,t.cornerSides)}};import{DodecahedronBufferGeometry as Kb}from"three";var Su=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 en(t*.5,n,s):new Kb(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(I({},i),{type:"DodecahedronGeometry"})})}},en=class extends Qr{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 en(t.radius,t.corner,t.cornerSides)}};import{EventDispatcher as av,Plane as lv,Shape as Gu,Vector2 as Er,Vector3 as cv,MathUtils as Cl,LineCurve as Tl,QuadraticBezierCurve as zu,CubicBezierCurve as Js}from"three";import{CubicBezierCurve as qs,EllipseCurve as Xb,LineCurve as Ws,LineCurve3 as Qb,MathUtils as Zb,QuadraticBezierCurve as bl,SplineCurve as ev,Vector2 as St,Vector3 as Cu}from"three";var tn=1e-12,oi=class{constructor(t){this.position=new St;this.startPosition=new St;this.uuid=Zb.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 oi(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},ii=class extends oi{constructor(e){super(e.position);this.parent=e}copy(e){return super.copy(e),this}clone(){return new ii(this.parent).copy(this)}},or=class extends oi{constructor(e,r){super(r);this.controls=[];this.roundness=0;this.areControlsDirectionsMirrored=!0;this.uuid=e,this.controls.push(new ii(this),new ii(this))}static create(e,r){let o=new or(e,new St(...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 or(this.uuid,this.position).copy(this)}toJSON(){return super.toJSON().concat(this.controls[0].toJSON(),this.controls[1].toJSON(),[this.roundness])}computeTangents(){var o,n;let e=(o=this.curveBefore)==null?void 0:o.getTangentAt(1),r=(n=this.curveAfter)==null?void 0:n.getTangentAt(0);return[e,r]}computeNormals(e=new St,r=new St){let[o,n]=this.computeTangents();return o&&n&&(wu(o,e),wu(n,r)),[e,r]}computeTangent(e=new St){let[r,o]=this.computeTangents();return r&&o&&e.copy(r).add(o).normalize(),e}computeNormal(e=new St){let[r,o]=this.computeNormals();return e.copy(r).add(o).normalize(),e}};function wu(i,t=new St){let e=i.length();return t.set(-i.y/e,i.x/e)}var vl=i=>i,ni=new St,$s=new St,tv=new St,rv=new St,ov=new St,iv=new St,Tu=new Cu,Nu=new Cu;function Mu(i){let t=new St;t.addVectors(i.v0,ni.subVectors(i.v1,i.v0).multiplyScalar(2/3));let e=new St;return e.addVectors(i.v2,$s.subVectors(i.v1,i.v2).multiplyScalar(2/3)),new qs(i.v0,t,e,i.v2)}function rn(i,t,e=Number.EPSILON){return Math.abs(i-t)<e}function nv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function sv(i,t,e=Number.EPSILON){return i.distanceTo(t)<e}function Sl(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 Pu(i,t,e){return Lu(i,t)&&Lu(t,e)&&xl(i.position,t.position,e.position)}function xl(i,t,e){return ni.copy(t).sub(i).cross($s.copy(e).sub(i))===0}function Ou(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 Iu(i,t,e){let r=i.distanceTo(e),o=t.distanceTo(e);return r<o?t:i}function Au(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 Sl(t,i,e)>Math.PI&&(h*=-1),rn(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 wl(i,t){return i.position.equals(i.controls[1].position)&&t.position.equals(t.controls[0].position)}function Lu(i,t){return xl(i.position,i.controls[1].position,t.position)&&xl(i.position,t.controls[0].position,t.position)}function Du(i,t,e,r,o=.5){let n=ni.subVectors(t,i).multiplyScalar(o).add(i),s=$s.subVectors(e,t).multiplyScalar(o).add(t),a=tv.subVectors(r,e).multiplyScalar(o).add(e),l=n,c=rv.subVectors(s,n).multiplyScalar(o).add(n),h=ov.subVectors(a,s).multiplyScalar(o).add(s),p=a,u=iv.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 Bu(i,t,e=12,r=!0){let o=Nu.set(0,0,0),n,s=0,a=[];for(let l=0;l<t.length;l++){let c=vl(t[l]),h=ni,p=Zr(c,e);a.push(p);for(let u=0;u<=p;u++)if(c instanceof qs||c instanceof bl||c instanceof Ws){if(c.getPoint(u/p,h),o.set(h.x,h.y,0),n!==void 0&&sv(n,o))continue;n===void 0&&(n=Tu),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 Eu(i,t,e,r=12,o=!0){let n=Nu.set(0,0,0),s=0,a=[];for(let l=0;l<t.length;l++){if(e[l]===!1)continue;let c,h=vl(t[l]),p=ni,u=Zr(h,r);a.push(u);for(let m=0;m<=u;m++)if(h instanceof qs||h instanceof bl||h instanceof Ws){if(h.getPoint(m/u,p),n.set(p.x,p.y,0),c!=null&&c.equals(n))continue;c===void 0?c=Tu:(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 Ll(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=Zr(s.roundedCurveCorner,t)*.5;o>0&&(r[o-1]+=l),a+=l}s.curveAfter!==void 0&&(a+=Zr(s.curveAfter,t)),r.push(a)}return i.length>0&&e&&i[0].roundedCurveCorner!==void 0&&(r[i.length-1]+=Zr(i[0].roundedCurveCorner,t)*.5),r}function Zr(i,t=12){return i&&i instanceof Xb?t*2:i&&(i instanceof Ws||i instanceof Qb)?1:i&&i instanceof ev?t*i.points.length:t}function _u(i,t,e=12,r=!0){let o,n=0;for(let s=0;s<t.length;s++){let a=vl(t[s]),l=Zr(a,e),c=ni;for(let h=0;h<=l;h++)if(a instanceof qs||a instanceof bl||a instanceof Ws){if(a.getPoint(h/l,c),o!==void 0&&nv(o,c,tn))continue;o===void 0&&(o=$s),o.copy(c),i.push(c.x,c.y),n++}}return rn(i[0],i[i.length-2],tn)&&rn(i[1],i[i.length-1],tn)&&(i.pop(),i.pop()),r&&n>1&&!(rn(i[n-1],i[1],tn)&&rn(i[n-2],i[0],tn))&&(i.push(i[0],i[1]),n++),i}var Nl=new Er,hv=new Er,pv=new Er,uv=new Er,mv=new Er,dv=new Er,Pe=class extends Gu{constructor(e=100,r=100){super();this.points=[];this.shapeHoles=[];this.eventDispatcher=new av;this.plane=new lv(new cv(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=Cl.generateUUID();this.needsUpdate=!1;this.roundedCurves=[];this._width=e,this._height=r}static createFromState(e,r,o){let n=new Pe;return n.isClosed=e.isClosed,n.points=e.points.map(s=>or.create(s.id,s.data)),typeof e.roundness=="number"&&(n.roundness=e.roundness),n.shapeHoles=e.shapeHoles.map(s=>Pe.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=Nl.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=Cl.generateUUID()){let n;e instanceof Er?n=e:n=new Er(e,r);let s=new or(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 Bu(e,o?this.roundedCurves:this.curves,r,this.autoClose),n.reduce((s,a)=>s+a,0)+1}computeCurveDivisions(e=12){return this.curveDivisions=Ll(this.points,e,!1),this.roundedCurveDivisions=Ll(this.points,e,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(e,r,o=12){return Eu(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),_u(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=Zr(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(wl(n,s)){let p=n.position.distanceTo(s.position);return n.position.distanceTo(Nl.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){wl(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){var o,n,s;if(this.curves=[],this.roundedCurves=[],!this.points.length)return;for(let a=0,l=this.points.length;a<l;a++){let c=this.points[a];if(a===0)this.moveTo(c.position.x,c.position.y);else{let h=this.points[a-1];this._applyCurveForPoint(c,h)}}let r=this.getLastPoint();if(r!=null&&r.curveAfter&&(r.curveAfter=void 0),this.isClosed){let a=this.points[0],l=this.points[this.points.length-1];this._applyCurveForPoint(a,l)}if(this.points.length>2){let a=0;for(let l=0,c=this.points.length;l<c;l++){let h=this.points[l],p=(o=this.points[l-1])!=null?o:this.points[this.points.length-1],u=(n=this.points[l+1])!=null?n:this.points[0],m=h.roundness,f=p&&u&&Pu(p,h,u);if(!h.controlsMoved()&&m>0&&!f){let g=h.curveBefore,v=h.curveAfter;if(g===void 0||v===void 0)continue;let y=h.roundedCurveBefore,b=h.roundedCurveAfter,A=g.getLength(),N=v.getLength(),S=Math.min(m,A*.499),k=Math.min(m,N*.499),T=Math.min(S,k),d=1-T/A,O=T/N,x=g.getPointAt(d,Nl),L=v.getPointAt(O,hv);this._subSplitCurve(g,y,d,x,void 0),this._subSplitCurve(v,b,O,void 0,L);let C;if(this.useCubicForRoundedCorners){let P=Sl(x,h.position,L)/2,$=Math.tan(P)*x.distanceTo(h.position),[Y,oe]=Ou(x,L,$,pv,uv),ae=Iu(Y,oe,h.position),[ne,ge]=Au(ae,x,L,$,mv,dv);C=new Js(x.clone(),ne.clone(),ge.clone(),L.clone())}else C=new zu(x.clone(),h.position.clone(),L.clone());h.roundedCurveCorner=C,this.roundedCurves.splice(l+a,0,C),a++}}}e&&((s=this.eventDispatcher)==null||s.dispatchEvent({type:"update"}))}_subSplitCurve(e,r,o,n,s){if(e instanceof Tl)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=Du(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 Pe(this._width,this._height);return e.points=this.points.map(r=>r.clone()),e.isClosed=this.isClosed,e.roundness=this.roundness,e.isMesh2D=this.isMesh2D,e.shapeHoles=this.shapeHoles.map(r=>r.clone()),e}toJSON(){return{points:this.points.reduce((e,r)=>e.concat(r.toJSON()),[]),shapeHoles:this.shapeHoles.map(e=>e.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(e){var o;this.points=[],this.pointIDs=0;let r=e.points.length/7;for(let n=0;n<r;n++){let s=n*7,a=e.points[s+0],l=e.points[s+1],c=e.points[s+2],h=e.points[s+3],p=e.points[s+4],u=e.points[s+5],m=e.points[s+6],f=new or(Cl.generateUUID(),new Er(a,l));f.controls[0].position.set(c,h),f.controls[1].position.set(p,u),f.roundness=m,this.points.push(f)}return this.shapeHoles=(o=e.shapeHoles)!=null&&o.length?e.shapeHoles.map(n=>{let s=new Pe;return s.fromJSON(n),s}):[],this.isClosed=e.isClosed,this._roundness=e.roundness,this._update(),this}fromShape(e){let r=(n,s)=>{s instanceof Js&&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 zu&&(n[a]=Mu(n[a]));for(a=0,l=n.length;a<l;a++){let p=n[a],u=a>0?n[a-1]:null,m;p instanceof Js?(m=this.createPoint(p.v0),m.controls[1].position.copy(p.v1)):p instanceof Tl&&(m=this.createPoint(p.v1)),m!==void 0&&(u!==null&&r(m,u),s.push(m))}let c=n[n.length-1],h=!1;return c instanceof Js?c.v3.equals(s[0].position)&&(s[0].controls[0].position.copy(c.v2),h=!0):c instanceof Tl&&c.v2.equals(s[0].position)&&(h=!0),this.isClosed=h,s};return this.points=o(e.curves),e instanceof Gu&&(this.shapeHoles=e.holes.map(n=>{let s=new Pe;return s.fromShape(n),s})),this.update(),this}};var Pl=Math.PI*2;function Ml({x:i,y:t},e,r,o,n){return{x:i*e+o,y:t*r+n}}function fv(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 Ru(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 yv(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),m=Math.pow(a,2),f=h*p-h*m-p*u;f<0&&(f=0),f/=h*m+p*u,f=Math.sqrt(f)*(l===c?-1:1);let g=f*o/n*a,v=f*-n/o*s,y=g+(i+e)/2,b=v+(t+r)/2,A=(s-g)/o,N=(a-v)/n,S=(-s-g)/o,k=(-a-v)/n,T=Ru(1,0,A,N),d=Ru(A,N,S,k);return!c&&d>0&&(d-=Pl),c&&d<0&&(d+=Pl),{centerx:y,centery:b,ang1:T,ang2:d}}function Fu({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=yv(i,t,e,r,o,n,c,h,s,a),{ang1:m,ang2:f}=u,{centerx:g,centery:v}=u,y=Math.abs(f)/(Pl/4);Math.abs(1-y)<1e-7&&(y=1);let b=Math.max(Math.ceil(y),1);f/=b;for(let A=0;A<b;A++)l.push(fv(m,f)),m+=f;return l.map(A=>{let{x:N,y:S}=Ml(A[0],o,n,g,v),{x:k,y:T}=Ml(A[1],o,n,g,v),{x:d,y:O}=Ml(A[2],o,n,g,v);return{x1:N,y1:S,x2:k,y2:T,x:d,y:O}})}import{BufferAttribute as Ks,BufferGeometry as Sv}from"three";var qe;(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"})(qe||(qe={}));var ot;(function(i){i[i.POLYGONS=0]="POLYGONS",i[i.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",i[i.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(ot||(ot={}));function me(i,t){if(!i)throw t||"Assertion Failed!"}var ce=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){me(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){me(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){me(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){me(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}(),on=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(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}(),si=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}(),Vu=function(){function i(){var t=new si,e=new on,r=new Ys(0),o=new Ys(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 Ys(0),r=new Ys(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;me(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;me(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 si,e=new si,r=new on,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 si;this.makeVertex_(n,e,t.Org),t.Org.anEdge=t}if(!r){var s=new on;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 on;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 si;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 on;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&&ce.vertCCW(r.Lprev.Org,r.Org,n.Lnext.Lnext.Org)&&ce.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){me(o.prev===n),l=o.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Lface===o),l=l.Lnext;while(l!==o.anEdge)}for(me(o.prev===n&&o.anEdge===null),a=e,a=e;(s=a.next)!==e;a=s){me(s.prev===a),l=s.anEdge;do me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l),me(l.Org===s),l=l.Onext;while(l!==s.anEdge)}for(me(s.prev===a&&s.anEdge===null),c=r,c=r;(l=c.next)!==r;c=l)me(l.Sym.next===c.Sym),me(l.Sym!==l),me(l.Sym.Sym===l),me(l.Org!==null),me(l.Dst!==null),me(l.Lnext.Onext.Sym===l),me(l.Onext.Sym.Lnext===l);me(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}(),ju=function(){function i(){this.handle=null}return i}(),Uu=function(){function i(){this.key=null,this.node=0}return i}(),gv=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 ju,this.handles[r]=new Uu;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,me(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 ju;for(n=this.handles.length,this.handles.length=this.max+1,o=n;o<this.handles.length;o++)this.handles[o]=new Uu}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;me(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}(),Ol=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}(),ku=function(){function i(){this.key=null,this.next=null,this.prev=null}return i}(),xv=function(){function i(t,e){this.frame=t,this.leq=e,this.head=new ku,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 ku;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}(),bv=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?ce.vertLeq(n.Org,s.Org)?ce.edgeSign(s.Dst,n.Org,s.Org)<=0:ce.edgeSign(n.Dst,s.Org,n.Org)>=0:ce.edgeSign(s.Dst,o,s.Org)<=0;if(s.Dst===o)return ce.edgeSign(n.Dst,o,n.Org)>=0;var a=ce.edgeEval(n.Dst,o,n.Org),l=ce.edgeEval(s.Dst,o,s.Org);return a>=l},i.deleteRegion=function(t,e){e.fixUpperEdge&&me(e.eUp.winding===0),e.eUp.activeRegion=null,t.dict.delete(e.nodeUp)},i.fixUpperEdge=function(t,e,r){me(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 Ol;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 qe.ODD:return(e&1)!==0;case qe.NONZERO:return e!==0;case qe.POSITIVE:return e>0;case qe.NEGATIVE:return e<0;case qe.ABS_GEQ_TWO:return e>=2||e<=-2}throw new Error("Invalid winding rulle")},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 me(ce.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,me(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=ce.vertL1dist(e,t),n=ce.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(ce.vertLeq(o.Org,n.Org)){if(ce.edgeSign(n.Dst,o.Org,n.Org)>0)return!1;ce.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(ce.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(me(!ce.vertEq(o.Dst,n.Dst)),ce.vertLeq(o.Dst,n.Dst)){if(ce.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(ce.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 si,m,f;if(me(!ce.vertEq(c,l)),me(ce.edgeSign(l,t.event,s)<=0),me(ce.edgeSign(c,t.event,a)>=0),me(s!==t.event&&a!==t.event),me(!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(ce.vertLeq(s,a)){if(ce.edgeSign(c,s,a)>0)return!1}else if(ce.edgeSign(l,a,s)<0)return!1;return i.debugEvent(t),ce.intersect(l,s,c,a,u),me(Math.min(s.t,l.t)<=u.t),me(u.t<=Math.max(a.t,c.t)),me(Math.min(c.s,l.s)<=u.s),me(u.s<=Math.max(a.s,s.s)),ce.vertLeq(u,t.event)&&(u.s=t.event.s,u.t=t.event.t),m=ce.vertLeq(s,a)?s:a,ce.vertLeq(m,u)&&(u.s=m.s,u.t=m.t),ce.vertEq(u,s)||ce.vertEq(u,a)?(i.checkForRightSplice(t,e),!1):!ce.vertEq(l,t.event)&&ce.edgeSign(l,t.event,u)>=0||!ce.vertEq(c,t.event)&&ce.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),f=i.regionBelow(e).eUp.Rprev,r.eUp=n.Oprev,n=i.finishLeftRegions(t,r,null),i.addRightEdges(t,e,n.Onext,o.Rprev,f,!0),!0):(ce.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),ce.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),ce.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),ce.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}ce.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,ce.vertEq(o.Org,r)){me(!1),i.spliceMergeVertices(t,o,r.anEdge);return}if(!ce.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}me(!1),e=i.topRightRegion(e),l=i.regionBelow(e),s=l.eUp.Sym,n=a=s.Onext,l.fixUpperEdge&&(me(n!==s),i.deleteRegion(t,l),t.mesh.delete(s),s=n.Oprev),t.mesh.splice(r.anEdge,s),ce.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 Ol;if(c.eUp=e.anEdge.Sym,r=t.dict.search(c).key,o=i.regionBelow(r),!!o){if(s=r.eUp,a=o.eUp,ce.edgeSign(s.Dst,e,s.Org)===0){i.connectLeftDegenerate(t,r,e);return}if(n=ce.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);me(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 Ol,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 xv(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||(me(e.fixUpperEdge),me(++r===1)),me(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,ce.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 gv(n,ce.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,me(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||!ce.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}(),vv=function(){function i(){this.mesh=new Vu,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=qe.ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}return 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],m=[null,null,null],f=[null,null,null],g=this.mesh.vHead;e=g.next;for(var v=0;v<3;++v)n=e.coords[v],c[v]=n,f[v]=e,l[v]=n,m[v]=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,m[y]=e);var b=0;if(l[1]-c[1]>l[0]-c[0]&&(b=1),l[2]-c[2]>l[b]-c[b]&&(b=2),c[b]>=l[b]){t[0]=0,t[1]=0,t[2]=1;return}for(a=0,r=f[b],o=m[b],h[0]=r.coords[0]-o.coords[0],h[1]=r.coords[1]-o.coords[1],h[2]=r.coords[2]-o.coords[2],e=g.next;e!==g;e=e.next)p[0]=e.coords[0]-o.coords[0],p[1]=e.coords[1]-o.coords[1],p[2]=e.coords[2]-o.coords[2],u[0]=h[1]*p[2]-h[2]*p[1],u[1]=h[2]*p[0]-h[0]*p[2],u[2]=h[0]*p[1]-h[1]*p[0],s=u[0]*u[0]+u[1]*u[1]+u[2]*u[2],s>a&&(a=s,t[0]=u[0],t[1]=u[1],t[2]=u[2]);a<=0&&(t[0]=t[1]=t[2]=0,t[this.longAxis_(h)]=1)},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(;ce.vertLeq(r.Dst,r.Org);r=r.Lprev);for(;ce.vertLeq(r.Org,r.Dst);r=r.Lnext);o=r.Lprev;for(var n=void 0;r.Lnext!==o;)if(ce.vertLeq(r.Dst,o.Org)){for(;o.Lnext!==r&&(ce.edgeGoesLeft(o.Lnext)||ce.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&&(ce.edgeGoesRight(r.Lprev)||ce.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===ot.CONNECTED_POLYGONS&&(s*=2),this.elements=[],this.elements.length=s*r,this.vertexCount=a,this.vertices=[],this.vertices.length=a*o,this.vertexIndices=[],this.vertexIndices.length=a;for(var c=t.vHead.next;c!==t.vHead;c=c.next)if(c.n!==-1){var p=c.n*o;this.vertices[p+0]=c.coords[0],this.vertices[p+1]=c.coords[1],o>2&&(this.vertices[p+2]=c.coords[2]),this.vertexIndices[c.n]=c.idx}for(var u=0,h=t.fHead.next;h!==t.fHead;h=h.next)if(!!h.inside){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 m=l;m<r;++m)this.elements[u++]=-1;if(e===ot.CONNECTED_POLYGONS){n=h.anEdge;do this.elements[u++]=this.getNeighbourFace_(n),n=n.Lnext;while(n!==h.anEdge);for(var f=l;f<r;++f)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 Vu),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=qe.ODD),e===void 0&&(e=ot.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_(),bv.computeInterior(this,s);var a=this.mesh;return e===ot.BOUNDARY_CONTOURS?this.setWindingNumber_(a,1,!0):this.tessellateInterior_(a),s&&a.check(),e===ot.BOUNDARY_CONTOURS?this.outputContours_(a,o):this.outputPolymesh_(a,e,r,o),!0},i}();function So(i){var t=i.windingRule,e=t===void 0?qe.ODD:t,r=i.elementType,o=r===void 0?ot.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,m=i.strict,f=m===void 0?!0:m,g=i.debug,v=g===void 0?!1:g;if(!u&&f)throw new Error("Contours can't be empty");if(!!u){var y=new vv;i.edgeCreateCallback&&(y.edgeCreateCallback=i.edgeCreateCallback),i.vertexIdCallback&&(y.vertexIdCallback=i.vertexIdCallback);for(var b=0;b<u.length;b++)y.addContour(l||2,u[b]);return y.tesselate(e,o,s,l,h,f),{vertices:y.vertices,vertexIndices:y.vertexIndices,vertexCount:y.vertexCount,elements:y.elements,elementCount:y.elementCount,mesh:v?y.mesh:void 0}}}var JD=qe.ODD,YD=qe.NONZERO,KD=qe.POSITIVE,XD=qe.NEGATIVE,QD=qe.ABS_GEQ_TWO,ZD=ot.POLYGONS,e2=ot.CONNECTED_POLYGONS,t2=ot.BOUNDARY_CONTOURS;var ai=class extends Sv{constructor(e,r=12,o={}){var f,g,v;super();this.type="ShapeGeometry";this.windingRule=qe.ODD;this.elementType=ot.POLYGONS;this.polySize=3;this.vertexSize=2;this.strict=!0;this._shape=e,this._curveSegments=r,this._triangulationOptions=Object.assign({windingRule:qe.ODD,elementType:ot.POLYGONS,polySize:3,vertexSize:2,strict:!0},o);let n=this._shape.extractShapePointsToFlatArray([],this._curveSegments),s=this._shape.shapeHoles.map(y=>y.extractShapePointsToFlatArray([],this._curveSegments)),a,l=!0,c=!0,h,p;for(let y=0,b=n.length/2;y<b;y++){let A=y*2,N=n[A+0],S=n[A+1];if(h!==void 0&&N!==h&&(l=!1),p!==void 0&&S!==p&&(c=!1),h=N,p=S,!l&&!c)break}!l&&!c&&(a=So({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=(f=a==null?void 0:a.vertexCount)!=null?f:1,m=(g=a==null?void 0:a.elementCount)!=null?g:1;if(this._positionAttribute=new Ks(new Float32Array(u*3),3),this._normalAttribute=new Ks(new Float32Array(u*3),3),this._uvAttribute=new Ks(new Float32Array(u*2),2),this._indexAttribute=new Ks(new Uint32Array(m*3),1),a){let y=1/0,b=-1/0,A=1/0,N=-1/0;for(let T=0,d=u;T<d;T++){let O=T*2,x=a.vertices[O+0],L=a.vertices[O+1];x<y&&(y=x),x>b&&(b=x),L<A&&(A=L),L>N&&(N=L)}let S=b-y,k=N-A;for(let T=0,d=u;T<d;T++){let O=T*2,x=a.vertices[O+0],L=a.vertices[O+1],C=(x-y)/S,P=(L-A)/k;this._positionAttribute.setXYZ(T,x,L,0),this._normalAttribute.setXYZ(T,0,0,1),this._uvAttribute.setXY(T,C,P)}for(let T=0,d=m;T<d;T++){let O=T*3,x=a.elements[O+0],L=a.elements[O+1],C=a.elements[O+2];this._indexAttribute.setX(O+0,x),this._indexAttribute.setX(O+1,L),this._indexAttribute.setX(O+2,C)}}this.setAttribute("position",this._positionAttribute),this.setAttribute("normal",this._normalAttribute),this.setAttribute("uv",this._uvAttribute),this.setIndex(this._indexAttribute),this.setDrawRange(0,((v=a==null?void 0:a.elementCount)!=null?v:1)*3)}clone(){let e=new ai(this._shape,this._curveSegments);return e.userData=Ui(this.userData),e}};import{BufferAttribute as Qs,BufferGeometry as wv}from"three";var Xs=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*Xs.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*Xs.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)}},nn=Xs;nn.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var Il=(i,t)=>([e,r])=>(r<e&&(r+=t),(i>=e?i:i+t)<=r),li=class extends wv{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(T=>{let d=T.extractShapePointsToFlatArray([],n),O=[];for(let x=d.length-1;x>=1;x-=2){let L=d[x-1],C=d[x-0];O.push(L,C)}return O}),c=So({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]}),h=So({windingRule:qe.ODD,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...l]});if(!c)throw new Error("error generating geometry");let p=c.elementCount;if(h){c.elementCount+=h.elementCount;for(let T=0;T<h.elements.length;T++){let d=h.elements[T],O=T%2===0?c.vertexCount:0;c.elements.push(d+O)}for(let T=0;T<h.vertexIndices.length;T++){let d=h.vertexIndices[T],O=c.vertexCount;c.vertexIndices.push(d+O)}for(let T=0;T<h.vertices.length;T++){let d=h.vertices[T];c.vertices.push(d)}}let u=1/0,m=-1/0,f=1/0,g=-1/0;for(let T=0,d=c.vertexCount;T<d;T++){let O=T*2,x=c.vertices[O+0],L=c.vertices[O+1];x<u&&(u=x),x>m&&(m=x),L<f&&(f=L),L>g&&(g=L)}this._minX=u,this._minY=f,this._width=m-u,this._height=g-f;let v=c.vertexCount*2*(2+this._bevelSegments);this._buffer=new nn(v);let y=[],b=[];for(let T=c.elementCount-1;T>=0;T--){let d=T>=p,O=T*2,x=c.elements[O+0],L=c.elements[O+1],C=x+L,P={start:x,count:L,normals:[],continuous:[],concave:[]},$=x,Y=C-1,oe=x+1,ae=this._shape.roundedCurves.length;do{let R=$-x,B=c.vertices[Y*2+0],E=c.vertices[Y*2+1],D=c.vertices[$*2+0],_=c.vertices[$*2+1],W=c.vertices[oe*2+0],K=c.vertices[oe*2+1],G=D-B,V=_-E,z=Math.sqrt(G*G+V*V);G/=z,V/=z;let U=D-W,se=_-K,q=Math.sqrt(U*U+se*se);U/=q,se/=q,P.normals[R*2+0]=-se,P.normals[R*2+1]=U,P.concave[R]=G*se-V*U>0;let J=c.vertexIndices[$];if(Array.isArray(J))P.continuous[R]=!1;else{let[X,Q]=this._shape.getCurveIndexFromVertexId(J-1,!0);if(Q>0&&Q<1)P.continuous[R]=!0;else{let Z=Q===1?X+1:X-1;Z=(Z+ae)%ae;let le=Q===1?0:1,ie=this._shape.roundedCurves[X].getTangent(Q),pe=this._shape.roundedCurves[Z].getTangent(le);P.continuous[R]=ie.dot(pe)>.95}}d&&(P.normals[R*2+0]*=-1,P.normals[R*2+1]*=-1),[Y,$,oe]=[$,oe,oe+1],oe>=C&&(oe-=L)}while(oe!==x+1);let ne=[];ne.push({bevelI:0,angle:0,size:0,boundary:{vertices:c.vertices.slice(x*2,C*2),vertexCount:L,vertexIndices:new Array(L).fill(!0).map((R,B)=>[B,B]),elements:[0,L],elementCount:1,mesh:null},reverseMap:[],insetPoints:c.vertices.slice(x*2,C*2)});for(let R=1;R<=this._bevelSegments;R++){let B=R/this._bevelSegments*Math.PI/2,E=(1-Math.cos(B))*this._bevelSize,D=[],_=[],W=[],K=[],G=0;for(let z=0;z<L;z++){let U=z*2,se=(z-1+L)%L*2,q=c.vertices[P.start*2+U+0],J=c.vertices[P.start*2+U+1],X=-P.normals[se+0]*E,Q=-P.normals[se+1]*E,Z=-P.normals[U+0]*E,le=-P.normals[U+1]*E;if(P.concave[z]||!P.concave[z]&&d){let ie=Math.atan2(Q,X),pe=Math.atan2(le,Z);pe>ie&&(pe-=Math.PI*2);let Ge=pe-ie;if(P.continuous[z]||d){let xe=ie+Ge/2,$e=Math.cos(xe)*E,Te=Math.sin(xe)*E;D[2*G+0]=q+$e*(d?-1:1),D[2*G+1]=J+Te*(d?-1:1),K[G]=z,G++}else{let xe=Math.max(1,Math.floor(n/4*Math.abs(Ge)/Math.PI));for(let $e=0;$e<=xe;$e++){let Te=ie+Ge*($e/xe),ht=Math.cos(Te)*E,Tt=Math.sin(Te)*E;D[2*G+0]=q+ht,D[2*G+1]=J+Tt,K[G]=z,G++}}}else D[2*G+0]=q+X,D[2*G+1]=J+Q,K[G]=z,_[z]=G,G++,D[2*G+0]=q,D[2*G+1]=J,K[G]=z,G++,D[2*G+0]=q+Z,D[2*G+1]=J+le,K[G]=z,W[z]=G,G++}let V=So({windingRule:qe.POSITIVE,elementType:ot.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[D],edgeCreateCallback:z=>{let se=z.Org.idx,q=K[se],J=K[(se+1)%K.length];z.idx=[q,J],z.Sym.idx=[J,q]},vertexIdCallback:z=>{let U=z.Lprev.idx;return[U?U[1]:0,z.idx[0]]}});if(!V)throw console.log("Error"),new Error(`error generating bevel geometry for ${R}'th loop`);if(!V.vertexCount)break;for(let z=0;z<V.vertexIndices.length;z++){let[U,se]=V.vertexIndices[z];if(U===se)continue;let q=se;se<U&&(q+=L);for(let J=U;J<q;J++){let X=J%L,Q=(J+1)%L;if(!P.continuous[X]||!P.continuous[Q]){V.vertexIndices[z]=[U,X],V.vertexIndices.splice(z+1,0,[Q,se]),V.vertices.splice((z+1)*2,0,V.vertices[z*2],V.vertices[z*2+1]);break}}}ne.push({bevelI:R,angle:B,size:E,boundary:V,reverseMap:K,insetPoints:D})}let ge=(R,B,E)=>{let D=0,_=R.boundary.vertexIndices.length;for(;D<_&&E(R.boundary.vertexIndices[B]);)B=(B+1)%_,D++;return D},j=y.length;for(let R=1;R<ne.length;R++){let B=ne[R-1],E=ne[R],D=B.boundary.vertexIndices.length,_=E.boundary.vertexIndices.length;if(!D||!_)break;let W=P.concave.length,K=0,G=Il(K,L);for(;!B.boundary.vertexIndices.filter(G).length||!E.boundary.vertexIndices.filter(G).length;)K++,G=Il(K,L);let V=B.boundary.vertexIndices.findIndex(G),z=E.boundary.vertexIndices.findIndex(G);do V=(V+1)%D;while(G(B.boundary.vertexIndices[V]));do z=(z+1)%_;while(G(E.boundary.vertexIndices[z]));K=(K+1)%L;let U=K,se=this.buildBevelVert(P,B,(V-1+D)%D),q=this.buildBevelVert(P,E,(z-1+_)%_),J=se,X=q,Q,Z,le=!1;do{G=Il(K,L);let ie=ge(B,V,G),pe=ge(E,z,G),Ge=le;if(le=!1,ie&&!pe){for(let xe=0;xe<ie;xe++)Q=this.buildBevelVert(P,B,(V+xe)%D,xe/(ie-1)),y.push(J.topN,Q.topP,X.topN),y.push(Q.bottomP,J.bottomN,X.bottomN),J=Q;le=!0}else if(!ie&&pe)for(let xe=0;xe<pe;xe++)Z=this.buildBevelVert(P,E,(z+xe)%_,xe/(pe-1)),y.push(X.topN,J.topP,Z.topP),y.push(J.bottomP,X.bottomN,Z.bottomP),X=Z;else if(ie&&pe)if(Q=this.buildBevelVert(P,B,V,0),Z=this.buildBevelVert(P,E,z,0),Ge?(y.push(J.topN,Z.topP,X.topN),y.push(J.topN,Q.topP,Z.topP),y.push(Z.bottomP,J.bottomN,X.bottomN),y.push(Z.bottomP,Q.bottomP,J.bottomN)):(y.push(X.topN,J.topN,Q.topP),y.push(X.topN,Q.topP,Z.topP),y.push(Q.bottomP,J.bottomN,X.bottomN),y.push(Q.bottomP,X.bottomN,Z.bottomP)),J=Q,X=Z,ie===pe)for(let xe=1;xe<ie;xe++)Q=this.buildBevelVert(P,B,(V+xe)%D,xe/(ie-1)),Z=this.buildBevelVert(P,E,(z+xe)%_,xe/(pe-1)),y.push(J.topN,Q.topP,X.topN),y.push(X.topN,Q.topP,Z.topP),y.push(Q.bottomP,J.bottomN,X.bottomN),y.push(Q.bottomP,X.bottomN,Z.bottomP),J=Q,X=Z;else if(ie>pe){let xe=ie/pe,$e=0;for(let Te=1;Te<ie;Te++)Q=this.buildBevelVert(P,B,(V+Te)%D,Te/(ie-1)),y.push(J.topN,Q.topP,X.topN),y.push(Q.bottomP,J.bottomN,X.bottomN),J=Q,Te>($e+1)*xe&&($e++,Z=this.buildBevelVert(P,E,(z+$e)%_,$e/(pe-1)),y.push(X.topN,Q.topP,Z.topP),y.push(Q.bottomP,X.bottomN,Z.bottomP),X=Z)}else{let xe=pe/ie,$e=0;for(let Te=1;Te<pe;Te++)Z=this.buildBevelVert(P,E,(z+Te)%_,Te/(pe-1)),y.push(X.topN,Q.topP,Z.topP),y.push(Q.bottomP,X.bottomN,Z.bottomP),X=Z,Te>($e+1)*xe&&($e++,Q=this.buildBevelVert(P,B,(V+$e)%D,$e/(ie-1)),y.push(J.topN,Q.topP,X.topN),y.push(Q.bottomP,J.bottomN,X.bottomN),J=Q)}V=(V+ie)%D,z=(z+pe)%_,K=(K+1)%W}while(K!==U)}{let R=ne[0];for(let B=0,E=R.boundary.vertexCount;B<E;B++){let D=this.buildBevelVert(P,R,B),_=this.buildBevelVert(P,R,(B+1)%E);y.push(_.topP,D.topN,D.bottomN),y.push(_.topP,D.bottomN,_.bottomP)}}if(d){let R=[];for(let B=y.length-1;B>=j+2;B-=3){let E=y[B-2],D=y[B-1],_=y[B-0];R.push(_,D,E)}y.splice(j,y.length-j,...R)}if(d){let R=[];for(let B=ne[ne.length-1].boundary.vertices.length-1;B>=1;B-=2){let E=ne[ne.length-1].boundary.vertices[B-1],D=ne[ne.length-1].boundary.vertices[B-0];R.push(E,D)}b.push(R)}if(!d){let R=ne[ne.length-1],B=So({windingRule:ne.length>1?qe.POSITIVE:qe.ODD,elementType:ot.POLYGONS,vertexSize:2,strict:!0,contours:[R.insetPoints,...b]});if(!B)throw new Error("Error generating geometry for surface");Object.assign(this,{capStartIndex:y.length});for(let E=0;E<B.elementCount*3;E+=3){let D=this.buildSurfaceVert(B,B.elements[E+0]),_=this.buildSurfaceVert(B,B.elements[E+1]),W=this.buildSurfaceVert(B,B.elements[E+2]);y.push(D.top,_.top,W.top),y.push(W.bottom,_.bottom,D.bottom)}}this.vertexCache={}}this._buffer.shrink();let A=new Qs(Uint32Array.from(y),1),N=new Qs(this._buffer.positions,3),S=new Qs(this._buffer.normals,3),k=new Qs(this._buffer.uvs,2);N.needsUpdate=!0,S.needsUpdate=!0,k.needsUpdate=!0,A.needsUpdate=!0,this.setAttribute("position",N),this.setAttribute("normal",S),this.setAttribute("uv",k),this.setIndex(A)}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 m=Math.cos(r.angle),f=Math.sin(r.angle),g=o*2,v=c*2,y=h*2,b=r.boundary.vertices[g+0],A=r.boundary.vertices[g+1],N=(1-f)*this._bevelSize,S=(b-this._minX)/this._width,k=(A-this._minY)/this._height,T=e.normals[v+0],d=e.normals[v+1],O=e.normals[y+0],x=e.normals[y+1];if(u){let Y=O-T,oe=x-d;T=T+Y*(1-n),d=d+oe*(1-n);let ae=Math.sqrt(T*T+d*d);T/=ae,d/=ae}let L=this._buffer.get(p?2:4),C=L*3,P=L*2,$={i:o,fi:c,topP:L+0,topN:L+0,bottomP:L+1,bottomN:L+1};return this._buffer.positions[C+0]=b,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=T*m,this._buffer.normals[C+1]=d*m,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=S,this._buffer.uvs[P+1]=k,this._buffer.positions[C+3]=b,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=T*m,this._buffer.normals[C+4]=d*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=k,this._buffer.uvs[P+3]=S,p||(L+=2,C+=6,P+=4,$.topP=L+0,$.bottomP=L+1,this._buffer.positions[C+0]=b,this._buffer.positions[C+1]=A,this._buffer.positions[C+2]=this._depth-N,this._buffer.normals[C+0]=O*m,this._buffer.normals[C+1]=x*m,this._buffer.normals[C+2]=f,this._buffer.uvs[P+0]=S,this._buffer.uvs[P+1]=k,this._buffer.positions[C+3]=b,this._buffer.positions[C+4]=A,this._buffer.positions[C+5]=N,this._buffer.normals[C+3]=O*m,this._buffer.normals[C+4]=x*m,this._buffer.normals[C+5]=-f,this._buffer.uvs[P+2]=k,this._buffer.uvs[P+3]=S),this.vertexCache[s]=$,$}clone(){let e=new li(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return e.userData=Ui(this.userData),e}};var ut=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var c,h,p,u,m,f,g;let e=Object.assign({},(c=t==null?void 0:t.parameters)!=null?c:{width:100,subdivisions:40,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters),r=Math.abs(e.width),o=Math.abs((h=e.height)!=null?h:e.width),n=Math.abs((p=e.depth)!=null?p:0),s=(u=i.shape)!=null?u:t==null?void 0:t.shape,a=(m=s==null?void 0:s.roundness)!=null?m:e.roundness;s!==void 0&&(s instanceof Pe?(s.width!==r||s.height!==o)&&s.applySize(r,o):s=new Pe(r,o).fromJSON(s),((f=i.parameters)==null?void 0:f.roundness)!==void 0&&((g=i.parameters)==null?void 0:g.roundness)>0&&s.update(!1));let l=s!=null?s:new Pe(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 ai(i.shape,o):s=new li(i.shape,t,e,o,r),Object.assign(s,{userData:H(I({},i),{type:"VectorGeometry"})})}};import{MathUtils as qu,Vector2 as Wu}from"three";var $u=Math.PI*2,Ju=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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=Lv(c,h,p,o*Math.PI/180,r,n);c.isClosed=!0,c.update();let m=ut.create({shape:c,parameters:{subdivisions:u,depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(m,{userData:H(I({},i),{type:"EllipseGeometry"})})}};function Lv(i,t,e,r,o,n){if(r>=$u)return o>30||o%4===0?(Tv(i,t,e,n),Math.round(o/4)):Hu(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=Fu({px:s.x,py:s.y,cx:l.x,cy:l.y,rx:t,ry:e,largeArcFlag:r>Math.PI,sweepFlag:!0});return o>30||o%c.length===0?Cv(i,s.x,s.y,c,o,t,e,n):Hu(i,r,o,t,e,n)}function Cv(i,t,e,r,o,n,s,a){let l=Math.round(o/r.length);i.addPoint(ci(t,e));for(let c=0,h=r.length;c<h;c++){let p=r[c],u=i.points[c],m=ci(p.x,p.y);u.controls[1].position.set(p.x1,p.y1),m.controls[0].position.set(p.x2,p.y2),i.addPoint(m)}return a>0?Yu(i,n,s,a):i.addPoint(ci(0,0)),l}function Hu(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(ci(c,h))}return t<$u?n>0?Yu(i,r,o,n):i.addPoint(ci(0,0)):(i.removePoint(i.points[i.points.length-1]),n>0&&Ku(i,r,o,n)),1}function Tv(i,t,e,r=0,o=0,n=0){let s=.5522847498,a=t*s,l=e*s;i.addPoint(Zs(o-t,n,o-t,n-l,o-t,n+l)),i.addPoint(Zs(o,n+e,o-a,n+e,o+a,n+e)),i.addPoint(Zs(o+t,n,o+t,n+l,o+t,n-l)),i.addPoint(Zs(o,n-e,o+a,n-e,o-a,n-e)),r>0&&Ku(i,t,e,r)}function ci(i,t){return new or(qu.generateUUID(),new Wu(i,t))}function Zs(i,t,e,r,o,n){let s=ci(i,t);return s.controls[0].position.set(e,r),s.controls[1].position.set(o,n),s}function Yu(i,t,e,r){Xu(i,t,e,r).forEach(n=>i.addPoint(n))}function Ku(i,t,e,r){let o=Xu(i,t,e,r),n=new Pe;o.forEach(s=>n.addPoint(s)),n.isClosed=!0,i.shapeHoles.push(n)}function Xu(i,t,e,r){let o=r*t/100,n=o*(Math.abs(e)/Math.abs(t)),s=new Wu(o/t,n/e),a=i.points.map(l=>{let c=l.clone();return c.uuid=qu.generateUUID(),c}).reverse();return a.forEach(l=>{l.position.multiply(s);let c=l.controls[0].position.clone().multiply(s),h=l.controls[1].position.clone().multiply(s);l.controls[0].position.copy(h),l.controls[1].position.copy(c)}),a}import{BufferGeometry as Nv,Float32BufferAttribute as Al,Vector3 as Qu}from"three";var Zu=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var a,l,c;let e=Object.assign({},(a=t==null?void 0:t.parameters)!=null?a:{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},i.parameters),r=Math.abs(e.width),o=Math.abs((l=e.height)!=null?l:r),n=Math.abs((c=e.depth)!=null?c: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 sn(!1,t,e,r,o,n,s,a,l,c,h,p);return Object.assign(u,{userData:H(I({},i),{type:"HelixGeometry"})})}},sn=class extends Nv{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 m=t&&s===1;m&&(u=0),p>100&&(p=100);let f=()=>new Qu,g=new Qu,v=f(),y=f(),b=f(),A,N,S,k,T,d,O,x,L=f(),C=f(),P=f(),$=f(),Y=f(),oe=f(),ae=f(),ne=f(),ge=r-2*l+.001,j=ge/s,R=Math.ceil(a*s),B=R+1,E=ge/R,D=-ge/2,_=h+1,W=2*Math.PI/h,K=Math.PI/2/u,G=.01,V=Math.min((1-p/100)*l,l-G),z=l-V,U=0,se=2,q=u*se+se,J=_*q/se,X=J+_*B,Q=_*(B+q),[Z,le,ie]=[3,3,2].map(ke=>Array(Q*ke).fill(0)),pe=[],Ge=n-l;function xe(ke,xt){let zt=Math.PI/2;d=xt*E,x=2*Math.PI*(d%j)/j+zt,d+=D,O=Math.sin(x)*Ge,T=Math.cos(x)*Ge,t?ke.set(T,O,d):ke.set(T,d,O)}xe(g,-1e-10),xe(v,0),L.copy(g),xe(g,1);let $e=g.distanceTo(v),Te=z+V,ht=$e*R+2*Te,Tt=V,Tr=ht-Te;for(let ke=0;ke<=R;ke++){xe(y,ke),ne.subVectors(y,L).normalize(),L.copy(y),oe.copy(y).setComponent(+t+1,0).normalize(),ae.crossVectors(ne,oe).normalize();let xt=ke===0,zt=ke===R,_n=xt?3*Math.PI/2:K,Gn=xt?Tt:Tr,zn=xt?_:X,Rn=xt?0:Q-_,Fn=ne.clone().multiplyScalar(xt?-z:z).add(y),Vn=ne.clone().multiplyScalar(xt?-1:1).normalize();for(let Ht=0;Ht<_;Ht++){let Ri=Ht*W;if(C.addVectors(g.copy(oe).multiplyScalar(l*Math.cos(Ri)),v.copy(ae).multiplyScalar(l*Math.sin(Ri))),P.copy(C).normalize(),xt||zt){m||(U=Rn+Ht,[0,1,2].forEach(pt=>{Z[U*3+pt]=Fn.getComponent(pt),le[U*3+pt]=Vn.getComponent(pt)}),ie[U*2]=+zt,ie[U*2+1]=Ht/h),v.copy(P).multiplyScalar(V),b.addVectors(y,v);for(let pt=0;pt<u;pt++){let Oo=pt*K+_n;$.addVectors(g.copy(ne).multiplyScalar(z*Math.sin(Oo)),v.copy(P).multiplyScalar(z*Math.cos(Oo))),Y.copy($).normalize(),v.addVectors(b,$),$.normalize(),U=zn+pt*_+Ht,[0,1,2].forEach(po=>{Z[U*3+po]=v.getComponent(po),le[U*3+po]=Y.getComponent(po)});let jn=+xt+Math.sin(Oo);ie[U*2]=(Gn+z*jn)/ht,ie[U*2+1]=Ht/h}}v.addVectors(y,C),U=J+ke*_+Ht,[0,1,2].forEach(pt=>{Z[U*3+pt]=v.getComponent(pt),le[U*3+pt]=P.getComponent(pt)}),ie[U*2]=(Te+ke*$e)/ht,ie[U*2+1]=Ht/h}}let gt=B+2*u+se,Nr=1,[co,ho]=m?[Nr,Nr+B-1]:[0,gt-1];for(let ke=co;ke<=ho-1;ke++){let xt=m&&ke===ho-1;for(let zt=0;zt<_-1;zt++)A=ke*_+zt,N=A+1,S=(xt?zt:A)+_,k=(xt?zt+1:N)+_,ke===0?pe.push(N,k,S):ke===gt-2?pe.push(A,N,S):pe.push(A,N,S,N,k,S)}this.setIndex(pe),this.setAttribute("position",new Al(Z,3)),this.setAttribute("normal",new Al(le,3)),this.setAttribute("uv",new Al(ie,2))}};import{IcosahedronBufferGeometry as Mv}from"three";var em=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,detail:0,corner:0,cornerSides:4},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 an(t*.5,n,s):new Mv(t*.5,o);return a.scale(1,e/t,r/t),Object.assign(a,{userData:H(I({},i),{type:"IcosahedronGeometry"})})}},an=class extends Qr{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 an(t.radius,t.corner,t.cornerSides)}};import{LatheBufferGeometry as Pv,Shape as Ov}from"three";var tm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s,a;((o=(r=i.parameters)==null?void 0:r.points)!=null?o:[]).forEach(l=>{Array.isArray(l)&&(l.x=l[0],l.y=l[1])});let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{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((s=e.height)!=null?s:e.width),depth:Math.abs((a=e.depth)!=null?a:e.width)})}}static build(i){let{points:t,segments:e,verticalSegments:r}=i.parameters,o=new Ov;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 Pv(o.extractPoints(r).shape,e);return n.rotateZ(Math.PI),Object.assign(n,{userData:H(I({},i),{type:"LatheGeometry"})})}};import{BufferGeometry as om,BufferGeometryLoader as Gv,Vector3 as zv,BoxBufferGeometry as im}from"three";import{BufferGeometry as Iv,Vector2 as Dl,Vector3 as rm}from"three";import{Geometry as Av,Face3 as Dv}from"three/examples/jsm/deprecated/Geometry.js";var Bv=["a","b","c"];function Ev(i,t){switch(t){case"c":return i.c;case"b":return i.b;case"a":default:return i.a}}function Bl(i,t,e){let r=Math.min(i,t),o=Math.max(i,t),n=r+"_"+o;return e.get(n)}function El(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 _v(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],El(s.a,s.b,i,r,s,e),El(s.b,s.c,i,r,s,e),El(s.c,s.a,i,r,s,e)}function ea(i,t,e,r,o){i.push(new Dv(t,e,r,void 0,void 0,o))}function hi(i,t){return Math.abs(t-i)/2+Math.min(i,t)}function ta(i,t,e,r){i.push([t.clone(),e.clone(),r.clone()])}var ra=class{constructor(t=1){this.subdivisions=t}modify(t){t instanceof Iv?t=new Av().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 rm,r,o,n,s,a,l=t.vertices,c=t.faces,h=t.faceVertexUvs[0],p=h!==void 0&&h.length>0,u=[],m=new Map;_v(l,c,u,m);let f=[],g,v,y,b,A,N,S;for(let G of Array.from(m.keys())){for(v=m.get(G),y=new rm,A=3/8,N=1/8,S=v.faces.length,S!=2&&(A=.5,N=0,S!=1),y.addVectors(v.a,v.b).multiplyScalar(A),e.set(0,0,0),s=0;s<S;s++){for(b=v.faces[s],a=0;a<3&&(g=l[Ev(b,Bv[a])],!(g!==v.a&&g!==v.b));a++);g&&e.add(g)}e.multiplyScalar(N),y.add(e),v.newEdge=f.length,f.push(y)}let k,T,d,O,x,L,C,P=[];for(o=0,n=l.length;o<n;o++){for(L=l[o],x=u[o].edges,r=x.length,r==3?k=3/16:r>3&&(k=3/(8*r)),T=1-r*Number(k),d=k,r<=2&&(r==2?(T=3/4,d=1/8):r==1||r==0),C=L.clone().multiplyScalar(T),e.set(0,0,0),s=0;s<r;s++)O=x[s],g=O.a!==L?O.a:O.b,e.add(g);e.multiplyScalar(Number(d)),C.add(e),P.push(C)}let $=P.concat(f),Y=P.length,oe,ae,ne,ge=[],j=[],R,B,E,D,_=new Dl,W=new Dl,K=new Dl;for(o=0,n=c.length;o<n;o++)b=c[o],oe=Number(Bl(b.a,b.b,m).newEdge)+Y,ae=Number(Bl(b.b,b.c,m).newEdge)+Y,ne=Number(Bl(b.c,b.a,m).newEdge)+Y,ea(ge,oe,ae,ne,b.materialIndex),ea(ge,b.a,oe,ne,b.materialIndex),ea(ge,b.b,ae,oe,b.materialIndex),ea(ge,b.c,ne,ae,b.materialIndex),p&&(R=h[o],B=R[0],E=R[1],D=R[2],_.set(hi(B.x,E.x),hi(B.y,E.y)),W.set(hi(E.x,D.x),hi(E.y,D.y)),K.set(hi(B.x,D.x),hi(B.y,D.y)),ta(j,_,W,K),ta(j,B,_,K),ta(j,E,W,_),ta(j,D,K,W));t.vertices=$,t.faces=ge,p&&(t.faceVertexUvs[0]=j)}};var it=new zv,nm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s;let e=(s=(n=i.geometry)!=null?n:t==null?void 0:t.geometry)!=null?s:new om().copy(new im(100,100,100)),r;t===void 0?(e.computeBoundingBox(),e.boundingBox.getSize(it),r={width:it.x,height:it.y,depth:it.z,subdivisions:0}):r=t.parameters;let o=I(I({},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){var l;let{width:t,height:e,depth:r,subdivisions:o}=i.parameters,n=(l=i.geometry)!=null?l:new om().copy(new im(100,100,100)),s=n.userData.parameters;s===void 0?(n.computeBoundingBox(),n.boundingBox.getSize(it)):it.set(s.width,s.height,s.depth),(t!==it.x||e!==it.y||r!==it.z)&&n.scale(it.x===0?1:t/it.x,it.y===0?1:e/it.y,it.z===0?1:r/it.z);let a=n.originalGeometry;return o>0?(a===void 0||(s==null?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:H(I({},i),{type:"NonParametricGeometry"})})}static loadFromUrl(i,t,e){new Gv(e).load(i,o=>{let n=this.normalizeInputs({geometry:o});o.boundingBox.getSize(it);let s=100/it.x;Object.assign(n.parameters,{width:100,height:it.y*s,depth:it.z*s}),t(this.build(n))})}};var sm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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,m=2*Math.PI/r;for(let g=0;g<r;g++){let v=m*g,y=p+Math.sin(v)*c,b=u+Math.cos(v)*h;l.addPoint(l.createPoint(y,b))}l.isClosed=!0;for(let g=0,v=l.points.length;g<v;g++)l.points[g].roundness=o;l.roundness=o,l.update();let f=ut.create({shape:l,parameters:{roundness:o,depth:n,extrudeBevelSize:s,extrudeBevelSegments:a}});return Object.assign(f,{userData:H(I({},i),{type:"PolygonGeometry"})})}};import{BufferGeometry as Rv,Float32BufferAttribute as _l,Vector2 as yr,Vector3 as lt}from"three";var am=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,radialSegments:4,heightSegments:1,cornerRadius:0,cornerSegments:8,openEnded:!1},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 zl(t*.5,e,o,n,s,a,l);return c.scale(1,1,r/t),Object.assign(c,{userData:H(I({},i),{type:"PyramidGeometry"})})}};function ln(i,t,e){e.x=i.x*t.x,e.y=i.y,e.z=i.x*t.y}function Gl(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 Fv(i,t,e){let r=i.clone().sub(t),o=e.clone().sub(t);return r.projectOnVector(o),r.add(t)}var zl=class extends Rv{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,m=e/2,f=Math.PI/r,g=t*Math.cos(Math.PI/r),v=2*Math.PI/r,y=(r-2)*Math.PI/r,b=Math.PI-y,A=new lt(0,-m,0),N=new lt(0,m,0),S=new yr(t,-m),k=new yr(g,-m),T=new yr(0,N.y).sub(k),d=new yr(0,N.y).sub(S),O=new yr(T.y,-T.x).normalize(),x=new yr(d.y,-d.x).normalize(),C=t*Math.cos(Math.PI/r)*Math.tan((Math.PI-T.angle())/2)-1e-8;s=Math.min(s,C);let P;{let j=new lt(O.x,O.y,0),R=new lt(Math.cos(v)*j.x,j.y,Math.sin(v)*j.x);P=j.angleTo(R)}let $=s/Math.tan((Math.PI-T.angle())/2),Y=s/Math.tan((Math.PI-P)/2),oe=new lt;if(!n){c.push(A.x,A.y,A.z),h.push(0,-1,0),p.push(0,0);let j=u++,R=[],B=S.clone(),E=$/Math.cos(Math.PI/r);B.x-=E;for(let D=0;D<r;D++){let _=D/r*Math.PI*2+f,W=new yr(Math.sin(_),Math.cos(_));ln(B,W,oe),c.push(oe.x,oe.y,oe.z),h.push(0,-1,0),p.push(0,0),R.push(u++)}for(let D=0;D<R.length;D++)l.push(R[D],j,R[(D+1)%R.length])}let ae=[];{let j=new lt,R=new lt,B=new lt,E=new lt,D=new lt,_=new lt;for(let W=0;W<r;W++){let K=W/r*Math.PI*2+f,G=(W+.5)/r*Math.PI*2+f,V=(W+1)/r*Math.PI*2+f,z=new yr(Math.sin(K),Math.cos(K)),U=new yr(Math.sin(G),Math.cos(G)),se=new yr(Math.sin(V),Math.cos(V));ln(S,z,R),ln(S,se,B),ln(O,U,j),Gl(N,R,B,Y,Y,E),c.push(E.x,E.y,E.z),Gl(R,N,B,Y,$,D),c.push(D.x,D.y,D.z),Gl(B,R,N,$,Y,_),c.push(_.x,_.y,_.z),h.push(j.x,j.y,j.z),h.push(j.x,j.y,j.z),h.push(j.x,j.y,j.z),p.push(0,0),p.push(0,0),p.push(0,0);let q=u++,J=u++,X=u++;if(l.push(q,J,X),s>0){{let le=R.clone().add(B).multiplyScalar(.5),ie=N.clone().sub(le).normalize(),Ge=A.clone().sub(le).normalize().add(ie).normalize().multiplyScalar(-1),xe=_.clone().sub(D);ne(le,xe,Ge,T.angle())}let Q,Z;{let le=new lt;ln(x,se,le);let ie=_.clone().add(E).multiplyScalar(.5);ie=Fv(ie,B,N);let pe=_.clone().sub(E);[Q,Z]=ne(ie,pe,le,P,E.y)}{let le=Q,ie=le.clone().setY(0).normalize(),pe=new lt(0,-1,0),Ge=ie.clone().cross(pe);ge(le,ie,pe,Ge)}ae.concat(Z);{let le=T.angle(),ie=Math.PI-le,pe=N.clone();pe.y-=s/Math.sin(le-Math.PI/2);let Ge=new lt,xe=[];for(let Te=0;Te<a;Te++){let ht=[],Tt=Math.PI/2-ie*Te/a,Tr=Math.cos(Tt),gt=Math.sin(Tt),Nr=G;for(let co=0;co<=Te;co++){let ho=Math.cos(Nr),ke=Math.sin(Nr);j.x=Tr*ke,j.y=gt,j.z=Tr*ho,Ge.copy(pe).addScaledVector(j,s),c.push(Ge.x,Ge.y,Ge.z),h.push(j.x,j.y,j.z),p.push(0,0),ht.push(u++),Nr+=Math.PI*2/Te/r}xe.push(ht)}Z.reverse(),xe.push(Z);let $e=xe.length-1;for(let Te=0;Te<$e;Te++){let ht=xe[Te],Tt=xe[Te+1],Tr=ht.length-1;l.push(Tt[1],ht[0],Tt[0]);for(let gt=1;gt<=Tr;gt++)l.push(ht[gt],ht[gt-1],Tt[gt]),l.push(Tt[gt+1],ht[gt],Tt[gt])}}}}}this.setIndex(l),this.setAttribute("position",new _l(c,3)),this.setAttribute("normal",new _l(h,3)),this.setAttribute("uv",new _l(p,2));function ne(j,R,B,E,D){let _=-E/2,W=(Math.PI-E)/2,K=R.clone().normalize().cross(B);j.addScaledVector(B,-s/Math.sin(W));let G=new lt,V=new lt,z=1,U=u,se=[];for(let q=0;q<=a;q++){let J=_+q/a*E;V.set(0,0,0),V.addScaledVector(K,Math.sin(J)),V.addScaledVector(B,Math.cos(J));for(let X=0;X<=z;X++){let Q=X/z-.5;if(G.copy(j),G.addScaledVector(R,Q),G.addScaledVector(V,s),D!=null){let Z=Math.max(0,G.y-D);G.addScaledVector(R,-Z/R.y)}c.push(G.x,G.y,G.z),h.push(V.x,V.y,V.z),p.push(0,0),X===0&&se.push(u),u++}}for(let q=0;q<a;q++)for(let J=0;J<z;J++){let X=U+J+(z+1)*q,Q=X+(z+1),Z=Q+1,le=X+1;l.push(X,Q,le),l.push(Q,Z,le)}return[j.clone().addScaledVector(R,.5),se]}function ge(j,R,B,E){let D=Math.PI/2,_=d.angle()-D,W=[],K=new lt,G=new lt;for(let z=0;z<=a;z++){let U=[],se=z/a;for(let q=0;q<=z;q++){let X=((z?q/z:0)-.5)*b,Q=Math.cos(X),Z=Math.sin(X),le=Math.atan(Math.tan(_)*Q),ie=(D+le)*se,pe=Math.cos(ie),Ge=Math.sin(ie);K.set(0,0,0),K.addScaledVector(R,Ge*Q),K.addScaledVector(B,pe),K.addScaledVector(E,Ge*Z),G.copy(j).addScaledVector(K,s),c.push(G.x,G.y,G.z),h.push(K.x,K.y,K.z),p.push(0,0),U.push(u++)}W.push(U)}let V=W.length-1;for(let z=0;z<V;z++){let U=W[z],se=W[z+1],q=U.length-1;l.push(U[0],se[1],se[0]);for(let J=1;J<=q;J++)l.push(U[J-1],U[J],se[J]),l.push(U[J],se[J+1],se[J])}}}};var oa=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var n,s,a,l;let e=Object.assign({},(n=t==null?void 0:t.parameters)!=null?n:{width:100,depth:0,cornerRadius:[0,0,0,0],cornerType:1,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters),r=Object.assign((s=t==null?void 0:t.ui)!=null?s:{enabledIndieCorners:!1},i.ui);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((a=e.height)!=null?a:e.width),depth:Math.abs((l=e.depth)!=null?l: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(N,S,k){return S>e&&k>r?Math.min(N*e/S,N*r/k):S>e?N*e/S:k>r?N*r/k:N}let m=[];m[0]=o[0]===0?0:u(o[0],o[0]+o[3],o[0]+o[1]),m[1]=o[1]===0?0:u(o[1],o[1]+o[2],o[1]+o[0]),m[2]=o[2]===0?0:u(o[2],o[2]+o[1],o[2]+o[3]),m[3]=o[3]===0?0:u(o[3],o[3]+o[0],o[3]+o[2]);let f=h.x,g=p.x,v=p.y,y=h.y;t.addPoint(t.createPoint(f,v)),t.addPoint(t.createPoint(g,v)),t.addPoint(t.createPoint(g,y)),t.addPoint(t.createPoint(f,y)),t.isClosed=!0;let b=!0;for(let N=0,S=t.points.length;N<S;N++)t.points[N].roundness=m[N],N>0&&m[N]!==m[N-1]&&(b=!1);b&&(t.roundness=m[0]),t.useCubicForRoundedCorners=n!==1,t.update();let A=ut.create({shape:t,parameters:{depth:s,extrudeBevelSize:a,extrudeBevelSegments:l}});return Object.assign(A,{userData:H(I({},i),{type:"RectangleGeometry"})})}};import{SphereBufferGeometry as Vv}from"three";var lm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:Math.PI},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n: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 Vv(.5*t,o,n,s,a,l,c);return h.scale(1,e/t,r/t),Object.assign(h,{userData:H(I({},i),{type:"SphereGeometry"})})}};import{PlaneBufferGeometry as jv}from"three";var cm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0,widthSegments:8,heightSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:0})}}static build(i){let{width:t=100,height:e=t,widthSegments:r=8,heightSegments:o=8}=i.parameters,n=new jv(t,e,r,o);return n.scale(1,1,1),Object.assign(n,{userData:H(I({},i),{type:"PlaneGeometry"})})}};import{BufferGeometry as Uv,Float32BufferAttribute as Rl,Vector3 as kv}from"three";var hm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,angle:90,cornerRadius:24,cornerSegments:8},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width)})}}static build(i){let{width:t,height:e,depth:r,angle:o,cornerRadius:n,cornerSegments:s}=i.parameters,a=new Fl(t,e,r,o,n,s);return Object.assign(a,{userData:H(I({},i),{type:"BackdropGeometry"})})}},Fl=class extends Uv{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=(G=0,V=0,z=0)=>new kv(G,V,z),m=u(),f=u(),[g,v,y]=[e/2,t/2,r/2],b=-v,A=+v,[N,S,k]=[u(b,-g,+y),u(b,-g,-y),u(b,+g,-y)],[T,d]=[G=>Math.sin(G),G=>Math.cos(G)],O=(G,V=!1)=>Math.sin(G-Math.PI/(1+ +V)),x=(G,V=!1)=>Math.cos(G-Math.PI/(1+ +V));k.y=T(o)*e-g;let L=d(o)*e-y;o<=Math.PI/2?k.z=Math.min(L,N.z-h):S.z=Math.min(S.z-L-y,N.z-h),m.subVectors(N,S),f.subVectors(k,S);let C=Math.min(m.length(),f.length())*n/100,P=C*Math.tan(o/2),$=C/Math.cos(o/2),Y=m.clone().normalize().add(f.normalize()).setLength($).add(S);m.set(0,O(o,!0),x(o,!0)),p.push([k,m.clone()]);let oe=(Math.PI-o)/s;for(let G=0;G<=s;G++){let V=Math.PI/2+o+G*oe;m.set(0,T(V)*P,d(V)*P),m.add(Y),f.set(0,O(V),x(V)),p.push([m.clone(),f.clone()])}p.push([N,u(0,1,0)]);let ae=Math.sin(oe/2)*P*2,ne=p.length-1,ge=p[0][0].distanceTo(p[1][0]),j=p[ne-1][0].distanceTo(p[ne][0]),R=ge+ae*s+j;p[0].push(1);for(let G=0;G<=s;G++)p[G+1].push(1-(ge+G*ae)/R);p[ne].push(0);let[B,E,D]=p[0],_,W,K;for(let G=1;G<p.length;G++)[_,W,K]=p[G],a.push(b,B.y,B.z,b,_.y,_.z,A,B.y,B.z,A,B.y,B.z,b,_.y,_.z,A,_.y,_.z),l.push(0,E.y,E.z,0,W.y,W.z,0,E.y,E.z,0,E.y,E.z,0,W.y,W.z,0,W.y,W.z),c.push(0,D,0,K,1,D,1,D,0,K,1,K),[B,E,D]=[_,W,K];this.setAttribute("position",new Rl(a,3)),this.setAttribute("normal",new Rl(l,3)),this.setAttribute("uv",new Rl(c,2))}};var pm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,innerRadiusPercent:38.19,spikes:5,cornerRadius:0,angle:360,extrudeBevelSize:0,extrudeBevelSegments:1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width),depth:Math.abs((s=e.depth)!=null?s: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,m=0,f=0,g=s*Math.PI/360/o,v=Math.PI/2*3*-1,y=p*r/100,b=u*r/100;if(o===3&&r===50){g=2*Math.PI/o;for(let N=0;N<o;N++){let S=g*N,k=m+Math.sin(S)*p,T=f+Math.cos(S)*u;h.addPoint(h.createPoint(k,T))}}else for(let N=0;N<o;N++){let S=m+Math.cos(v)*p,k=f+Math.sin(v)*u;h.addPoint(h.createPoint(S,k)),v+=g,S=m+Math.cos(v)*y,k=f+Math.sin(v)*b,N<=o,h.addPoint(h.createPoint(S,k)),v+=g}h.isClosed=!0;for(let N=0,S=h.points.length;N<S;N++)h.points[N].roundness=n;h.roundness=n,h.update();let A=ut.create({shape:h,parameters:{roundness:n,depth:a,extrudeBevelSize:l,extrudeBevelSegments:c}});return Object.assign(A,{userData:H(I({},i),{type:"StarGeometry"})})}};import{PlaneBufferGeometry as Hv}from"three";var ia=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{width:100,depth:0},i.parameters);return{parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:0)})}}static build(i){let{width:t,height:e}=i.parameters,r=new Hv(t,e);return Object.assign(r,{userData:H(I({},i),{type:"TextFrameGeometry"})})}};var um=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var s,a,l;let e=Object.assign({},(s=t==null?void 0:t.parameters)!=null?s:{width:100,radialSegments:32,tubularSegments:64,arc:Math.PI*2,cornerRadius:30,cornerSegments:8},i.parameters),r=Math.abs(e.width),o=Math.abs((a=e.height)!=null?a:e.width),n=Math.abs((l=e.depth)!=null?l: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=qv(t,e,r,t*.5,s,n,0,0,o,a,l);return c.scale(1,e/t,1),Object.assign(c,{userData:H(I({},i),{type:"TorusGeometry"})})}};function qv(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 sn(!0,i,t,e,r,o,n,s,a,l,c,h)}import{TorusKnotBufferGeometry as Wv}from"three";var mm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var r,o,n,s;let e=Object.assign({},(r=t==null?void 0:t.parameters)!=null?r:{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((o=e.height)!=null?o:e.width),depth:Math.abs((n=e.depth)!=null?n:e.width),tube:(s=e.tube)!=null?s: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 Wv(a,e,r,o,n,s);return Object.assign(l,{userData:H(I({},i),{type:"TorusKnotGeometry"})})}};var dm=class{static create(i){return this.build(this.normalizeInputs(i))}static normalizeInputs(i,t){var o,n,s;let e=Object.assign({},(o=t==null?void 0:t.parameters)!=null?o:{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1,isRect:!1},i.parameters);return{shape:i.shape&&i.shape instanceof Pe?i.shape:new Pe,parameters:Object.assign(e,{width:Math.abs(e.width),height:Math.abs((n=e.height)!=null?n:e.width*(e.isRect?1:Math.sqrt(3)/2)),depth:Math.abs((s=e.depth)!=null?s: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,m=l.points.length;u<m;u++)l.points[u].roundness=r;l.roundness=r,l.update();let p=ut.create({shape:l,parameters:{roundness:r,depth:o,extrudeBevelSize:n,extrudeBevelSegments:s}});return Object.assign(p,{userData:H(I({},i),{type:"TriangleGeometry"})})}};var cn={};Nc(cn,{addBarycentricAttribute:()=>Xv,fixUvs:()=>Zv,loadFromUrl:()=>Qv,resizeGeometry:()=>Kv,roundShapePolygon:()=>Yv});import{BufferGeometryLoader as $v,Float32BufferAttribute as Jv,Vector3 as Vl}from"three";var fm=function(i,t){let e=t.x-i.x,r=t.y-i.y,o=Math.sqrt(e*e+r*r),n=e/o,s=r/o,a=Math.atan2(s,n);return{x:e,y:r,len:o,nx:n,ny:s,ang:a}},Yv=(i,t,e)=>{let r,o,n,s,a,l,c,h,p,u,m,f,g,v,y=t.length;for(s=t[y-2],i.curves=[],r=1;r<y-1;r++){a=t[r%y],l=t[(r+1)%y];let b=fm(a,s),A=fm(a,l);c=b.nx*A.ny-b.ny*A.nx,h=b.nx*A.nx-b.ny*-A.ny,m=Math.asin(c),p=1,u=!1,h<0?m<0?m=Math.PI+m:(m=Math.PI-m,p=-1,u=!0):m>0&&(p=-1,u=!0),f=m/2,v=Math.abs(Math.cos(f)*e/Math.sin(f)),v>Math.min(b.len/2,A.len/2)?(v=Math.min(b.len/2,A.len/2),g=Math.abs(v*Math.sin(f)/Math.cos(f))):g=e,o=a.x+A.nx*v,n=a.y+A.ny*v,o+=-A.ny*g*p,n+=A.nx*g*p,i.absarc(o,n,g,b.ang+Math.PI/2*p,A.ang-Math.PI/2*p,u),s=a,a=l}i.closePath()},Kv=(i,{width:t,height:e,depth:r})=>{t=Math.abs(t),e=Math.abs(e),r=Math.abs(r);let o=i.userData.parameters,n,s,a;t===0?(t=o.width,n=1):n=t/o.width,e===0?(e=o.height,s=1):s=e/o.height,r===0?(r=o.depth,a=1):a=r/o.depth,i.scale(n,s,a),o.width=t,o.height=e,o.depth=r},Xv=(i,t)=>{let e=[new Vl(1,0,0),new Vl(0,1,0),new Vl(0,0,1)],r=i.attributes.position,o=new Float32Array(r.count*3);for(let n=0,s=r.count;n<s;n++)e[n%3].toArray(o,n*3);i.setAttribute(t,new Jv(o,3))},Qv=i=>new Promise(t=>{new $v().load(i,r=>t(r))}),Zv=(i,t,e)=>{let r=i.getAttribute("uv");if(r)for(let o=0;o<r.count;o++){let n=r.getX(o),s=r.getY(o);r.setXY(o,(n+t/2)/t,1-(s-e/2)/e*-1)}};import{BufferGeometry as Jm,BufferAttribute as Ym,Uint32BufferAttribute as sc,Float32BufferAttribute as ac,Matrix4 as lw,Vector3 as Ca}from"three";var eS,na=new Promise(i=>{eS=i});import{BufferGeometryLoader as sw}from"three";import{DoubleSide as rw,EventDispatcher as ow,Matrix3 as iw,Vector3 as nc}from"three";import{NormalBlending as wS,ShaderMaterial as LS,FrontSide as CS}from"three";import{CubeReflectionMapping as mS,CubeRefractionMapping as dS,CubeUVReflectionMapping as fS,LinearEncoding as vm,sRGBEncoding as yS}from"three";var hn=class{constructor(t){t=t!=null?t:{},this.name=t.name,this.type=t.type,this.node=t.node,this.size=t.size,this.needsUpdate=t.needsUpdate}get value(){return this.node.value}set value(t){this.node.value=t}};import{MathUtils as tS}from"three";var ue=class{constructor(t){this.hashProperties=void 0;this.isNode=!0;this.shortcuts={};this.uuid=tS.generateUUID(),this.type=t,this.name="",this.userData={}}analyze(t,e){e=e!=null?e:{},t.analyzing=!0,this.build(t.addFlow(e.slot,e.cache,e.context),"v4"),t.clearVertexNodeCode(),t.clearFragmentNodeCode(),t.removeFlow(),t.analyzing=!1}analyzeAndFlow(t,e,r){return r=r!=null?r:{},this.analyze(t,r),this.flow(t,e,r)}flow(t,e,r){r=r!=null?r:{},t.addFlow(r.slot,r.cache,r.context);let o={result:this.build(t,e),code:t.clearNodeCode(),extra:t.context.extra};return t.removeFlow(),o}build(t,e,r){e=e!=null?e:this.getType(t,e);let o=t.getNodeData(r!=null?r:this);return t.analyzing&&this.appendDepsNode(t,o,e),t.nodes.indexOf(this)===-1&&t.nodes.push(this),this.updateFrame!==void 0&&t.updaters.indexOf(this)===-1&&t.updaters.push(this),this.generate(t,e,r)}updateFrame(t){}generateReadonly(t,e,r,o,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}getJSONNode(t){if((t==null?void 0:t.materials)&&(t==null?void 0:t.materials[this.uuid])!==void 0)return t.materials[this.uuid]}getHash(){let t="{",e,r;for(e in this)r=this[e],r instanceof ue&&(t+='"'+e+'":'+r.getHash()+",");if(this.hashProperties)for(let o=0;o<this.hashProperties.length;o++)e=this.hashProperties[o],r=this[e],t+='"'+e+'":"'+String(r)+'",';return t+='"id":"'+this.uuid+'"}',t}copy(t){return this.name=t.name,t.type&&(this.type=t.type),t.frameId&&(this.frameId=t.frameId),t.hashProperties&&(this.hashProperties=t.hashProperties.map(e=>e)),this.userData=JSON.parse(JSON.stringify(t.userData)),this.shortcuts=JSON.parse(JSON.stringify(t.shortcuts)),this}clone(){return new this.constructor().copy(this)}createJSONNode(t){let e=t===void 0||typeof t=="string";if(typeof this.type!="string")throw new Error("Node does not allow serialization.");let r={};return r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),JSON.stringify(this.userData)!=="{}"&&(r.userData=this.userData),!e&&t&&(t.nodes[this.uuid]=r),r}toJSON(t){var e;return(e=this.getJSONNode(t))!=null?e:this.createJSONNode(t)}fromJSON(t,e){return this.uuid=t.uuid,this.type=t.type,t.name&&(this.name=t.name),t.userData&&(this.userData=t.userData),this}};var jl=class{constructor(){this.nodes={};this.keywords={}}add(t){this.nodes[t.name]=t}addKeyword(t,e,r){r=r!==void 0?r:!0,this.keywords[t]={callback:e,cache:r}}remove(t){delete this.nodes[t.name]}removeKeyword(t){delete this.keywords[t]}get(t){return this.nodes[t]}getKeyword(t,e){return this.keywords[t].callback(e)}getKeywordData(t){return this.keywords[t]}contains(t){return this.nodes[t]!==void 0}containsKeyword(t){return this.keywords[t]!==void 0}},nt=new jl;import{Vector2 as ym}from"three";import{MathUtils as rS}from"three";var de=class extends ue{constructor(e,r){super(e);this.scope="";r=r!=null?r:{},this.shared=r.shared!==void 0?r.shared:!0,this.unique=r.unique!==void 0?r.unique:!1}build(e,r,o,n){if(r=r!=null?r:this.getType(e),this.getShared(e,r)){let s=this.getUnique(e,r);s&&this.uuid===void 0&&(this.uuid=rS.generateUUID()),o=e.getUUID(o!=null?o:this.getUUID(),!s);let a=e.getNodeData(o),l=a.output||this.getType(e);if(e.analyzing)return(a.deps||0)>0||this.getLabel()?(this.appendDepsNode(e,a,r),this.generate(e,r,o)):super.build(e,r,o);if(s)return a.name=a.name||super.build(e,r,o),a.name;if(!this.getLabel()&&(!this.getShared(e,l)||e.context.ignoreCache||a.deps===1))return super.build(e,r,o);o=this.getUUID(!1);let c=this.getTemp(e,o);if(c)return e.format(c,l,r);{c=super.generate(e,r,o,a.output,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!=null?o:this.uuid,e.getTempVar(o,n!=null?n:this.getType(e),s,this.getLabel()).name}};var Fe=class extends de{constructor(e,r){r=r!=null?r:{},r.shared=r.shared!==void 0?r.shared:!1;super(e,r);this.readonly=!1}setReadonly(e){return this.readonly=e,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}createJSONNode(e){let r=super.createJSONNode(e);return this.readonly===!0&&(r.readonly=this.readonly),r}fromJSON(e,r){return super.fromJSON(e,r),e.readonly!==void 0&&this.setReadonly(e.readonly),this}generate(e,r,o,n,s,a){o=e.getUUID(o!=null?o:this.getUUID()),n=n!=null?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 wt=class extends Fe{constructor(e=0,r){super("v2");this.nodeType="Vector2";this.value=e instanceof ym?e:new ym(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}};import{Vector3 as gm}from"three";var Lt=class extends Fe{constructor(e=0,r,o){super("v3");this.nodeType="Vector3";this.value=e instanceof gm?e:new gm(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}};import{Color as oS}from"three";var Et=class extends oS{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}};var _r=class extends Fe{constructor(e){super("v4");this.nodeType="Vector4";this.value=e instanceof Et?e:new Et(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 iS=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,xm=/[a-z_0-9]+/gi,re=class extends de{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=xm.exec(this.src);)h.push(a);for(let p=0;p<h.length;p++){let u=h[p],m=u[0],f=this.isMethod?!this.getInputByName(m):!0,g=m;if(this.keywords[m]||this.useKeywords&&f&&nt.containsKeyword(m)){let v=this.keywords[m];if(!v){let y=nt.getKeywordData(m);y.cache&&(v=e.keywords[m]),v=v||nt.getKeyword(m,e),y.cache&&(e.keywords[m]=v)}g=v.build(e)}m!==g&&(c=c.substring(0,u.index+l)+g+c.substring(u.index+m.length+l),l+=g.length-m.length),this.getIncludeByName(g)===void 0&&nt.contains(g)&&e.include(nt.get(g))}return r==="source"?c:this.isMethod?(this.isInterface||e.include(this,void 0,c),this.name):e.format("( "+c+" )",this.getType(e),r)}parse(e,r,o,n){if(this.src=e||"",this.includes=r!=null?r:[],this.extensions=o!=null?o:{},this.keywords=n!=null?n:{},this.isMethod){let s=iS.exec(this.src);if(this.inputs=[],s&&s.length==4){this.type=s[1],this.name=s[2];let a=s[3].match(xm);if(a){let l=0;for(;l<a.length;){let c=a[l++],h;c==="in"||c==="out"||c==="inout"?h=a[l++]:(h=c,c="");let p=a[l++];this.inputs.push({name:p,type:h,qualifier:c})}}this.isInterface=this.src.indexOf("{")===-1}else this.type="",this.name=""}}copy(e){return super.copy(e),this.isMethod=e.isMethod,this.useKeywords=e.useKeywords,e.type!==void 0&&(this.type=e.type),this.parse(e.src,e.includes,e.extensions,e.keywords),this}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){r=this.createJSONNode(e),r.src=this.src,r.isMethod=this.isMethod,r.useKeywords=this.useKeywords,this.isMethod||(r.type=this.type),r.extensions=JSON.parse(JSON.stringify(this.extensions));let n={};for(let s in this.keywords)n[s]=this.keywords[s].toJSON(e).uuid;if(r.keywords=n,(o=this.includes)!=null&&o.length){let s=[];for(let a=0;a<this.includes.length;a++)s.push(this.includes[a].toJSON(e).uuid);r.includes=s}r.isMethod=this.isMethod,r.inputs=this.inputs}return r.nodeType=this.nodeType,r}fromJSON(e,r){if(super.fromJSON(e,r),e.inputs!==void 0&&(this.inputs=e.inputs),e.isMethod!==void 0&&(this.isMethod=e.isMethod),e.src&&(this.src=e.src),e.isMethod&&(this.isMethod=e.isMethod),e.useKeywords&&(this.useKeywords=e.useKeywords),e.type&&(this.type=e.type),e.extensions&&(this.extensions=e.extensions),e.keywords&&r){this.keywords={};for(let o in e.keywords)this.keywords[o]=r.getNode(e.keywords[o])}return e.includes&&r&&(this.includes=e.includes.map(o=>r.getNode(o))),this}};var nS=/^([a-z_0-9]+)\s([a-z_0-9]+)\s?\=?\s?(.*?)(\;|$)/i,Ul=class extends de{constructor(e="",r){super();this.src="";this.useDefine=!1;this.nodeType="Const";this.parse(e||Ul.PI,void 0,void 0,void 0,r)}getType(e){return e.getTypeByFormat(this.type)}parse(e,r,o,n,s){this.src=e||"";let a,l,c="",h=nS.exec(e);this.useDefine=s!=null?s:this.src.charAt(0)==="#",h&&h.length>1?(l=h[1],a=h[2],c=h[3]):(a=this.src,l="f"),this.name=a,this.type=l,this.value=c}build(e,r){if(r==="source"){if(this.value)return this.useDefine?"#define "+this.name+" "+this.value:"const "+this.type+" "+this.name+" = "+this.value+";";if(this.useDefine)return this.src}return e.include(this),e.format(this.name,this.getType(e),r)}generate(e,r,o,n,s){return e.format(this.name,this.getType(e),r)}copy(e){return super.copy(e),this.parse(e.src,void 0,void 0,void 0,e.useDefine),this}},Ne=Ul;Ne.PI="PI",Ne.PI2="PI2",Ne.RECIPROCAL_PI="RECIPROCAL_PI",Ne.RECIPROCAL_PI2="RECIPROCAL_PI2",Ne.LOG2="LOG2",Ne.EPSILON="EPSILON";var sS=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.|
|
|
2
|
+
)*?)}`,"gim"),aS=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),pi=class extends de{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=sS.exec(e);if(r){let o=r[2],n;for(;n=aS.exec(o);)this.inputs.push({type:n[1],name:n[2]});this.name=r[1]}else this.name="";this.type=this.name}};var ui=class extends de{constructor(e){super("v2",{shared:!1});this.nodeType="UV";this.index=e!=null?e:0}generate(e,r){e.requires.uv[this.index]=!0;let o=this.index>0?this.index+1:"",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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.index=this.index),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.index&&(this.index=e.index),this}};nt.addKeyword("uv",function(){return new ui});nt.addKeyword("uv2",function(){return new ui(1)});import{LinearEncoding as lS,sRGBEncoding as cS}from"three";var wo=class extends de{constructor(e=new ue,r){super("v4");this.nodeType="ColorSpace";this.factor=new ue;this.input=e,this.method=r!=null?r:wo.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(e){switch(e){case lS:return["Linear"];case cS:return["sRGB"];default:return[]}}generate(e,r){var l;let o=this.input.build(e,"v4"),n=this.getType(e),s=wo.Nodes[this.method],a=e.include(s);if(a===wo.LINEAR_TO_LINEAR)return e.format(o,n,r);if(((l=s.inputs)==null?void 0:l.length)===2){let c=this.factor.build(e,"f");return e.format(a+"( "+o+", "+c+" )",n,r)}else return e.format(a+"( "+o+" )",n,r)}fromEncoding(e){let r=wo.getEncodingComponents(e);this.method="LinearTo"+r[0],this.factor=r[1]}fromDecoding(e){let r=wo.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}},Pt=wo;Pt.Nodes={LinearToLinear:new re(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(`
|
|
3
3
|
`)),sRGBToLinear:new re(["vec4 sRGBToLinear( in vec4 value ) {"," return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );","}"].join(`
|
|
4
4
|
`)),LinearTosRGB:new re(["vec4 LinearTosRGB( in vec4 value ) {"," return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );","}"].join(`
|
|
5
|
-
`))},Mt.LINEAR_TO_LINEAR="LinearToLinear",Mt.SRGB_TO_LINEAR="sRGBToLinear",Mt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends re{constructor(e="",r,o,n,s){super(e,s,n,o,r);this.nodeType="Expression"}};import{Texture as cS}from"three";var yr=class extends cS{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let o=this.image;if(Array.isArray(o)){t.images[o.uuid].url=[];for(let n=0;n<o.length;n++)t.images[o.uuid].url[n]=xm(o[n])}else t.images[o.uuid].url=xm(o)}return e}};function xm(i){return typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&i instanceof ImageBitmap?hS(i):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var ui;function hS(i){if(/^data:/i.test(i.src))return i.src;let t;if(i instanceof HTMLCanvasElement)t=i;else{ui===void 0&&(ui=document.createElement("canvas")),ui.width=i.width,ui.height=i.height;let r=ui.getContext("2d");i instanceof ImageData?r.putImageData(i,0,0):r.drawImage(i,0,0,i.width,i.height),t=ui}let e=i.src.startsWith("blob:")?i.fileName:i.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var Pt=class extends Fe{constructor(e=new yr,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r!=null?r:new pi,this.bias=o,this.project=n!==void 0?n:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){var p;if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),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},h=this.getType(e);return e.addContext(c),this.colorSpace=(p=this.colorSpace)!=null?p:new Mt(new Ee("",h)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,h),e.removeContext(),e.format(l,h,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};var te=class extends Fe{constructor(e){super("f");this.nodeType="Float";this.value=e!=null?e:0}generateReadonly(e,r,o,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 hn=class extends de{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r!=null?r:[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,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}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){let n=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,(o=n.inputs)!=null&&o.length){r.inputs={};for(let s=0;s<n.inputs.length;s++){let a=n.inputs[s],l=this.inputs[s];r.inputs[a.name]=l.toJSON(e).uuid}}}return r}};var Ul=class extends de{constructor(e=new ue,r=new ue,o=Ul.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let n=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+n+" "+this.op+" "+s+" )",o,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},Et=Ul;Et.ADD="+",Et.SUB="-",Et.MUL="*",Et.DIV="/";var De=class extends de{constructor(e=new ue,r=De.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 De.MIX:case De.CLAMP:case De.REFRACT:case De.SMOOTHSTEP:case De.FACEFORWARD:return 3;case De.MIN:case De.MAX:case De.MOD:case De.STEP:case De.REFLECT:case De.DISTANCE:case De.DOT:case De.CROSS:case De.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 De.LENGTH:case De.DISTANCE:case De.DOT:return"f";case De.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 De.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case De.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case De.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case De.STEP:o=this.a.build(e,a===1?"f":h),n=this.b.build(e,h);break;case De.MIN:case De.MAX:case De.MOD:o=this.a.build(e,h),n=this.b.build(e,l===1?"f":h);break;case De.REFRACT:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,"f");break;case De.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 m=this.getNumInputs(e);if(u.length!==m)throw Error(`Arguments not match used in "${this.method}". Require ${m}, 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 ue?e.b.clone():e.b,this.c=e.c instanceof ue?e.c.clone():e.c,this.method=e.method,this}},ye=De;ye.RAD="radians",ye.DEG="degrees",ye.EXP="exp",ye.EXP2="exp2",ye.LOG="log",ye.LOG2="log2",ye.SQRT="sqrt",ye.INV_SQRT="inversesqrt",ye.FLOOR="floor",ye.CEIL="ceil",ye.NORMALIZE="normalize",ye.FRACT="fract",ye.SATURATE="saturate",ye.SIN="sin",ye.COS="cos",ye.TAN="tan",ye.ASIN="asin",ye.ACOS="acos",ye.ARCTAN="atan",ye.ABS="abs",ye.SIGN="sign",ye.LENGTH="length",ye.NEGATE="negate",ye.INVERT="invert",ye.MIN="min",ye.MAX="max",ye.MOD="mod",ye.STEP="step",ye.REFLECT="reflect",ye.DISTANCE="distance",ye.DOT="dot",ye.CROSS="cross",ye.POW="pow",ye.MIX="mix",ye.CLAMP="clamp",ye.REFRACT="refract",ye.SMOOTHSTEP="smoothstep",ye.FACEFORWARD="faceforward";var mi=class extends de{constructor(e=new ue,r=new ue,o=new ue){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){var c,h,p,u;let s=new hn(mi.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=(c=this.colorSpaceTL)!=null?c:new Mt(new Ee("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=(h=this.colorSpaceTR)!=null?h:new Mt(new Ee("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=(p=this.colorSpaceBL)!=null?p:new Mt(new Ee("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=(u=this.colorSpaceBR)!=null?u:new Mt(new Ee("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ee(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ee(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ee(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ee(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ee("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=s,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,n=this.bias||e.context.roughness,s=new hn(mi.Nodes.roughnessToMip,[n]),a=new ye(s,mi.Nodes.m0,mi.Nodes.cubeUV_maxMipLevel,ye.CLAMP),l=new ye(a,ye.FLOOR),c=new ye(a,ye.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new Et(l,new te(1).setReadonly(!0),Et.ADD)),u=new ye(h,p,c,ye.MIX);return e.format(u.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},di=mi;di.Nodes=function(){let e=new hi(`struct TextureCubeUVData {
|
|
5
|
+
`))},Pt.LINEAR_TO_LINEAR="LinearToLinear",Pt.SRGB_TO_LINEAR="sRGBToLinear",Pt.LINEAR_TO_SRGB="LinearTosRGB";var Ee=class extends re{constructor(e="",r,o,n,s){super(e,s,n,o,r);this.nodeType="Expression"}};import{Texture as hS}from"three";var gr=class extends hS{toJSON(t){let e=super.toJSON(t),r=t===void 0||typeof t=="string";if(this.image!==void 0&&!r){let o=this.image;if(Array.isArray(o)){t.images[o.uuid].url=[];for(let n=0;n<o.length;n++)t.images[o.uuid].url[n]=bm(o[n])}else t.images[o.uuid].url=bm(o)}return e}};function bm(i){return typeof HTMLImageElement<"u"&&i instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&i instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&i instanceof ImageBitmap?pS(i):(console.warn("THREE.Texture: Unable to serialize Texture."),"")}var mi;function pS(i){if(/^data:/i.test(i.src))return i.src;let t;if(i instanceof HTMLCanvasElement)t=i;else{mi===void 0&&(mi=document.createElement("canvas")),mi.width=i.width,mi.height=i.height;let r=mi.getContext("2d");i instanceof ImageData?r.putImageData(i,0,0):r.drawImage(i,0,0,i.width,i.height),t=mi}let e=i.src.startsWith("blob:")?i.fileName:i.src;return/\.jpe?g$/i.test(e)?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}var Ot=class extends Fe{constructor(e=new gr,r,o,n){super("v4",{shared:!0});this.nodeType="Texture";this.value=e,this.uv=r!=null?r:new ui,this.bias=o,this.project=n!==void 0?n:!1}getTexture(e,r){return super.generate(e,r,this.value.uuid,"t")}generate(e,r){var p;if(r==="sampler2D")return this.getTexture(e,r);let o=this.getTexture(e,r),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},h=this.getType(e);return e.addContext(c),this.colorSpace=(p=this.colorSpace)!=null?p:new Pt(new Ee("",h)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(l),l=this.colorSpace.build(e,h),e.removeContext(),e.format(l,h,r)}copy(e){return super.copy(e),e.value.isRenderTargetTexture?this.value=e.value:this.value.copy(e.value),this.uv.copy(e.uv),e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,e.colorSpace?this.colorSpace?this.colorSpace.copy(e.colorSpace):this.colorSpace=e.colorSpace.clone():this.colorSpace=void 0,this.project=e.project,e.value.isRenderTargetTexture||(this.value.updateMatrix(),this.value.needsUpdate=!0),this}};var te=class extends Fe{constructor(e){super("f");this.nodeType="Float";this.value=e!=null?e:0}generateReadonly(e,r,o,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 pn=class extends de{constructor(e,r){super();this.inputs=[];this.nodeType="FunctionCall";this.value=e,this.inputs=r!=null?r:[]}getFunction(){return this.value}getType(e){return this.value.getType(e)}generate(e,r,o,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}toJSON(e){var o;let r=this.getJSONNode(e);if(!r){let n=this.value;if(r=this.createJSONNode(e),r.value=this.value.toJSON(e).uuid,(o=n.inputs)!=null&&o.length){r.inputs={};for(let s=0;s<n.inputs.length;s++){let a=n.inputs[s],l=this.inputs[s];r.inputs[a.name]=l.toJSON(e).uuid}}}return r}};var kl=class extends de{constructor(e=new ue,r=new ue,o=kl.ADD){super();this.nodeType="Operator";this.type=e.type,this.a=e,this.b=r,this.op=o}getType(e){let r=this.a.getType(e),o=this.b.getType(e);return e.isTypeMatrix(r)?"v4":e.getTypeLength(o)>e.getTypeLength(r)?o:r}generate(e,r){let o=this.getType(e);this.type=o;let n=this.a.build(e,o),s=this.b.build(e,o);return e.format("( "+n+" "+this.op+" "+s+" )",o,r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.op=e.op,this}},_t=kl;_t.ADD="+",_t.SUB="-",_t.MUL="*",_t.DIV="/";var De=class extends de{constructor(e=new ue,r=De.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 De.MIX:case De.CLAMP:case De.REFRACT:case De.SMOOTHSTEP:case De.FACEFORWARD:return 3;case De.MIN:case De.MAX:case De.MOD:case De.STEP:case De.REFLECT:case De.DISTANCE:case De.DOT:case De.CROSS:case De.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 De.LENGTH:case De.DISTANCE:case De.DOT:return"f";case De.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 De.NEGATE:return e.format("( -"+this.a.build(e,h)+" )",h,r);case De.INVERT:return e.format("( 1.0 - "+this.a.build(e,h)+" )",h,r);case De.CROSS:o=this.a.build(e,"v3"),n=this.b.build(e,"v3");break;case De.STEP:o=this.a.build(e,a===1?"f":h),n=this.b.build(e,h);break;case De.MIN:case De.MAX:case De.MOD:o=this.a.build(e,h),n=this.b.build(e,l===1?"f":h);break;case De.REFRACT:o=this.a.build(e,h),n=this.b.build(e,h),s=this.c.build(e,"f");break;case De.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 m=this.getNumInputs(e);if(u.length!==m)throw Error(`Arguments not match used in "${this.method}". Require ${m}, 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 ue?e.b.clone():e.b,this.c=e.c instanceof ue?e.c.clone():e.c,this.method=e.method,this}},ye=De;ye.RAD="radians",ye.DEG="degrees",ye.EXP="exp",ye.EXP2="exp2",ye.LOG="log",ye.LOG2="log2",ye.SQRT="sqrt",ye.INV_SQRT="inversesqrt",ye.FLOOR="floor",ye.CEIL="ceil",ye.NORMALIZE="normalize",ye.FRACT="fract",ye.SATURATE="saturate",ye.SIN="sin",ye.COS="cos",ye.TAN="tan",ye.ASIN="asin",ye.ACOS="acos",ye.ARCTAN="atan",ye.ABS="abs",ye.SIGN="sign",ye.LENGTH="length",ye.NEGATE="negate",ye.INVERT="invert",ye.MIN="min",ye.MAX="max",ye.MOD="mod",ye.STEP="step",ye.REFLECT="reflect",ye.DISTANCE="distance",ye.DOT="dot",ye.CROSS="cross",ye.POW="pow",ye.MIX="mix",ye.CLAMP="clamp",ye.REFRACT="refract",ye.SMOOTHSTEP="smoothstep",ye.FACEFORWARD="faceforward";var di=class extends de{constructor(e=new ue,r=new ue,o=new ue){super("v4");this.nodeType="TextureCubeUV";this.value=e,this.uv=r,this.bias=o}bilinearCubeUV(e,r,o,n){var c,h,p,u;let s=new pn(di.Nodes.bilinearCubeUV,[r,o,n]);this.colorSpaceTL=(c=this.colorSpaceTL)!=null?c:new Pt(new Ee("","v4")),this.colorSpaceTL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTL.input.parse(s.build(e)+".tl"),this.colorSpaceTR=(h=this.colorSpaceTR)!=null?h:new Pt(new Ee("","v4")),this.colorSpaceTR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceTR.input.parse(s.build(e)+".tr"),this.colorSpaceBL=(p=this.colorSpaceBL)!=null?p:new Pt(new Ee("","v4")),this.colorSpaceBL.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBL.input.parse(s.build(e)+".bl"),this.colorSpaceBR=(u=this.colorSpaceBR)!=null?u:new Pt(new Ee("","v4")),this.colorSpaceBR.fromDecoding(e.getTextureEncodingFromMap(this.value.value)),this.colorSpaceBR.input.parse(s.build(e)+".br");let a={include:e.isShader("vertex"),ignoreCache:!0};e.addContext(a),this.colorSpaceTLExp=new Ee(this.colorSpaceTL.build(e,"v4"),"v4"),this.colorSpaceTRExp=new Ee(this.colorSpaceTR.build(e,"v4"),"v4"),this.colorSpaceBLExp=new Ee(this.colorSpaceBL.build(e,"v4"),"v4"),this.colorSpaceBRExp=new Ee(this.colorSpaceBR.build(e,"v4"),"v4"),e.removeContext();let l=new Ee("mix( mix( cubeUV_TL, cubeUV_TR, cubeUV.f.x ), mix( cubeUV_BL, cubeUV_BR, cubeUV.f.x ), cubeUV.f.y )","v4");return l.keywords.cubeUV_TL=this.colorSpaceTLExp,l.keywords.cubeUV_TR=this.colorSpaceTRExp,l.keywords.cubeUV_BL=this.colorSpaceBLExp,l.keywords.cubeUV_BR=this.colorSpaceBRExp,l.keywords.cubeUV=s,l}generate(e,r){if(e.isShader("fragment")){let o=this.uv,n=this.bias||e.context.roughness,s=new pn(di.Nodes.roughnessToMip,[n]),a=new ye(s,di.Nodes.m0,di.Nodes.cubeUV_maxMipLevel,ye.CLAMP),l=new ye(a,ye.FLOOR),c=new ye(a,ye.FRACT),h=this.bilinearCubeUV(e,this.value,o,l),p=this.bilinearCubeUV(e,this.value,o,new _t(l,new te(1).setReadonly(!0),_t.ADD)),u=new ye(h,p,c,ye.MIX);return e.format(u.build(e),"v4",r)}else return console.warn("TextureCubeUVNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.uv.copy(e.uv),this.bias.copy(e.bias),this.value.copy(e.value),e.colorSpaceTL?this.colorSpaceTL?this.colorSpaceTL.copy(e.colorSpaceTL):this.colorSpaceTL=e.colorSpaceTL.clone():this.colorSpaceTL=void 0,e.colorSpaceTR?this.colorSpaceTR?this.colorSpaceTR.copy(e.colorSpaceTR):this.colorSpaceTR=e.colorSpaceTR.clone():this.colorSpaceTR=void 0,e.colorSpaceBL?this.colorSpaceBL?this.colorSpaceBL.copy(e.colorSpaceBL):this.colorSpaceBL=e.colorSpaceBL.clone():this.colorSpaceBL=void 0,e.colorSpaceBR?this.colorSpaceBR?this.colorSpaceBR.copy(e.colorSpaceBR):this.colorSpaceBR=e.colorSpaceBR.clone():this.colorSpaceBR=void 0,e.colorSpaceTLExp?this.colorSpaceTLExp?this.colorSpaceTLExp.copy(e.colorSpaceTLExp):this.colorSpaceTLExp=e.colorSpaceTLExp.clone():this.colorSpaceTLExp=void 0,e.colorSpaceTRExp?this.colorSpaceTRExp?this.colorSpaceTRExp.copy(e.colorSpaceTRExp):this.colorSpaceTRExp=e.colorSpaceTRExp.clone():this.colorSpaceTRExp=void 0,e.colorSpaceBLExp?this.colorSpaceBLExp?this.colorSpaceBLExp.copy(e.colorSpaceBLExp):this.colorSpaceBLExp=e.colorSpaceBLExp.clone():this.colorSpaceBLExp=void 0,e.colorSpaceBRExp?this.colorSpaceBRExp?this.colorSpaceBRExp.copy(e.colorSpaceBRExp):this.colorSpaceBRExp=e.colorSpaceBRExp.clone():this.colorSpaceBRExp=void 0,this}},fi=di;fi.Nodes=function(){let e=new pi(`struct TextureCubeUVData {
|
|
6
6
|
vec4 tl;
|
|
7
7
|
vec4 tr;
|
|
8
8
|
vec4 br;
|
|
@@ -67,7 +67,7 @@ var Ud=Object.create;var jn=Object.defineProperty,kd=Object.defineProperties,Hd=
|
|
|
67
67
|
uv.x -= texelSize;
|
|
68
68
|
vec4 bl = texture2D(envMap, uv);
|
|
69
69
|
return TextureCubeUVData( tl, tr, br, bl, f );
|
|
70
|
-
}`,[e,a,l,r,o,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),m=new Ne("float r1 0.8",!0),f=new Ne("float v1 0.276",!0),g=new Ne("float m1 -1.0",!0),
|
|
70
|
+
}`,[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),m=new Ne("float r1 0.8",!0),f=new Ne("float v1 0.276",!0),g=new Ne("float m1 -1.0",!0),v=new Ne("float r4 0.4",!0),y=new Ne("float v4 0.046",!0),b=new Ne("float m4 2.0",!0),A=new Ne("float r5 0.305",!0),N=new Ne("float v5 0.016",!0),S=new Ne("float m5 3.0",!0),k=new Ne("float r6 0.21",!0),T=new Ne("float v6 0.0038",!0),d=new Ne("float m6 4.0",!0),O=[h,p,u,m,f,g,v,y,b,A,N,S,k,T,d],x=new re(`float roughnessToMip(float roughness) {
|
|
71
71
|
float mip = 0.0;
|
|
72
72
|
if (roughness >= r1) {
|
|
73
73
|
mip = (r0 - roughness) * (m1 - m0) / (r0 - r1) + m0;
|
|
@@ -81,7 +81,7 @@ var Ud=Object.create;var jn=Object.defineProperty,kd=Object.defineProperties,Hd=
|
|
|
81
81
|
mip = -2.0 * log2(1.16 * roughness);// 1.16 = 1.79^0.25
|
|
82
82
|
}
|
|
83
83
|
return mip;
|
|
84
|
-
}`,O);return{bilinearCubeUV:c,roughnessToMip:x,m0:u,cubeUV_maxMipLevel:r}}();var
|
|
84
|
+
}`,O);return{bilinearCubeUV:c,roughnessToMip:x,m0:u,cubeUV_maxMipLevel:r}}();var Lo=class extends de{constructor(e){super("v3");this.nodeType="Normal";this.scope=e!=null?e:Lo.VIEW}getShared(){return this.scope===Lo.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 Lo.VIEW:e.isShader("vertex")?a="transformedNormal":a="geometryNormal";break;case Lo.LOCAL:e.isShader("vertex")?a="objectNormal":(e.requires.normal=!0,a="vObjectNormal");break;case Lo.WORLD:e.isShader("vertex")?a="inverseTransformDirection( transformedNormal, viewMatrix ).xyz":(e.requires.worldNormal=!0,a="vWNormal");break}return e.format(a,this.getType(e),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},ct=Lo;ct.LOCAL="local",ct.WORLD="world",ct.VIEW="view",ct.NORMAL="normal";nt.addKeyword("viewNormal",function(){return new ct(ct.VIEW)});nt.addKeyword("localNormal",function(){return new ct(ct.NORMAL)});nt.addKeyword("worldNormal",function(){return new ct(ct.WORLD)});var xr=class extends de{constructor(e){super("v3");this.nodeType="Position";this.scope=e!=null?e:xr.LOCAL}getType(){switch(this.scope){case xr.PROJECTION:return"v4"}return this.type}getShader(){switch(this.scope){case xr.LOCAL:case xr.WORLD:return!1}return!0}generate(e,r,o,n,s){let a;switch(this.scope){case xr.LOCAL:e.isShader("vertex")?a="transformed":(e.requires.position=!0,a="vPosition");break;case xr.WORLD:if(e.isShader("vertex"))return"( modelMatrix * vec4( transformed, 1.0 ) ).xyz";e.requires.worldPosition=!0,a="vWPosition";break;case xr.VIEW:a=e.isShader("vertex")?"-mvPosition.xyz":"vViewPosition";break;case xr.PROJECTION:a=e.isShader("vertex")?"( projectionMatrix * modelViewMatrix * vec4( position, 1.0 ) )":"vec4( 0.0 )";break}return e.format(a,this.getType(),r)}copy(e){return super.copy(e),this.scope=e.scope,this}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},mt=xr;mt.LOCAL="local",mt.WORLD="world",mt.VIEW="view",mt.PROJECTION="projection";nt.addKeyword("position",function(){return new mt});nt.addKeyword("worldPosition",function(){return new mt(mt.WORLD)});nt.addKeyword("viewPosition",function(){return new mt(mt.VIEW)});var ir=class extends de{constructor(e){super("v3");this.nodeType="Reflect";this.scope=e!=null?e:ir.CUBE}getUnique(e){return!e.context.viewNormal}getType(){switch(this.scope){case ir.SPHERE:return"v2"}return this.type}generate(e,r){let o=this.getUnique(e);if(e.isShader("fragment")){let n;switch(this.scope){case ir.VECTOR:{let s=new ct(ct.VIEW),a=e.context.roughness,l=s.build(e,"v3"),c=new mt(mt.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 ir.CUBE:{let s=new ir(ir.VECTOR).build(e,"v3"),a="vec3( -"+s+".x, "+s+".yz )";o?(e.addNodeCode(`vec3 reflectCubeVec = ${a};`),n="reflectCubeVec"):n=a;break}case ir.SPHERE:{let s=new ir(ir.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}toJSON(e){let r=this.getJSONNode(e);return r||(r=this.createJSONNode(e),r.scope=this.scope),r.nodeType=this.nodeType,r}fromJSON(e,r){return super.fromJSON(e,r),e.scope&&(this.scope=e.scope),this}},br=ir;br.CUBE="cube",br.SPHERE="sphere",br.VECTOR="vector";var sa=class extends de{constructor(e=new Ot,r,o){super("v4");this.nodeType="TextureCube";this.value=e,this.radianceNode=new fi(this.value,r!=null?r:new br(br.VECTOR),o),this.irradianceNode=new fi(this.value,new ct(ct.WORLD),new te(1).setReadonly(!0))}generate(e,r){return e.isShader("fragment")?(e.require("irradiance"),e.context.bias&&e.context.bias.setTexture(this.value),(e.slot==="irradiance"?this.irradianceNode:this.radianceNode).build(e,r)):(console.warn("TextureCubeNode is not compatible with "+e.shader+" shader."),e.format("vec4( 0.0 )",this.getType(e),r))}copy(e){return super.copy(e),this.value.copy(e.value),this.radianceNode.copy(e.radianceNode),this.irradianceNode.copy(e.irradianceNode),this}};import{CubeTexture as uS}from"three";var aa=class extends Fe{constructor(e=new uS,r,o){super("v4",{shared:!0});this.nodeType="CubeTexture";this.value=e,this.uv=r!=null?r:new br,this.bias=o}getTexture(e,r){return super.generate(e,r,this.value.uuid,"tc")}generate(e,r){var h,p;if(r==="samplerCube")return this.getTexture(e,r);let o=this.getTexture(e,r),n=(h=this.uv)==null?void 0:h.build(e,"v3"),s=this.bias?this.bias.build(e,"f"):void 0;s===void 0&&e.context.bias&&(s=e.context.bias.setTexture(this).build(e,"f"));let a;s?a="texCubeBias( "+o+", "+n+", "+s+" )":a="texCube( "+o+", "+n+" )";let l={include:e.isShader("vertex"),ignoreCache:!0},c=this.getType(e);return e.addContext(l),this.colorSpace=(p=this.colorSpace)!=null?p:new Pt(new Ee("",c)),this.colorSpace.fromDecoding(e.getTextureEncodingFromMap(this.value)),this.colorSpace.input.parse(a),a=this.colorSpace.build(e,c),e.removeContext(),e.format(a,c,r)}copy(e){return super.copy(e),this.value.copy(e.value),e.uv?this.uv?this.uv.copy(e.uv):this.uv=e.uv.clone():this.uv=void 0,e.bias?this.bias?this.bias.copy(e.bias):this.bias=e.bias.clone():this.bias=void 0,this}};var Sm=["x","y","z","w"],gS=["float","vec2","vec3","vec4"],xS={float:"f",vec2:"v2",vec3:"v3",vec4:"v4",mat4:"v4",int:"i",bool:"b","float[]":"f[]","vec4[]":"v4[]"},bS={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[]"},la=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+`
|
|
85
85
|
`);return s}}();this.slots=[],this.caches=[],this.contexts=[],this.keywords={},this.nodeData={},this.fragmentVariables={},this.requires={uv:[],color:[],lights:!1,fog:!1,transparent:!1,irradiance:!1,position:!1,worldPosition:!1,normal:!1,worldNormal:!1,vWorldViewDir:!1,modelMatrix:!1,viewMatrix:!1,projectionMatrix:!1},this.includes={consts:[],functions:[],structs:[]},this.attributes={},this.prefixCode=["#ifdef TEXTURE_LOD_EXT"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCubeLodEXT(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2DLodEXT(a, b, c)","#else"," #define texCube(a, b) textureCube(a, b)"," #define texCubeBias(a, b, c) textureCube(a, b, c)"," #define tex2D(a, b) texture2D(a, b)"," #define tex2DBias(a, b, c) texture2D(a, b, c)","#endif",`
|
|
86
86
|
// NOTE: Include Spline's blending modes. This could be part of BlendNode
|
|
87
87
|
#define SPE_BLENDING_NORMAL 0
|
|
@@ -119,15 +119,15 @@ var Ud=Object.create;var jn=Object.defineProperty,kd=Object.defineProperties,Hd=
|
|
|
119
119
|
`),fragment:["float accumAlpha = 0.0;",`void accumulateAlpha(float alpha) {
|
|
120
120
|
accumAlpha += (1.0 - accumAlpha) * alpha;
|
|
121
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(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
|
|
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(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!=null?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]="")}addVertexCode(t){this.addCode(t,"vertex")}addFragmentCode(t){this.addCode(t,"fragment")}addCode(t,e){this.code[e!=null?e:this.shader]+=t+`
|
|
123
123
|
`}addVertexNodeCode(t){this.addNodeCode(t,"vertex")}addFragmentNodeCode(t){this.addNodeCode(t,"fragment")}addNodeCode(t,e){this.nodeCode[e!=null?e:this.shader]+=t+`
|
|
124
124
|
`}clearNodeCode(t){t=t!=null?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!=null?e:this.shader]+=t+`
|
|
125
125
|
`}addVertexParsCode(t){this.addParsCode(t,"vertex")}addFragmentParsCode(t){this.addParsCode(t,"fragment")}addParsCode(t,e){this.parsCode[e!=null?e:this.shader]+=t+`
|
|
126
126
|
`}addVaryCode(t){this.addVertexParsCode(t),this.addFragmentParsCode(t)}isCache(t){return this.caches.indexOf(t)!==-1}isSlot(t){return this.slots.indexOf(t)!==-1}define(t,e){this.defines[t]=e===void 0?1:e}require(t){this.requires[t]=!0}isDefined(t){return this.defines[t]!==void 0}getVar(t,e,r,o="varying",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(`
|
|
127
127
|
`)}getVarListCode(t,e){e=e!=null?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}];
|
|
128
128
|
`:r+=e+" "+h+" "+l+`;
|
|
129
|
-
`}return r}getVars(t){return this.inputs.vars[t!=null?t:this.shader]}getNodeData(t){let e=t instanceof ue?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
|
|
130
|
-
`;return e.isShader("vertex")?o+="gl_Position = "+r.result+";":o+="gl_FragColor = "+r.result+";",o}copy(e){return super.copy(e),this.value.copy(e.value),this}};var _e=class extends Fe{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof
|
|
129
|
+
`}return r}getVars(t){return this.inputs.vars[t!=null?t:this.shader]}getNodeData(t){let e=t instanceof ue?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 hn({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 hn({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){var s;let o;if(t=typeof t=="string"?nt.get(t):t,this.context.include===!1)return t.name;t instanceof re?o=this.includes.functions:t instanceof Ne?o=this.includes.consts:t instanceof pi&&(o=this.includes.structs);let n=o[this.shader]=o[this.shader]||[];if(t){let a=n[t.name];if(a||(a=n[t.name]={node:t,deps:[]},n.push(a),a.src=t.build(this,"source")),t instanceof re&&e&&n[e.name]&&n[e.name].deps.indexOf(t)===-1&&(n[e.name].deps.push(t),(s=t.includes)!=null&&s.length)){let l=0;do this.include(t.includes[l++],e);while(l<t.includes.length)}return r&&(a.src=r),t.name}else throw new Error("Include not found.")}colorToVectorProperties(t){return t.replace("r","x").replace("g","y").replace("b","z").replace("a","w")}colorToVector(t){return t.replace(/c/g,"v3")}getIncludes(t,e){return this.includes[t][e||this.shader]}getConstructorFromLength(t){return gS[t-1]}isTypeMatrix(t){return/^m/.test(t)}getTypeLength(t){return t==="f"?1:parseInt(this.colorToVector(t).substr(1))}getTypeFromLength(t){return t===1?"f":"v"+t}findNode(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!=null&&r.isNode)return r}}resolve(...t){for(let e=0;e<arguments.length;e++){let r=t[e];if(r!==void 0){if(r.isNode)return r;if(r.isTexture)switch(r.mapping){case mS:case dS:return new aa(r);case fS:return new sa(new Ot(r));default:return new Ot(r)}else{if(r.isVector2)return new wt(r);if(r.isVector3)return new Lt(r);if(r.isVector4)return new _r(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 xS[t]||t}getFormatByType(t){return bS[t]||t}getUUID(t,e){return e=e!==void 0?e:!0,e&&this.cache&&(t=this.cache+"-"+t),t}getElementByIndex(t){return Sm[t]}getIndexByElement(t){return Sm.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=vm,e===vm&&this.context.gamma&&(e=yS),e}};var un=class extends ue{constructor(e=new ue){super("v4");this.nodeType="Raw";this.value=e}generate(e){let r=this.value.analyzeAndFlow(e,this.type),o=r.code+`
|
|
130
|
+
`;return e.isShader("vertex")?o+="gl_Position = "+r.result+";":o+="gl_FragColor = "+r.result+";",o}copy(e){return super.copy(e),this.value.copy(e.value),this}};var _e=class extends Fe{constructor(e=0,r,o,n){super("c");this.nodeType="Color";this.value=e instanceof Et?e:new Et(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!=null?o:this.getUUID()),n=n!=null?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)}};import{MathUtils as Gr,Vector2 as eo,Vector3 as to,Vector4 as ca}from"three";import{Texture as vS}from"three";var ve=class extends Fe{constructor(e){super("i");this.nodeType="Int";this.value=Math.floor(e!=null?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 We=class{constructor(t,e,r,o){this.next=void 0;this.uniforms={};this.textures={};this.defines={};if(this.id=t,this.uuid=e,r){this.type=r.type;for(let 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=I({},t.defines);for(let e in t.uniforms)this.getName(e)==="transmissionSamplerMap"||this.getName(e)==="transmissionDepthMap"||(this.uniforms[e]?this.uniforms[e].copy(t.uniforms[e]):this.uniforms[e]=t.uniforms[e].clone());return this}clone(){return new We(this.id).copy(this)}fromJSON(t,e){this.id=t.id,this.defines=I({},t.defines);for(let r in t.uniforms)this.uniforms[r]=e.getNode(t.uniforms[r]);if(t.type==="texture"){if(!(`f${this.id}_textureSize`in this.uniforms)){let r=this.uniforms[`f${this.id}_texture`].value.image;this.uniforms[`f${t.id}_textureSize`]=new Lt(r.width,r.height)}`f${this.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new wt(200,200)),`f${t.id}_axis`in this.uniforms||(this.uniforms[`f${t.id}_axis`]=new ve(0)),`f${t.id}_side`in this.uniforms||(this.uniforms[`f${t.id}_side`]=new ve(0)),`f${t.id}_projection`in this.uniforms||(this.uniforms[`f${t.id}_projection`]=new ve(0))}else t.type==="noise"?(`f${t.id}_noiseType`in this.uniforms||(this.uniforms[`f${t.id}_noiseType`]=new ve(0)),`f${t.id}_size`in this.uniforms||(this.uniforms[`f${t.id}_size`]=new Lt(-1,-1,-1))):t.type==="depth"&&(`f${t.id}_isWorldSpace`in this.uniforms||(this.uniforms[`f${t.id}_isWorldSpace`]=new te(1)));return this}toJSON(t){let e={};for(let o in this.uniforms)e[o]=this.uniforms[o].toJSON(t).uuid;return{id:this.id,type:this.type,defines:JSON.parse(JSON.stringify(this.defines)),uniforms:e,next:this.next==null?void 0:this.next.toJSON(t)}}copyUniforms(t){for(let e in this.uniforms){let r=this.getName(e);r!==void 0&&t.uniforms[`f${t.id}_${r}`]&&r!=="transmissionDepthMap"&&r!=="transmissionSamplerMap"&&this.uniforms[e].copy(t.uniforms[`f${t.id}_${r}`])}return this}hasValueByKey(t){return this.uniforms[t]!==void 0}hasValue(t){return this.hasValueByKey(`f${this.id}_${t}`)}setValue(t,e){let r=`f${this.id}_${t}`;this.hasValueByKey(r)&&e!==void 0&&(this.uniforms[r].value=e)}getValue(t){let e=`f${this.id}_${t}`;if(this.hasValueByKey(e))return this.uniforms[e].value}getValues(){let t={type:this.type};for(let e in this.uniforms){let r=this.getName(e);if(r===void 0)continue;let 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 vS){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 wm(i){let t=i instanceof We?i.type:i;return t==="texture"||t==="displace_map"||t==="matcap"}var mn=class extends Fe{constructor(e){super("b");this.nodeType="Bool";this.value=e!=null?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}};import{Vector4 as Lm}from"three";var Co=class extends Fe{constructor(e=1,r){super("v4[]");this.nodeType="Vector4Array";this.size=e,this.value=Array.isArray(r)?r:r instanceof Lm?new Array(e).fill(r):new Array(e).fill(new Lm(0))}copy(e){return super.copy(e),this.value=e.value.map(r=>r.clone()),this}};var dt=class extends Fe{constructor(e=1,r){super("f[]");this.nodeType="FloatArray";this.size=e,this.value=Array.isArray(r)?r:typeof r=="number"?new Array(e).fill(r):new Array(e).fill(0)}copy(e){return super.copy(e),this.size=e.size,this.value=[...e.value],this}};import{Matrix3 as SS}from"three";var yi=class extends Fe{constructor(e){super("m3");this.nodeType="Matrix3";this.value=e!=null?e:new SS}generateReadonly(e,r,o,n,s,a){return e.format("mat3("+this.value.elements.join(", ")+")",n,r)}copy(e){return super.copy(e),this.elements=e.elements,this}get elements(){return this.value.elements}set elements(e){this.value.fromArray(e)}};var fn=class extends de{constructor(e=new Ot,r,o,n,s,a,l,c,h){super("v3");this.nodeType="CustomTexture";this.firstTime=!0,this.texture=e,this.textureSize=r,this.crop=o,this.projection=n,this.axis=s,this.side=a,this.size=l,this.mat=new yi(this.texture.value.matrix),this.alpha=c,this.mode=h,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){e.require("position"),e.require("normal"),e.require("uv"),e.requires.uv=[!0],e.extensions.shaderTextureLOD=!0,e.extensions.derivatives=!0;let o=`g${this.uuid.toString().replace(/-/g,"")}`,n;switch(this.projection.value){case 3:n=e.include(fn.Nodes.cylindrical);break;case 2:n=e.include(fn.Nodes.spherical);break;case 1:let a=["vec3(1.0, 0.0, 0.0)","vec3(0.0, 1.0, 0.0)","vec3(0.0, 0.0, 1.0)"][this.axis.value],l=new re(`
|
|
131
131
|
vec3 ${o}_planarTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
132
132
|
|
|
133
133
|
vec2 uvs = ( mat * vec3( (${o}_vCustomUv * 2. - 1.) / (size * .5), 1. ) / 2. + 0.5 ).xy;
|
|
@@ -146,7 +146,7 @@ var Ud=Object.create;var jn=Object.defineProperty,kd=Object.defineProperties,Hd=
|
|
|
146
146
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
147
147
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
148
148
|
return col;
|
|
149
|
-
}`);n=e.include(l);break;default:n=e.include(
|
|
149
|
+
}`);n=e.include(l);break;default:n=e.include(fn.Nodes.uv);break}if(this.projection.value===1&&this.firstTime){e.addVertexParsCode(`varying vec2 ${o}_vCustomUv;`),e.addFragmentParsCode(`varying vec2 ${o}_vCustomUv;`);let a=["zy","xz","xy"][this.axis.value];e.addVertexFinalCode(`${o}_vCustomUv = (1. + (transformed.${a})) / 2.;`)}e.addFragmentVariable(this.calpha,"float");let s=[];return s.push(this.texture.getTexture(e,"t")),s.push(this.textureSize.build(e,"v2")),s.push(this.crop.build(e,"f")),s.push(this.mat.build(e,"mat3")),s.push(this.size.build(e,"v2")),s.push(this.alpha.build(e,"f")),s.push(this.mode.build(e,"i")),s.push(this.calpha),this.firstTime=!this.firstTime,e.format(n+"("+s.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.texture.copy(e.texture),this.textureSize=e.textureSize.clone(),this.crop=e.crop.clone(),this.projection=e.projection.clone(),this.axis=e.axis.clone(),this.size=e.size.clone(),this.alpha=e.alpha.clone(),this.mode=e.mode.clone(),this}},dn=fn;dn.Nodes=function(){let e=new re(`
|
|
150
150
|
vec3 cylindricalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec2 size, float alpha, int mode, out float calpha) {
|
|
151
151
|
vec3 posN = normalize(position);
|
|
152
152
|
float u = 0.5 + atan(posN.z, posN.x) / (2.*3.1415);
|
|
@@ -220,14 +220,14 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
220
220
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
221
221
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
222
222
|
return col;
|
|
223
|
-
}`);return{cylindrical:e,spherical:r,uv:o}}();var
|
|
223
|
+
}`);return{cylindrical:e,spherical:r,uv:o}}();var Hl=class extends de{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(Hl.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}},yn=Hl;yn.Nodes=function(){return{fresnel:new re(`vec3 fresnel(vec3 color, float bias, float scale, float intensity, float factor, float alpha, int mode, out float calpha) {
|
|
224
224
|
float fresnel = bias + scale * pow( abs( factor + dot( normalize( vWorldViewDir ), normalize( vWNormal ) ) ), intensity );
|
|
225
225
|
|
|
226
226
|
float lalpha = clamp( fresnel, 0.0, 1.0 ) * alpha;
|
|
227
227
|
calpha = lalpha / clamp(lalpha + accumAlpha, 0.001, 1.0);
|
|
228
228
|
accumAlpha += (1.0 - accumAlpha) * lalpha;
|
|
229
229
|
return color;
|
|
230
|
-
}`)}}();var
|
|
230
|
+
}`)}}();var gn=(n=>(n.SIMPLEX="simplex3d",n.SIMPLEX_FRACTAL="simplex3dFractal",n.ASHIMA="simplexAshima",n.FBM="fbm",n.PERLIN="perlin",n))(gn||{}),Gt=function(){let t=new re(`vec3 random3(vec3 c) {
|
|
231
231
|
float j = 4096.0*sin(dot(c,vec3(17.0, 59.4, 15.0)));
|
|
232
232
|
vec3 r;
|
|
233
233
|
r.z = fract(512.0*j);
|
|
@@ -404,7 +404,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
404
404
|
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
|
|
405
405
|
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
|
|
406
406
|
return 2.2 * n_xyz;
|
|
407
|
-
}`,[o,n,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:u}}();var
|
|
407
|
+
}`,[o,n,p]);return{simplex:e,simplexFractal:r,simplexAshima:s,fbm:h,perlin:u}}();var ql=class extends de{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(ql.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}},xn=ql;xn.Nodes=function(){let e=new re(`vec3 attenuation(vec3 wavelengths, float filmThickness, float movement, float noiseStrength, float noiseScale, vec3 offset) {
|
|
408
408
|
vec3 st = position / noiseScale;
|
|
409
409
|
vec3 q = vec3(simplex3d(st),
|
|
410
410
|
simplex3d(st + vec3(1.0)),
|
|
@@ -417,7 +417,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
417
417
|
float noise = simplex3d(st + r);
|
|
418
418
|
|
|
419
419
|
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);
|
|
420
|
-
}`,[
|
|
420
|
+
}`,[Gt.simplex]);return{rainbow:new re(`vec3 rainbow(float filmThickness, float movement, vec3 wavelengths, float noiseStrength, float noiseScale, vec3 offset, float alpha, out float calpha) {
|
|
421
421
|
vec3 res = clamp(attenuation(wavelengths, filmThickness, movement, noiseStrength, noiseScale, offset), 0.0, 2.0);
|
|
422
422
|
|
|
423
423
|
float rainbowContribution = clamp(res.r + res.g + res.b, 0.0, 1.0);
|
|
@@ -426,7 +426,7 @@ vec3 sphericalTexture(sampler2D tex, vec2 textureSize, float crop, mat3 mat, vec
|
|
|
426
426
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
427
427
|
|
|
428
428
|
return res;
|
|
429
|
-
}`,[e])}}();var
|
|
429
|
+
}`,[e])}}();var Wl=class extends de{constructor(e,r,o,n,s,a,l,c){super("v3");this.nodeType="Transmission";this.thickness=e,this.ior=r,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,r){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(Wl.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),r)}else return console.warn("TransmissionNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(this),this.thickness=e.thickness.clone(),this.ior=e.ior.clone(),this.roughness=e.roughness.clone(),this.transmissionSamplerSize=e.transmissionSamplerSize.clone(),this.transmissionSamplerMap=e.transmissionSamplerMap,this.transmissionDepthMap=e.transmissionDepthMap,this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},bn=Wl;bn.Nodes=function(){let e=new re(`
|
|
430
430
|
float gaussian(vec2 i) {
|
|
431
431
|
const float sigma = float(NUM_SAMPLES) * .25;
|
|
432
432
|
return exp( -.5* dot(i/=sigma,i) ) / ( 6.28 * sigma*sigma );
|
|
@@ -513,14 +513,14 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
513
513
|
calpha = lalpha / clamp( lalpha + accumAlpha, 0.00001, 1.0 );
|
|
514
514
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
515
515
|
return transmission.rgb;
|
|
516
|
-
}`,[a])}}();var
|
|
516
|
+
}`,[a])}}();var $l=class extends de{constructor(e,r){super("v3");this.nodeType="CustomNormal";this.cnormal=e,this.alpha=r}generate(e,r){if(e.isShader("fragment")){let o=e.include($l.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),r)}else return console.warn("CustomNormalNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.cnormal.copy(e.cnormal),this.alpha.copy(e.alpha),this}},vn=$l;vn.Nodes=function(){return{customNormal:new re(`vec3 customNormal(vec3 cnormal, vec3 norm, float alpha) {
|
|
517
517
|
vec3 normal = packNormalToRGB( norm ).rgb;
|
|
518
518
|
normal *= step( vec3(0.5), cnormal );
|
|
519
519
|
|
|
520
520
|
accumAlpha += ( 1.0 - accumAlpha ) * alpha;
|
|
521
521
|
|
|
522
522
|
return normal;
|
|
523
|
-
}`)}}();var
|
|
523
|
+
}`)}}();var Jl=class extends de{constructor(e,r,o,n,s,a,l,c){super("v3");this.nodeType="Gradient";this.gradientType=e,this.smooth=r,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,r){if(e.isShader("fragment")){e.define("GRAD_MAX",10),e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let o=e.include(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),r)}else return console.warn("GradientNode 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.colors=e.colors.clone(),this.steps=e.steps.clone(),this.offset=e.offset.clone(),this.morph=e.morph.clone(),this.angle=e.angle.clone(),this.alpha=e.alpha.clone(),this.calpha=e.calpha,this}},Sn=Jl;Sn.Nodes=function(){return{gradient:new re(`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) {
|
|
524
524
|
vec4 color = colors[0];
|
|
525
525
|
vec2 m = morph / vUv.xy;
|
|
526
526
|
vec2 rot = vec2( 0.5 + m.x, m.y );
|
|
@@ -562,11 +562,11 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
562
562
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
563
563
|
|
|
564
564
|
return color.xyz;
|
|
565
|
-
}`)}}();var
|
|
565
|
+
}`)}}();var Yl=(e=>(e.NOISE="noise",e.MAP="map",e))(Yl||{}),Kl=class extends de{constructor(e=new ve(0),r,o,n,s,a){super("v3");this.nodeType="VertexDisplacement";this.displacementTypeIndex=e,this.intensity=r,this.movementOrTexture=o,Object.values(Yl)[this.displacementTypeIndex.value]==="map"&&(this.mat=new yi(this.movementOrTexture.value.matrix)),this.cropOrOffset=n,this.scale=s,this.noiseFunctionIndex=a}generate(e,r){if(e.isShader("vertex")){e.define("USE_LAYER_DISPLACE");let o,n=[];switch(n.push("displaced_position"),n.push("displaced_normal"),Object.values(Yl)[this.displacementTypeIndex.value]){case"map":{o=e.include(Kl.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(gn)[this.noiseFunctionIndex.value],l=new re(`vec3 orthogonal(vec3 v) {
|
|
566
566
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
567
567
|
}`),c=new re(`vec3 distorted(vec3 p, vec3 n, float scale, float intensity, vec3 offset, float neighbour_offset, float movement) {
|
|
568
568
|
return p + n * ${a}((p + offset) * scale * 0.001 + neighbour_offset + (movement * 0.1)) * intensity;
|
|
569
|
-
}`,[
|
|
569
|
+
}`,[Gt.simplex,Gt.simplexFractal,Gt.simplexAshima,Gt.fbm,Gt.perlin]),h=new re(`vec3 vertexDisplacementNoise(vec3 position, vec3 normal, float scale, vec3 offset, float movement, float intensity, out vec3 displaced_normal) {
|
|
570
570
|
vec3 displaced_position = distorted(position, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
571
571
|
vec3 tangent1 = orthogonal(normal);
|
|
572
572
|
vec3 tangent2 = normalize(cross(normal, tangent1));
|
|
@@ -582,7 +582,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
582
582
|
vec3 distorted2 = distorted(nearby2, normal, scale, intensity, offset, neighbor_offset, movement);
|
|
583
583
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
584
584
|
return displaced_position;
|
|
585
|
-
}`,[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){var r,o;return super.copy(e),this.noiseFunctionIndex=(r=e.noiseFunctionIndex)==null?void 0:r.clone(),this.scale=(o=e.scale)==null?void 0:o.clone(),this.cropOrOffset=e.cropOrOffset.clone(),this.intensity=e.intensity.clone(),this.movementOrTexture=e.movementOrTexture.clone(),this}},
|
|
585
|
+
}`,[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){var r,o;return super.copy(e),this.noiseFunctionIndex=(r=e.noiseFunctionIndex)==null?void 0:r.clone(),this.scale=(o=e.scale)==null?void 0:o.clone(),this.cropOrOffset=e.cropOrOffset.clone(),this.intensity=e.intensity.clone(),this.movementOrTexture=e.movementOrTexture.clone(),this}},gi=Kl;gi.Nodes=function(){let e=new re(`vec3 orthogonal(vec3 v) {
|
|
586
586
|
return normalize(abs(v.x) > abs(v.z) ? vec3(-v.y, v.x, 0.0) : vec3(0.0, -v.z, v.y));
|
|
587
587
|
}`),r=new re(`float displacementMapTexture(sampler2D tex, float crop, vec2 uv, mat3 mat, vec2 offset) {
|
|
588
588
|
vec2 uvs = (mat * vec3(uv * 2.0 - 1.0, 1.0) / 2.0 + 0.5).xy + offset;
|
|
@@ -604,7 +604,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
604
604
|
vec3 distorted2 = nearby2 + normal * displacementMapTexture(tex, crop, uv, mat, vec2(neighbor_offset)) * intensity;
|
|
605
605
|
displaced_normal = normalize(cross(distorted1 - displaced_position, distorted2 - displaced_position));
|
|
606
606
|
return displaced_position;
|
|
607
|
-
}`,[e,r])}}();var
|
|
607
|
+
}`,[e,r])}}();var wn=class extends de{constructor(e=new ue,r=new ue,o=new ue,n=new ue,s=new ue,a=new ue,l=new ue,c=new ue,h=new ue,p=new ue,u=new ue,m=new ue){super("v3");this.nodeType="Noise";this.scale=e,this.size=r,this.move=o,this.fA=n,this.fB=s,this.distortion=a,this.colorA=l,this.colorB=c,this.colorC=h,this.colorD=p,this.alpha=u,this.noiseType=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r,o,n,s){e.require("uv"),e.requires.uv=[!0],e.addFragmentVariable(this.calpha,"float");let a=Object.values(gn)[this.noiseType.value],l=new re(`vec3 ${a}customNoise(float scale, vec3 size, float move, vec2 fA, vec2 fB, vec2 distortion, vec4 colorA, vec4 colorB, vec4 colorC, vec4 colorD, float alpha, out float calpha) {
|
|
608
608
|
vec3 st = position / size;
|
|
609
609
|
st /= scale;
|
|
610
610
|
vec3 q = vec3(${a}(st),
|
|
@@ -624,7 +624,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
624
624
|
|
|
625
625
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
626
626
|
return clamp(color, 0.0, 1.0).rgb;
|
|
627
|
-
}`,[
|
|
627
|
+
}`,[Gt.simplex,Gt.simplexFractal,Gt.simplexAshima,Gt.fbm,Gt.perlin]),c=e.include(l),h=[];return h.push(this.scale.build(e,"f")),h.push(this.size.build(e,"v3")),h.push(this.move.build(e,"f")),h.push(this.fA.build(e,"v2")),h.push(this.fB.build(e,"v2")),h.push(this.distortion.build(e,"v2")),h.push(this.colorA.build(e,"v4")),h.push(this.colorB.build(e,"v4")),h.push(this.colorC.build(e,"v4")),h.push(this.colorD.build(e,"v4")),h.push(this.alpha.build(e,"f")),h.push(this.calpha),e.format(c+"("+h.join(",")+")",this.getType(e),r)}copy(e){return super.copy(e),this.scale.copy(e.scale),this.size.copy(e.size),this.move.copy(e.move),this.fA.copy(e.fA),this.fB.copy(e.fB),this.distortion.copy(e.distortion),this.colorA.copy(e.colorA),this.colorB.copy(e.colorB),this.colorC.copy(e.colorC),this.colorD.copy(e.colorD),this.alpha.copy(e.alpha),this.calpha=e.calpha,this.noiseType.copy(e.noiseType),this}};wn.numOctaves=5;var Ln=class extends de{constructor(e=new ue,r=new ue,o=new ue,n=new ue){super("v3");this.nodeType="Blend";this.a=e,this.b=r,this.alpha=o,this.mode=n}generate(e,r){if(e.isShader("fragment")){let o=[];return o.push(this.a.build(e,"c")),o.push(this.b.build(e,"c")),o.push(this.alpha.build(e,"f")),o.push(this.mode.build(e,"i")),e.format("spe_blend("+o.join(",")+")",this.getType(e),r)}else return console.warn("BlendNode is not compatible with "+e.shader+" shader."),e.format("vec3( 0.0 )",this.getType(e),r)}copy(e){return super.copy(e),this.a.copy(e.a),this.b.copy(e.b),this.alpha.copy(e.alpha),this.mode.copy(e.mode),this}};var xi=class extends de{constructor(e,r,o,n,s,a,l,c,h,p,u,m){super("v3");this.nodeType="Depth";this.gradientType=e,this.smooth=r,this.near=o,this.far=n,this.isVector=s,this.isWorldSpace=a,this.origin=l,this.direction=c,this.colors=h,this.steps=p,this.num=u,this.alpha=m,this.calpha=`g${this.uuid.toString().replace(/-/g,"")}_calpha`}generate(e,r){let o=`g${this.uuid.toString().replace(/-/g,"")}`,n=new re(`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) {
|
|
628
628
|
vec4 color = colors[0];
|
|
629
629
|
#ifdef ${o}_IS_VECTOR
|
|
630
630
|
#ifdef ${o}_LINEAR
|
|
@@ -664,7 +664,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
664
664
|
|
|
665
665
|
accumAlpha += ( 1.0 - accumAlpha ) * lalpha;
|
|
666
666
|
return color.rgb;
|
|
667
|
-
}`,[
|
|
667
|
+
}`,[xi.Nodes.vectorLinearWorldSpaceDepth,xi.Nodes.vectorLinearObjectSpaceDepth,xi.Nodes.vectorSphericalObjectSpaceDepth,xi.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}},Cn=xi;Cn.Nodes=function(){let e=new re(`float vectorLinearWorldSpaceDepth(vec3 direction, vec3 origin, float near, float far) {
|
|
668
668
|
vec3 n = normalize(direction);
|
|
669
669
|
float dist = (n.x*(vWPosition.x - origin.x) + n.y*(vWPosition.y - origin.y) + n.z*(vWPosition.z - origin.z));
|
|
670
670
|
return ( dist - near ) / ( far - near );
|
|
@@ -678,7 +678,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
678
678
|
}`),n=new re(`float vectorSphericalObjectSpaceDepth(vec3 origin, float near, float far) {
|
|
679
679
|
float dist = length(position - origin);
|
|
680
680
|
return ( dist - near ) / ( far - near );
|
|
681
|
-
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var
|
|
681
|
+
}`);return{vectorLinearWorldSpaceDepth:e,vectorLinearObjectSpaceDepth:r,vectorSphericalWorldSpaceDepth:o,vectorSphericalObjectSpaceDepth:n}}();var Xl=class extends de{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(Xl.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}},Tn=Xl;Tn.Nodes=function(){return{matcap:new re(`vec3 matcap(sampler2D matcapTex, vec3 normal, float alpha, int mode, out float calpha) {
|
|
682
682
|
vec3 viewDir = normalize( vViewPosition );
|
|
683
683
|
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
|
|
684
684
|
vec3 y = cross( viewDir, x );
|
|
@@ -690,7 +690,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
690
690
|
|
|
691
691
|
return matcapColor.rgb;
|
|
692
692
|
}
|
|
693
|
-
`)}}();var Lt=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=_r.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new te(1));let r=new te(1),o=new ve(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=o),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:o}),this.head=e.layer,this.head.next=new We(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){var n;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((n=t.userData.layers)==null?void 0:n.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){var o;if(t.id=(o=t.id)!=null?o:++this.id,this.layerCount++,t.type==="light"){let n=this.createLightLayer(t);return this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let n=this.head;for(;n.next!=null;)n=n.next;n.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=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){var a;let r=this.head;t.id=(a=t.id)!=null?a:++this.id,this.layerCount++;let o=this._createLayer(t),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==null?void 0:r.next)!==e;)r=r==null?void 0: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=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}addLayerAt(t,e){var n;e.id=(n=e.id)!=null?n:++this.id,this.layerCount++;let r=this._createLayer(e),o=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:o.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:o.id,type:"position",position:r.position}),t==0)o.next=this.head,this.head=o;else{let s=this.head,a=this.head.next;for(let l=0;l<t-1;l++)s=a,a=a.next;o.next=a,s.next=o}return this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if((e==null?void 0:e.id)==t)this.head=e.next;else for(o=1,r=e,e=e==null?void 0:e.next;e!=null;){if(e.id==t){r.next=e.next;break}o++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=_r.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,n;if((o==null?void 0:o.id)==t){let s=this._createLayer(I({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(I({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=_r.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==null?void 0:o.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=_r.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new te(t.alpha),r=new ve(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let o=new We(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let 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 te(e.uniforms[`f${e.id}_alpha`].value),n=r?e.uniforms[`f${e.id}_mode`]:new ve(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 We(e.id,e.uuid,{type:"light",alpha:o,mode:n}):t&&(t.next=new We(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){var o,n,s,a,l,c,h,p,u,m,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new _e((n=(o=t==null?void 0:t.getValue("emissive"))==null?void 0:o.clone())!=null?n:0);break;case"Phong":e.shininess=new te((s=t==null?void 0:t.getValue("shininess"))!=null?s:30),e.specular=new _e((l=(a=t==null?void 0:t.getValue("specular"))==null?void 0:a.clone())!=null?l:1118481);break;case"Toon":e.shininess=new te((c=t==null?void 0:t.getValue("shininess"))!=null?c:30),e.specular=new _e((p=(h=t==null?void 0:t.getValue("specular"))==null?void 0:h.clone())!=null?p:1118481);break;case"Physical":e.roughness=new te((u=t==null?void 0:t.getValue("roughness"))!=null?u:.3),e.metalness=new te((m=t==null?void 0:t.getValue("metalness"))!=null?m:0),e.reflectivity=new te((f=t==null?void 0:t.getValue("reflectivity"))!=null?f:.5);break;default:break}Object.keys(e).forEach(g=>{this._material[g]=e[g],r.uniforms[`f${r.id}_${g}`]=e[g]})}clone(t){return new Lt(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new We(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),n=t.head.next,s=o;for(;n!=null;)s.next=new We(n.id,void 0,{type:n.type}).fromJSON(n,e),n=n.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,o,!0);let a=o;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){var e;let t=this.head;for(;t!==void 0&&t.type!=="light";)t=(e=t.next)!=null?e:t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){var r,o,n,s,a,l,c,h,p,u,m,f,g,b,y,v,D,N,w,H,T,d,O,x,L,C,P,$,K,oe,ae,ne,ge,V,E,B,G,A,_,Y,U,F,j,z,k,se,W,J,X,Z,Q,le,ie,pe,Ge,xe,$e,Te,ht,Ct,Cr,yt,Tr,ao,lo,ke,gt,Gt,En,_n,Gn,zn,Rn,Fn,kt,zi,pt,Po,Vn,co;let e=t.type;switch(e){case"color":{let be=new _e((r=t.color)!=null?r:5855577),Ce=new te((o=t.alpha)!=null?o:1),Se=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Ce;let we=new ve((n=t.mode)!=null?n:0);return be.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,color:be,alpha:Ce,calpha:Se,mode:we}),color:be,alpha:Se,mode:we}}case"texture":{let be=(s=t.texture)!=null?s:new yr,Ce=be.matrix;t.mat&&Ce.copy(t.mat),be.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new ve((l=t.projection)!=null?l:0),Me=new ve((c=t.axis)!=null?c:0),Be=new ve((h=t.side)!=null?h:0),ze=new St(t.size?new Qr(t.size[0],t.size[1]):new Qr(100,100)),je=new te((p=t.alpha)!=null?p:1),Ie=new ve((u=t.mode)!=null?u:0),He=new Pt(be),st=new wt((m=t.textureSize)!=null?m:new eo(be.image?be.image.width:0,be.image?be.image.height:0)),zt=new mn(He,st,Se,we,Me,Be,ze,je,Ie),er=new Ee(zt.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:He,textureSize:st,crop:Se,projection:we,axis:Me,side:Be,size:ze,mat:zt.mat,alpha:je,calpha:er,mode:Ie}),color:zt,alpha:er,mode:Ie}}case"matcap":{let be=(f=t.texture)!=null?f:new yr;be.needsUpdate=!0;let Ce=new te((g=t.alpha)!=null?g:1),Se=new Pt(be),we=new ve((b=t.mode)!=null?b:0),Me=new Cn(Se,Ce,we),Be=new Ee(Me.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:Se,alpha:Ce,calpha:Be,mode:we}),color:Me,alpha:Be,mode:we}}case"fresnel":{let be=new _e((y=t.color)!=null?y:16777215),Ce=new te((v=t.bias)!=null?v:.1),Se=new te((D=t.scale)!=null?D:1),we=new te((N=t.intensity)!=null?N:2),Me=new te((w=t.factor)!=null?w:1),Be=new te((H=t.alpha)!=null?H:1),ze=new ve((T=t.mode)!=null?T:0),je=new fn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,color:be,bias:Ce,scale:Se,intensity:we,factor:Me,alpha:Be,calpha:Ie,mode:ze}),color:je,alpha:Ie,mode:ze}}case"rainbow":{let be=new te((d=t.filmThickness)!=null?d:30),Ce=new te((O=t.movement)!=null?O:0),Se=new wt((x=t.wavelengths)!=null?x:new eo(0,0,0)),we=new te((L=t.noiseStrength)!=null?L:0),Me=new te((C=t.noiseScale)!=null?C:1),Be=new wt((P=t.offset)!=null?P:new eo(0,0,0)),ze=new te(($=t.alpha)!=null?$:1),je=new gn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f"),He=new ve((K=t.mode)!=null?K:0);return{layer:new We(t.id,t.uuid,{type:e,filmThickness:be,movement:Ce,wavelengths:Se,noiseStrength:we,noiseScale:Me,offset:Be,alpha:ze,calpha:Ie,mode:He}),color:je,alpha:Ie,mode:He}}case"transmission":{let be=new te((oe=t.thickness)!=null?oe:10),Ce=new te((ae=t.ior)!=null?ae:1.5),Se=new te((ne=t.roughness)!=null?ne:.5),we=new St((ge=t.transmissionSamplerSize)!=null?ge:new Qr(2048,2048)),Me=(V=t.transmissionSamplerMap)!=null?V:new yr,Be=(E=t.transmissionDepthMap)!=null?E:new yr,ze=new Pt(Me),je=new Pt(Be),Ie=window.innerWidth,He=window.innerHeight,st=Ie>=He?new St(He/Ie,1):new St(1,Ie/He),zt=new te((B=t.alpha)!=null?B:1),er=new xn(be,Ce,Se,we,ze,je,st,zt),Nr=new Ee(er.calpha,"f"),Vr=new ve((G=t.mode)!=null?G:0);return{layer:new We(t.id,t.uuid,{type:e,thickness:be,ior:Ce,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:ze,transmissionDepthMap:je,aspectRatio:st,alpha:zt,calpha:Nr,mode:Vr}),color:er,alpha:Nr,mode:Vr}}case"depth":{let be=new ve((A=t.gradientType)!=null?A:0),Ce=new un((_=t.smooth)!=null?_:!1),Se=new te((Y=t.near)!=null?Y:50),we=new te((U=t.far)!=null?U:200),Me=new te((F=t.isVector)!=null?F:1),Be=new te((j=t.isWorldSpace)!=null?j:0),ze=new wt((z=t.origin)!=null?z:new eo),je=new wt((k=t.direction)!=null?k:new eo),Ie=new ve((se=t.num)!=null?se:0),He;t.colors?He=new wo(Ie.value+1,t.colors):(He=new wo(Ie.value+1,new la(0,0,0,1)),He.value[1]=new la(1,1,1,1));let st;t.steps?st=new Lo(Ie.value+1,t.steps):(st=new Lo(Ie.value+1,1),st.value[0]=0);let zt=new te((W=t.alpha)!=null?W:1),er=new ve((J=t.mode)!=null?J:0),Nr=new Ln(be,Ce,Se,we,Me,Be,ze,je,He,st,Ie,zt),Vr=new Ee(Nr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,near:Se,far:we,isVector:Me,isWorldSpace:Be,origin:ze,direction:je,colors:He,steps:st,num:Ie,alpha:zt,calpha:Vr,mode:er}),color:Nr,alpha:Vr,mode:er}}case"noise":{let be=new te((X=t.scale)!=null?X:1),Ce=new wt((Z=t.size)!=null?Z:new eo(100,100,100)),Se=new te((Q=t.move)!=null?Q:1),we=new St((le=t.fA)!=null?le:new Qr(1.7,9.2)),Me=new St((ie=t.fB)!=null?ie:new Qr(8.3,2.8)),Be=new St((pe=t.distortion)!=null?pe:new Qr(1,1)),ze=new Er(t.colorA),je=new Er(t.colorB),Ie=new Er(t.colorC),He=new Er(t.colorD),st=new te((Ge=t.alpha)!=null?Ge:1),zt=new ve((xe=t.mode)!=null?xe:0),er=new ve(($e=t.noiseType)!=null?$e:0),Nr=new Sn(be,Ce,Se,we,Me,Be,ze,je,Ie,He,st,er),Vr=new Ee(Nr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,scale:be,size:Ce,move:Se,fA:we,fB:Me,distortion:Be,colorA:ze,colorB:je,colorC:Ie,colorD:He,alpha:st,calpha:Vr,mode:zt,noiseType:er}),color:Nr,alpha:Vr,mode:zt}}case"normal":{let be=new wt((Te=t.cnormal)!=null?Te:new eo(1,1,1)),Ce=new te((ht=t.alpha)!=null?ht:1),Se=new ve((Ct=t.mode)!=null?Ct:0),we=new bn(be,Ce),Me=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Me.keywords.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,cnormal:be,alpha:Ce,calpha:Me,mode:Se}),color:we,alpha:Me,mode:Se}}case"gradient":{let be=new ve((Cr=t.gradientType)!=null?Cr:0),Ce=new un((yt=t.smooth)!=null?yt:!1),Se;t.colors?Se=new wo(t.colors.length,t.colors):(Se=new wo(10,new la(0,0,0,1)),Se.value[1]=new la(1,1,1,1));let we;t.steps?we=new Lo(t.steps.length,t.steps):(we=new Lo(10,1),we.value[0]=0);let Me=new St((Tr=t.offset)!=null?Tr:new Qr(0,0)),Be=new St((ao=t.morph)!=null?ao:new Qr(0,0)),ze=new te((lo=t.angle)!=null?lo:0),je=new te((ke=t.alpha)!=null?ke:1),Ie=new ve((gt=t.mode)!=null?gt:0),He=new vn(be,Ce,Se,we,Me,Be,ze,je),st=new Ee(He.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,colors:Se,steps:we,offset:Me,morph:Be,angle:ze,alpha:je,calpha:st,mode:Ie}),color:He,alpha:st,mode:Ie}}case"displace":{let be=new ve((Gt=t.displacementType)!=null?Gt:0);if(be.value===0){let Ce=new wt((En=t.offset)!=null?En:new eo(0,0,0)),Se=new te((_n=t.scale)!=null?_n:10),we=new te((Gn=t.intensity)!=null?Gn:8),Me=new te((zn=t.movement)!=null?zn:1),Be=new te((Rn=t.alpha)!=null?Rn:1),ze=new ve((Fn=t.mode)!=null?Fn:0),je=new ve((kt=t.noiseType)!=null?kt:0),Ie=new yi(be,we,Me,Ce,Se,je);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,offset:Ce,scale:Se,intensity:we,movement:Me,alpha:Be,mode:ze,noiseType:je}),position:Ie}}else if(be.value===1){let Ce=(zi=t.texture)!=null?zi:new yr,Se=Ce.matrix;t.mat&&Se.copy(t.mat),Ce.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Me=new Pt(Ce),Be=new te((Po=t.crop)!=null?Po:0),ze=new te((Vn=t.alpha)!=null?Vn:1),je=new ve((co=t.mode)!=null?co:0),Ie=new yi(be,we,Me,Be);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,intensity:we,texture:Me,crop:Be,mat:Ie.mat,alpha:ze,mode:je}),position:Ie}}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 wn(r,n.color,n.alpha,n.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Ee("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let o=this._layerNodes[r];o.type==="color"&&(t=new wn(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 Et(e,t[r].position,Et.ADD),e=new Et(e,new te(.5).setReadonly(!0),Et.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 jt=class extends wS{constructor(e,r,o){super(o);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e!=null?e:new pn(new mt(mt.PROJECTION)),this.fragment=r!=null?r:new pn(new _e(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}_getLayerStack(e){let r=new Lt(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){var o;e=e!=null?e:{};let r=(o=e.builder)!=null?o:new aa;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>SS,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let o in e)this[o]=e[o];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let o=super.toJSON(e);return o.type="ShaderMaterial",o.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},o.vertex=this.vertex.toJSON(e).uuid,o.fragment=this.fragment.toJSON(e).uuid,delete o.vertexShader,delete o.fragmentShader,delete o.color,delete o.shininess,delete o.specular,delete o.roughness,delete o.metalness,delete o.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=o),this.userData.layers=r,o}fromJSON(e,r){var o;this.defines=(o=e.defines)!=null?o:{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:LS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}};Object.defineProperties(jt.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});import{UniformsLib as CS,UniformsUtils as TS}from"three";var ca=class extends ue{constructor(){super("basic");this.nodeType="Basic";this.color=new _e(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(TS.merge([CS.fog])),e.addParsCode(["varying vec3 vViewPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
693
|
+
`)}}();var Ct=class{constructor(t){this.id=2,this.layerCount=2,this.uuid=Gr.generateUUID(),this.needsUpdate=!1,this._material=t,this._layerNodes=[];let e=this._createLayer({id:0,type:"color"});this._material.color=e.color,this._material.alpha===void 0&&(this._material.alpha=new te(1));let r=new te(1),o=new ve(0);"shadingAlpha"in this._material&&"shadingBlend"in this._material&&(this._material.shadingAlpha=r,this._material.shadingBlend=o),this._layerNodes.push({id:0,type:"color",color:e.color,alpha:e.alpha,mode:e.mode}),this._layerNodes.push({id:1,type:"light",alpha:r,mode:o}),this.head=e.layer,this.head.next=new We(1,void 0,{type:"light",alpha:r,mode:o}),this.attachLightNodes(this.getLightLayer())}get material(){return this._material}set material(t){var n;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((n=t.userData.layers)==null?void 0:n.getLightLayer()),this.blendColors(),this.blendAfterColors(),this.blendPositions()}getLayersOfType(t){let e=[],r=this.head;for(;r;)r.type===t&&e.push(r),r=r.next;return e}addLayer(t){var o;if(t.id=(o=t.id)!=null?o:++this.id,this.layerCount++,t.type==="light"){let n=this.createLightLayer(t);return this.uuid=Gr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}let e=this._createLayer(t),r=e.layer;if(this.head===void 0)this.head=r;else{let n=this.head;for(;n.next!=null;)n=n.next;n.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=Gr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),r}addLayerBeforeAt(t,e){var a;let r=this.head;t.id=(a=t.id)!=null?a:++this.id,this.layerCount++;let o=this._createLayer(t),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==null?void 0:r.next)!==e;)r=r==null?void 0: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=Gr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),n}addLayerAt(t,e){var n;e.id=(n=e.id)!=null?n:++this.id,this.layerCount++;let r=this._createLayer(e),o=r.layer;if(r.color&&this._layerNodes.splice(t,0,{id:o.id,type:"color",color:r.color,alpha:r.alpha,mode:r.mode}),r.position&&this._layerNodes.splice(t,0,{id:o.id,type:"position",position:r.position}),t==0)o.next=this.head,this.head=o;else{let s=this.head,a=this.head.next;for(let l=0;l<t-1;l++)s=a,a=a.next;o.next=a,s.next=o}return this.uuid=Gr.generateUUID(),this.blendColors(),this.blendAfterColors(),this.blendPositions(),o}removeLayer(t){let e=this.head,r,o=0;if((e==null?void 0:e.id)==t)this.head=e.next;else for(o=1,r=e,e=e==null?void 0:e.next;e!=null;){if(e.id==t){r.next=e.next;break}o++,r=e,e=e.next}return this.cleanupChangedLayer(e),this.blendColors(),this.blendAfterColors(),this.blendPositions(),this.uuid=Gr.generateUUID(),this.layerCount--,o}changeLayer(t,e){let r,o=this.head,n;if((o==null?void 0:o.id)==t){let s=this._createLayer(I({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(I({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=Gr.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==null?void 0:o.next,o.next=r}let s=this._layerNodes.splice(t,1)[0];this._layerNodes.splice(e,0,s),this.uuid=Gr.generateUUID(),this.blendColors(),this.blendAfterColors()}updateLayerUniform(){this.uuid=Gr.generateUUID(),this.blendColors(),this.blendAfterColors()}copy(t){this.needsUpdate=!1,this.layerCount=t.layerCount,this._layerNodes=[],this.layerCount=0,this.head=void 0,this.rebuildLayerNodes(this.head,t.head);let e=t.head,r=this.head;for(;e.next!=null;)this.rebuildLayerNodes(r,e.next),r=r.next,e=e.next;return this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}createLightLayer(t){let e=new te(t.alpha),r=new ve(t.mode);this._material.shadingAlpha=e,this._material.shadingBlend=r,this._layerNodes.push({id:t.id,type:"light",alpha:e,mode:r});let o=new We(t.id,void 0,{type:"light",alpha:e,mode:r});if(this.head===void 0)this.head=o;else{let 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 te(e.uniforms[`f${e.id}_alpha`].value),n=r?e.uniforms[`f${e.id}_mode`]:new ve(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 We(e.id,e.uuid,{type:"light",alpha:o,mode:n}):t&&(t.next=new We(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){var o,n,s,a,l,c,h,p,u,m,f;let e={},r=this.getLightLayer();switch(this._material.userData.category){case"Lambert":e.emissive=new _e((n=(o=t==null?void 0:t.getValue("emissive"))==null?void 0:o.clone())!=null?n:0);break;case"Phong":e.shininess=new te((s=t==null?void 0:t.getValue("shininess"))!=null?s:30),e.specular=new _e((l=(a=t==null?void 0:t.getValue("specular"))==null?void 0:a.clone())!=null?l:1118481);break;case"Toon":e.shininess=new te((c=t==null?void 0:t.getValue("shininess"))!=null?c:30),e.specular=new _e((p=(h=t==null?void 0:t.getValue("specular"))==null?void 0:h.clone())!=null?p:1118481);break;case"Physical":e.roughness=new te((u=t==null?void 0:t.getValue("roughness"))!=null?u:.3),e.metalness=new te((m=t==null?void 0:t.getValue("metalness"))!=null?m:0),e.reflectivity=new te((f=t==null?void 0:t.getValue("reflectivity"))!=null?f:.5);break;default:break}Object.keys(e).forEach(g=>{this._material[g]=e[g],r.uniforms[`f${r.id}_${g}`]=e[g]})}clone(t){return new Ct(t).copy(this)}toJSON(t){return{id:this.id,uuid:this.uuid,head:this.head.toJSON(t)}}fromJSON(t,e,r){let o=new We(t.head.id,void 0,{type:t.head.type}).fromJSON(t.head,e),n=t.head.next,s=o;for(;n!=null;)s.next=new We(n.id,void 0,{type:n.type}).fromJSON(n,e),n=n.next,s=s.next;this._layerNodes=[],this.head=void 0,this.rebuildLayerNodes(this.head,o,!0);let a=o;for(s=this.head;a.next!=null;)this.rebuildLayerNodes(s,a.next,!0),s=s.next,a=a.next;return this._material=r,this.id=t.id,this.uuid=t.uuid,this.blendColors(),this.blendAfterColors(),this.blendPositions(),this}getLightLayer(){var e;let t=this.head;for(;t!==void 0&&t.type!=="light";)t=(e=t.next)!=null?e:t;return t}dispose(){let t=this.head;for(this._layerNodes=[],this.layerCount=0;t!==void 0;)t.hasOwnProperty("dispose")===!0&&t.dispose(),t=t.next;this.head=void 0}_createLayer(t){var r,o,n,s,a,l,c,h,p,u,m,f,g,v,y,b,A,N,S,k,T,d,O,x,L,C,P,$,Y,oe,ae,ne,ge,j,R,B,E,D,_,W,K,G,V,z,U,se,q,J,X,Q,Z,le,ie,pe,Ge,xe,$e,Te,ht,Tt,Tr,gt,Nr,co,ho,ke,xt,zt,_n,Gn,zn,Rn,Fn,Vn,Ht,Ri,pt,Oo,jn,po;let e=t.type;switch(e){case"color":{let be=new _e((r=t.color)!=null?r:5855577),Ce=new te((o=t.alpha)!=null?o:1),Se=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");Se.keywords.alpha=Ce;let we=new ve((n=t.mode)!=null?n:0);return be.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,color:be,alpha:Ce,calpha:Se,mode:we}),color:be,alpha:Se,mode:we}}case"texture":{let be=(s=t.texture)!=null?s:new gr,Ce=be.matrix;t.mat&&Ce.copy(t.mat),be.needsUpdate=!0;let Se=new te((a=t.crop)!=null?a:0),we=new ve((l=t.projection)!=null?l:0),Me=new ve((c=t.axis)!=null?c:0),Be=new ve((h=t.side)!=null?h:0),ze=new wt(t.size?new eo(t.size[0],t.size[1]):new eo(100,100)),je=new te((p=t.alpha)!=null?p:1),Ie=new ve((u=t.mode)!=null?u:0),He=new Ot(be),st=new Lt((m=t.textureSize)!=null?m:new to(be.image?be.image.width:0,be.image?be.image.height:0)),Rt=new dn(He,st,Se,we,Me,Be,ze,je,Ie),tr=new Ee(Rt.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:He,textureSize:st,crop:Se,projection:we,axis:Me,side:Be,size:ze,mat:Rt.mat,alpha:je,calpha:tr,mode:Ie}),color:Rt,alpha:tr,mode:Ie}}case"matcap":{let be=(f=t.texture)!=null?f:new gr;be.needsUpdate=!0;let Ce=new te((g=t.alpha)!=null?g:1),Se=new Ot(be),we=new ve((v=t.mode)!=null?v:0),Me=new Tn(Se,Ce,we),Be=new Ee(Me.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,texture:Se,alpha:Ce,calpha:Be,mode:we}),color:Me,alpha:Be,mode:we}}case"fresnel":{let be=new _e((y=t.color)!=null?y:16777215),Ce=new te((b=t.bias)!=null?b:.1),Se=new te((A=t.scale)!=null?A:1),we=new te((N=t.intensity)!=null?N:2),Me=new te((S=t.factor)!=null?S:1),Be=new te((k=t.alpha)!=null?k:1),ze=new ve((T=t.mode)!=null?T:0),je=new yn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,color:be,bias:Ce,scale:Se,intensity:we,factor:Me,alpha:Be,calpha:Ie,mode:ze}),color:je,alpha:Ie,mode:ze}}case"rainbow":{let be=new te((d=t.filmThickness)!=null?d:30),Ce=new te((O=t.movement)!=null?O:0),Se=new Lt((x=t.wavelengths)!=null?x:new to(0,0,0)),we=new te((L=t.noiseStrength)!=null?L:0),Me=new te((C=t.noiseScale)!=null?C:1),Be=new Lt((P=t.offset)!=null?P:new to(0,0,0)),ze=new te(($=t.alpha)!=null?$:1),je=new xn(be,Ce,Se,we,Me,Be,ze),Ie=new Ee(je.calpha,"f"),He=new ve((Y=t.mode)!=null?Y:0);return{layer:new We(t.id,t.uuid,{type:e,filmThickness:be,movement:Ce,wavelengths:Se,noiseStrength:we,noiseScale:Me,offset:Be,alpha:ze,calpha:Ie,mode:He}),color:je,alpha:Ie,mode:He}}case"transmission":{let be=new te((oe=t.thickness)!=null?oe:10),Ce=new te((ae=t.ior)!=null?ae:1.5),Se=new te((ne=t.roughness)!=null?ne:.5),we=new wt((ge=t.transmissionSamplerSize)!=null?ge:new eo(2048,2048)),Me=(j=t.transmissionSamplerMap)!=null?j:new gr,Be=(R=t.transmissionDepthMap)!=null?R:new gr,ze=new Ot(Me),je=new Ot(Be),Ie=window.innerWidth,He=window.innerHeight,st=Ie>=He?new wt(He/Ie,1):new wt(1,Ie/He),Rt=new te((B=t.alpha)!=null?B:1),tr=new bn(be,Ce,Se,we,ze,je,st,Rt),Mr=new Ee(tr.calpha,"f"),jr=new ve((E=t.mode)!=null?E:0);return{layer:new We(t.id,t.uuid,{type:e,thickness:be,ior:Ce,roughness:Se,transmissionSamplerSize:we,transmissionSamplerMap:ze,transmissionDepthMap:je,aspectRatio:st,alpha:Rt,calpha:Mr,mode:jr}),color:tr,alpha:Mr,mode:jr}}case"depth":{let be=new ve((D=t.gradientType)!=null?D:0),Ce=new mn((_=t.smooth)!=null?_:!1),Se=new te((W=t.near)!=null?W:50),we=new te((K=t.far)!=null?K:200),Me=new te((G=t.isVector)!=null?G:1),Be=new te((V=t.isWorldSpace)!=null?V:0),ze=new Lt((z=t.origin)!=null?z:new to),je=new Lt((U=t.direction)!=null?U:new to),Ie=new ve((se=t.num)!=null?se:0),He;t.colors?He=new Co(Ie.value+1,t.colors):(He=new Co(Ie.value+1,new ca(0,0,0,1)),He.value[1]=new ca(1,1,1,1));let st;t.steps?st=new dt(Ie.value+1,t.steps):(st=new dt(Ie.value+1,1),st.value[0]=0);let Rt=new te((q=t.alpha)!=null?q:1),tr=new ve((J=t.mode)!=null?J:0),Mr=new Cn(be,Ce,Se,we,Me,Be,ze,je,He,st,Ie,Rt),jr=new Ee(Mr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,near:Se,far:we,isVector:Me,isWorldSpace:Be,origin:ze,direction:je,colors:He,steps:st,num:Ie,alpha:Rt,calpha:jr,mode:tr}),color:Mr,alpha:jr,mode:tr}}case"noise":{let be=new te((X=t.scale)!=null?X:1),Ce=new Lt((Q=t.size)!=null?Q:new to(100,100,100)),Se=new te((Z=t.move)!=null?Z:1),we=new wt((le=t.fA)!=null?le:new eo(1.7,9.2)),Me=new wt((ie=t.fB)!=null?ie:new eo(8.3,2.8)),Be=new wt((pe=t.distortion)!=null?pe:new eo(1,1)),ze=new _r(t.colorA),je=new _r(t.colorB),Ie=new _r(t.colorC),He=new _r(t.colorD),st=new te((Ge=t.alpha)!=null?Ge:1),Rt=new ve((xe=t.mode)!=null?xe:0),tr=new ve(($e=t.noiseType)!=null?$e:0),Mr=new wn(be,Ce,Se,we,Me,Be,ze,je,Ie,He,st,tr),jr=new Ee(Mr.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,scale:be,size:Ce,move:Se,fA:we,fB:Me,distortion:Be,colorA:ze,colorB:je,colorC:Ie,colorD:He,alpha:st,calpha:jr,mode:Rt,noiseType:tr}),color:Mr,alpha:jr,mode:Rt}}case"normal":{let be=new Lt((Te=t.cnormal)!=null?Te:new to(1,1,1)),Ce=new te((ht=t.alpha)!=null?ht:1),Se=new ve((Tt=t.mode)!=null?Tt:0),we=new vn(be,Ce),Me=new Ee("alpha / clamp(alpha + accumAlpha, 0.00001, 1.0 )","f");return Me.keywords.alpha=Ce,{layer:new We(t.id,t.uuid,{type:e,cnormal:be,alpha:Ce,calpha:Me,mode:Se}),color:we,alpha:Me,mode:Se}}case"gradient":{let be=new ve((Tr=t.gradientType)!=null?Tr:0),Ce=new mn((gt=t.smooth)!=null?gt:!1),Se;t.colors?Se=new Co(t.colors.length,t.colors):(Se=new Co(10,new ca(0,0,0,1)),Se.value[1]=new ca(1,1,1,1));let we;t.steps?we=new dt(t.steps.length,t.steps):(we=new dt(10,1),we.value[0]=0);let Me=new wt((Nr=t.offset)!=null?Nr:new eo(0,0)),Be=new wt((co=t.morph)!=null?co:new eo(0,0)),ze=new te((ho=t.angle)!=null?ho:0),je=new te((ke=t.alpha)!=null?ke:1),Ie=new ve((xt=t.mode)!=null?xt:0),He=new Sn(be,Ce,Se,we,Me,Be,ze,je),st=new Ee(He.calpha,"f");return{layer:new We(t.id,t.uuid,{type:e,gradientType:be,smooth:Ce,colors:Se,steps:we,offset:Me,morph:Be,angle:ze,alpha:je,calpha:st,mode:Ie}),color:He,alpha:st,mode:Ie}}case"displace":{let be=new ve((zt=t.displacementType)!=null?zt:0);if(be.value===0){let Ce=new Lt((_n=t.offset)!=null?_n:new to(0,0,0)),Se=new te((Gn=t.scale)!=null?Gn:10),we=new te((zn=t.intensity)!=null?zn:8),Me=new te((Rn=t.movement)!=null?Rn:1),Be=new te((Fn=t.alpha)!=null?Fn:1),ze=new ve((Vn=t.mode)!=null?Vn:0),je=new ve((Ht=t.noiseType)!=null?Ht:0),Ie=new gi(be,we,Me,Ce,Se,je);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,offset:Ce,scale:Se,intensity:we,movement:Me,alpha:Be,mode:ze,noiseType:je}),position:Ie}}else if(be.value===1){let Ce=(Ri=t.texture)!=null?Ri:new gr,Se=Ce.matrix;t.mat&&Se.copy(t.mat),Ce.needsUpdate=!0;let we=new te((pt=t.intensity)!=null?pt:8),Me=new Ot(Ce),Be=new te((Oo=t.crop)!=null?Oo:0),ze=new te((jn=t.alpha)!=null?jn:1),je=new ve((po=t.mode)!=null?po:0),Ie=new gi(be,we,Me,Be);return{layer:new We(t.id,t.uuid,{displacementType:be,type:e,intensity:we,texture:Me,crop:Be,mat:Ie.mat,alpha:ze,mode:je}),position:Ie}}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 Ln(r,n.color,n.alpha,n.mode))}this._material.color=r}else this._material.color=void 0}blendAfterColors(){let t=new Ee("outgoingLight","f"),e=this._layerNodes.findIndex(r=>r.type==="light");if(this._layerNodes.length>e+1){for(let r=e+1;r<this._layerNodes.length;++r){let o=this._layerNodes[r];o.type==="color"&&(t=new Ln(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 _t(e,t[r].position,_t.ADD),e=new _t(e,new te(.5).setReadonly(!0),_t.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 Ut=class extends LS{constructor(e,r,o){super(o);this.isNodeMaterial=!0;this.type="NodeMaterial";this.wireframeLinecap="";this.wireframeLinejoin="";this.uniformsBackup={};this.userData={type:"",category:"",nodeType:""};this.fog=!0,this.vertex=e!=null?e:new un(new mt(mt.PROJECTION)),this.fragment=r!=null?r:new un(new _e(5855577)),this.updaters=[],this.isDetached=!0,this.dithering=!0,this.onBeforeCompile=this._onBeforeCompile}getDefines(){return this.defines}getUniforms(){return this.uniforms}getVertexShader(){return this.vertexShader}getFragmentShader(){return this.fragmentShader}_onBeforeCompile(e,r){this.build({renderer:r}),e.defines=this.defines,e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.extensionDerivatives=this.extensions.derivatives===!0,e.extensionFragDepth=this.extensions.fragDepth===!0,e.extensionDrawBuffers=this.extensions.drawBuffers===!0,e.extensionShaderTextureLOD=this.extensions.shaderTextureLOD===!0}_getLayerStack(e){let r=new Ct(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){var o;e=e!=null?e:{};let r=(o=e.builder)!=null?o:new la;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>wS,this}getHash(){let e="{";return e+='"vertex":'+this.vertex.getHash()+",",e+='"fragment":'+this.fragment.getHash(),e+="}",e}copy(e){let r=this.uuid;for(let o in e)this[o]=e[o];return this.uuid=r,e.userData!==void 0&&(this.userData=JSON.parse(JSON.stringify(e.userData))),this}toJSON(e){let r=this.userData.layers;this.userData.layers=void 0;let o=super.toJSON(e);return o.type="ShaderMaterial",o.userData={type:this.userData.type,category:this.userData.category,nodeType:this.type,layers:r.toJSON(e)},o.vertex=this.vertex.toJSON(e).uuid,o.fragment=this.fragment.toJSON(e).uuid,delete o.vertexShader,delete o.fragmentShader,delete o.color,delete o.shininess,delete o.specular,delete o.roughness,delete o.metalness,delete o.uniforms,e&&!e.materials[this.uuid]&&(e.materials[this.uuid]=o),this.userData.layers=r,o}fromJSON(e,r){var o;this.defines=(o=e.defines)!=null?o:{},this.depthFunc=e.depthFunc,this.depthWrite=e.depthWrite,this.side=e.side!==void 0?e.side:CS,this.transparent=e.transparent,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.wireframe=e.wireframe,this.userData.layers.fromJSON(e.userData.layers,r,this)}get penumbraSizeNode(){return this.fragment.penumbraSize}set penumbraSizeNode(e){this.fragment.penumbraSize=e}};Object.defineProperties(Ut.prototype,{properties:{get:function(){return this.fragment.properties}},needsUpdate:{set:function(i){i===!0&&this.version++,this.needsCompile=i},get:function(){return this.needsCompile}}});import{UniformsLib as TS,UniformsUtils as NS}from"three";var ha=class extends ue{constructor(){super("basic");this.nodeType="Basic";this.color=new _e(5855577)}generate(e){let r;if(e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(NS.merge([TS.fog])),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>"].join(`
|
|
694
694
|
`));let n=["#include <beginnormal_vertex>",`
|
|
695
695
|
#if !defined( USE_LAYER_DISPLACE )
|
|
696
696
|
#include <defaultnormal_vertex>
|
|
@@ -707,15 +707,16 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
707
707
|
#if !defined( USE_LAYER_DISPLACE )
|
|
708
708
|
#include <begin_vertex>
|
|
709
709
|
#endif /* !USE_LAYER_DISPLACE */
|
|
710
|
-
`];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>"),r=n.join(`
|
|
711
|
-
`)}else{this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),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(["#include <fog_pars_fragment>","#include <dithering_pars_fragment>","varying vec3 vViewPosition;","#include <normal_pars_fragment>"].join(`
|
|
710
|
+
`];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(`
|
|
711
|
+
`)}else{this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color"}),this.alpha&&this.alpha.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"});let o=this.color.flow(e,"c",{slot:"color"}),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(`
|
|
712
712
|
`));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(`
|
|
713
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var
|
|
713
|
+
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var pa=class extends Ut{constructor(e=new ha,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 ft=class extends pa{constructor(t,e,r){super(e,t),this.userData.type="BasicMaterial",this.userData.category="Basic",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new ft(void 0,o);return n.fromJSON(e,r),n}static fromMaterial(t){let e=new ft(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as Tm,UniformsUtils as MS}from"three";var ua=class extends ue{constructor(){super("phong");this.nodeType="Phong";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new te(30),this.penumbraSize=new dt(5,.5),this.shadingAlpha=new te(1),this.shadingBlend=new ve(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(MS.merge([Tm.fog,Tm.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(`
|
|
714
714
|
`));let n=["#include <beginnormal_vertex>",`
|
|
715
715
|
#ifndef USE_LAYER_DISPLACE
|
|
716
716
|
#include <defaultnormal_vertex>
|
|
717
717
|
#endif
|
|
718
718
|
|
|
719
|
+
|
|
719
720
|
vec3 displaced_position = position;
|
|
720
721
|
vec3 displaced_normal = normal;
|
|
721
722
|
|
|
@@ -727,8 +728,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
727
728
|
#ifndef USE_LAYER_DISPLACE
|
|
728
729
|
#include <begin_vertex>
|
|
729
730
|
#endif
|
|
730
|
-
`];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>"),r=n.join(`
|
|
731
|
-
`)}else{this.color===void 0&&(this.color=new _e(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 vec3 emissive;"
|
|
731
|
+
`];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(`
|
|
732
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new _e(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(`
|
|
732
733
|
`));let p=["#include <normal_fragment_begin>",`
|
|
733
734
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
734
735
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -744,7 +745,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
744
745
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
745
746
|
}
|
|
746
747
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
747
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var
|
|
748
|
+
`)}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 ma=class extends Ut{constructor(e=new ua,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 It=class extends ma{constructor(t,e,r){super(e,t),this.userData.type="PhongMaterial",this.userData.category="Phong",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new It(void 0,o);return n.fromJSON(e,r),n}static fromMaterial(t){let e=new It(t.map?{map:t.map}:{}),r=e.fragment;return r.color.value.copy(t.color),r.alpha.value=t.opacity,e}dispose(){super.dispose()}};import{UniformsLib as Nm,UniformsUtils as PS}from"three";var da=class extends ue{constructor(){super("lambert");this.nodeType="Lambert";this.color=new _e(5855577),this.emissive=new _e(0),this.emissiveIntensity=new te(1),this.penumbraSize=new dt(5,.5),this.shadingAlpha=new te(1),this.shadingBlend=new ve(0)}build(e){let r;if(e.define("LAMBERT"),e.requires.lights=!0,e.extensions.derivatives=!0,e.isShader("vertex")){let o=this.position?this.position.analyzeAndFlow(e,"v3",{cache:"position"}):void 0;e.mergeUniform(PS.merge([Nm.fog,Nm.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(`
|
|
748
749
|
`));let n=["#include <beginnormal_vertex>",`
|
|
749
750
|
#ifndef USE_LAYER_DISPLACE
|
|
750
751
|
#include <defaultnormal_vertex>
|
|
@@ -835,8 +836,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
835
836
|
}
|
|
836
837
|
#pragma unroll_loop_end
|
|
837
838
|
#endif
|
|
838
|
-
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),r=n.join(`
|
|
839
|
-
`)}else{this.color===void 0&&(this.color=new _e(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(["varying vec3 vViewPosition;","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(`
|
|
839
|
+
`," #include <shadowmap_vertex>"," #include <fog_vertex>"),n.push("vWPosition = ( modelMatrix * vec4( transformed, 1.0 ) ).xyz;"),r=n.join(`
|
|
840
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new _e(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(`
|
|
840
841
|
`));let p=["#include <normal_fragment_begin>",`
|
|
841
842
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
842
843
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -850,7 +851,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
850
851
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
851
852
|
}
|
|
852
853
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
853
|
-
`)}return r}copy(e){return super.copy(e),this.emissiveIntensity=e.emissiveIntensity.clone(),e.color&&(this.color=e.color.clone()),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),e.emissive&&(this.emissive=e.emissive.clone()),this}};var
|
|
854
|
+
`)}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 fa=class extends Ut{constructor(e=new da,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 bi=class extends fa{constructor(t,e,r){super(e,t),this.userData.type="LambertMaterial",this.userData.category="Lambert",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new bi(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{UniformsLib as Mm,UniformsUtils as OS}from"three";var ya=class extends ue{constructor(){super("toon");this.nodeType="Toon";this.color=new _e(5855577),this.specular=new _e(1118481),this.shininess=new te(30),this.penumbraSize=new dt(5,.5),this.shadingAlpha=new te(1),this.shadingBlend=new ve(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(OS.merge([Mm.fog,Mm.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(`
|
|
854
855
|
`));let n=["#include <beginnormal_vertex>",`
|
|
855
856
|
#ifndef USE_LAYER_DISPLACE
|
|
856
857
|
#include <defaultnormal_vertex>
|
|
@@ -867,8 +868,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
867
868
|
#ifndef USE_LAYER_DISPLACE
|
|
868
869
|
#include <begin_vertex>
|
|
869
870
|
#endif
|
|
870
|
-
`];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>"),r=n.join(`
|
|
871
|
-
`)}else{this.color===void 0&&(this.color=new _e(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(["#include <normal_pars_fragment>","#include <gradientmap_pars_fragment>","#include <fog_pars_fragment>","#include <bsdfs>","#include <lights_pars_begin>","#include <dithering_pars_fragment>",`
|
|
871
|
+
`];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(`
|
|
872
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize}),this.color===void 0&&(this.color=new _e(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>",`
|
|
872
873
|
varying vec3 vViewPosition;
|
|
873
874
|
struct ToonMaterial {
|
|
874
875
|
vec3 diffuseColor;
|
|
@@ -904,7 +905,7 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
904
905
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${a.result}, ${l.result} );
|
|
905
906
|
}
|
|
906
907
|
`),c&&p.push(c.code,`outgoingLight = spe_blend(outgoingLight, ${c.result}, 1.0, SPE_BLENDING_NORMAL);`),h?p.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${h.result} );`):p.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),p.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=p.join(`
|
|
907
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.specular=e.specular.clone(),this.shininess=e.shininess.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var
|
|
908
|
+
`)}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 ga=class extends Ut{constructor(e=new ya,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 vi=class extends ga{constructor(t,e,r){super(e,t),this.userData.type="ToonMaterial",this.userData.category="Toon",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new vi(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{UniformsLib as Ql,UniformsUtils as IS}from"three";var xa=class extends ue{constructor(){super("standard");this.nodeType="Standard";this.color=new _e(5855577),this.roughness=new te(.3),this.metalness=new te(0),this.reflectivity=new te(.5),this.penumbraSize=new dt(5,.5),this.shadingAlpha=new te(1),this.shadingBlend=new ve(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(IS.merge([Ql.fog,Ql.lights])),Ql.LTC_1&&(e.uniforms.ltc_1={value:void 0},e.uniforms.ltc_2={value:void 0}),e.addParsCode(["varying vec3 vViewPosition;","varying vec3 vWPosition;","#include <fog_pars_vertex>","#include <normal_pars_vertex>","#include <shadowmap_pars_vertex>","#include <clipping_planes_pars_vertex>"].join(`
|
|
908
909
|
`));let n=["#include <beginnormal_vertex>",`
|
|
909
910
|
#if !defined( USE_LAYER_DISPLACE )
|
|
910
911
|
#include <defaultnormal_vertex>
|
|
@@ -921,8 +922,8 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
921
922
|
#if !defined( USE_LAYER_DISPLACE )
|
|
922
923
|
#include <begin_vertex>
|
|
923
924
|
#endif /* !USE_LAYER_DISPLACE */
|
|
924
|
-
`];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>"),r=n.join(`
|
|
925
|
-
`)}else{let o={gamma:!0};this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let 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;","#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(`
|
|
925
|
+
`];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(`
|
|
926
|
+
`)}else{e.mergeUniform({penumbraSize:this.penumbraSize});let o={gamma:!0};this.color===void 0&&(this.color=new _e(5855577)),this.color.analyze(e,{slot:"color",context:o}),this.roughness.analyze(e),this.metalness.analyze(e),this.shadingAlpha.analyze(e),this.shadingBlend.analyze(e),this.afterColor&&this.afterColor.analyze(e,{slot:"afterColor"}),this.alpha&&this.alpha.analyze(e),this.reflectivity&&this.reflectivity.analyze(e);let 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(`
|
|
926
927
|
`));let m=["#include <clipping_planes_fragment>"," #include <normal_fragment_begin>",`
|
|
927
928
|
// NOTE: gl_FrontFacing alternative using face normal estimation.
|
|
928
929
|
vec3 viewdx = dFdx(vViewPosition);
|
|
@@ -938,5 +939,5 @@ vec4 getIBLVolumeRefraction( vec3 n, vec3 v, float roughness, vec3 position, mat
|
|
|
938
939
|
outgoingLight = spe_blend( diffuseColor, outgoingLight, ${l.result}, ${c.result} );
|
|
939
940
|
}
|
|
940
941
|
`),h&&m.push(h.code,`outgoingLight = spe_blend(outgoingLight, ${h.result}, 1.0, SPE_BLENDING_NORMAL);`),p?m.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${p.result} );`):m.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),m.push("#include <encodings_fragment>","#include <fog_fragment>","#include <dithering_fragment>"),r=m.join(`
|
|
941
|
-
`)}return r}copy(e){return super.copy(e),e.color&&(this.color=e.color.clone()),this.roughness=e.roughness.clone(),this.metalness=e.metalness.clone(),e.position&&(this.position=e.position.clone()),e.afterColor&&(this.afterColor=e.afterColor.clone()),e.alpha&&(this.alpha=e.alpha.clone()),e.reflectivity&&(this.reflectivity=e.reflectivity.clone()),e.shadingAlpha&&(this.shadingAlpha=e.shadingAlpha.clone()),e.shadingBlend&&(this.shadingBlend=e.shadingBlend.clone()),this}};var xa=class extends jt{constructor(e=new ga,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 vi=class extends xa{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof Lt){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new vi(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{Color as Ql}from"three";function Xe(i,t){let e;if(typeof i=="string"){let r=t==null?void 0: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 Bt(0,0,0,0))}else return"a"in i?new Bt(i.r,i.g,i.b,i.a):new Bt(i.r,i.g,i.b,1);return e}import{Matrix3 as Mm,Texture as Zl,Vector2 as Tn,Vector3 as to,Vector4 as Pm}from"three";function Om(i,t){switch(i.data.type){case"light":return nr(i);case"fresnel":return AS(i,t);case"gradient":return DS(i);case"depth":return BS(i);case"normal":return ES(i);case"noise":return _S(i,t);case"texture":return GS(i,t);case"rainbow":return zS(i);case"transmission":return RS(i,t);case"matcap":return FS(i,t);case"displace":return VS(i);case"color":default:return IS(i,t)}}function Im(i){return{type:i.data.type}}function nr(i){let{alpha:t,mode:e}=i.data;return q(I({},Im(i)),{alpha:t,mode:e})}function IS(i,t){return q(I({},nr(i)),{color:Xe(i.data.color,t)})}function AS(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i.data;return q(I({},nr(i)),{color:Xe(s,t),bias:e,scale:r,intensity:o,factor:n})}function DS(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i.data;return q(I({},nr(i)),{gradientType:t,smooth:e,colors:r.map(l=>new Pm(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Tn(...s),morph:new Tn(...a),angle:n})}function BS(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 q(I({},nr(i)),{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new to(...s),direction:a?new to(...a):new to(1,0,0),num:p,colors:l.map(u=>new Pm(u[0],u[1],u[2],u[3])),steps:c,smooth:h})}function ES(i){let{cnormal:t}=i.data;return q(I({},nr(i)),{cnormal:new to(t[0],t[1],t[2])})}function _S(i,t){let{data:e}=i;return q(I({},nr(i)),{scale:e.scale,move:e.move,fA:new Tn(...e.fA),fB:new Tn(...e.fB),size:new to(...e.size),distortion:new Tn(...e.distortion),colorA:Xe(e.colorA,t),colorB:Xe(e.colorB,t),colorC:Xe(e.colorC,t),colorD:Xe(e.colorD,t),noiseType:e.noiseType})}function GS(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 Zl,u;if(typeof a=="string")u=t==null?void 0:t.getImage(a);else{let m=new Image;m.src=Si(a.data),m.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad())},u=m}return p.image=u,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,q(I({},nr(i)),{texture:p,mat:new Mm().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 zS(i){let{data:t}=i;return q(I({},nr(i)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new to(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new to(...t.offset)})}function RS(i,t){let{data:e}=i;return q(I({},nr(i)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function FS(i,t){let e=new Zl,{image:r}=i.data.texture,o;if(typeof r=="string")o=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=Si(r.data),s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad())},o=s}e.image=o;let n=16777215;return q(I({},nr(i)),{color:n,texture:e})}function VS(i){let{data:t}=i,e=q(I({},Im(i)),{intensity:t.intensity});if(t.displacementType==="noise")return q(I({},e),{offset:new to(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new Zl,o=new Mm().setUvTransform(0,0,1,1,0,0,0);return q(I({},e),{texture:r,mat:o,crop:t.crop})}}function Am(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`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as Em,Vector4 as jS}from"three";var wi;(t=>{function i(e){return new Em(e.x,e.y,e.z).getHex()}t.getHex=i})(wi||(wi={}));var Dm;(t=>{function i(e){return new jS(e.r,e.g,e.b,e.a)}t.getThreeVector4=i})(Dm||(Dm={}));var Bm;(e=>{function i(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=i;function t(r){return new Em(r.r,r.g,r.b).getHex()}e.getHex=t})(Bm||(Bm={}));function Nn(i,t){return typeof i=="string"?t.getMaterialOrDeletedPlaceholder(i):ec(i,t)}function _m(i,t){return i.map(e=>Nn(e,t))}function ec(i,t){var s,a;let e=(s=i.layers)!=null?s:xo.defaultTwoLayerData("phong").layers,r=US(e),o;switch(r.category){case"basic":o=new dt;break;case"lambert":{o=new xi;break}case"toon":{o=new bi;break}case"physical":o=new vi;break;case"phong":default:{o=new Ot;break}}o.name=(a=i.name)!=null?a:"Untitled Material";let n=o.userData.layers;kS(n);for(let l=e.length-1;l>=0;l--)HS(n,e[l],t);switch(r.category){case"basic":break;case"lambert":{let h=o,u=Xe(r.emissive,t);u instanceof Ql?h.emissive.value=u:h.emissive.value.setHex(wi.getHex(u));break}case"toon":{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof Ql?h.specular.value=u:h.specular.value.setHex(wi.getHex(u));break}case"physical":let l=o,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof Ql?h.specular.value=u:h.specular.value.setHex(wi.getHex(u));break}}return n.blendColors(),n.blendAfterColors(),n.blendPositions(),o}function US(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 kS(i){for(let t of i.getLayers())i.removeLayer(t.id)}function HS(i,t,e){let r=Om(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let o=i.addLayer(r);o.uuid=t.id;for(let n in t.data)Am(n,o,t.data)}import{Mesh as QS,Matrix4 as ew}from"three";import{Matrix4 as rc}from"three";import{Box3 as jm,Line3 as Jt,Matrix4 as tc,Vector3 as Ve}from"three";import{HemisphereLight as Gm}from"three";var ba=i=>"isEntity"in i,br=i=>"isAbstractMesh"in i,vr=i=>i!==null&&i.isBooleanMesh,zm=i=>i.objectType==="CombinedCamera";var Gr=i=>"objectHelper"in i;function qS(i,t){var r;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((r=t.hiddenMatrix)!=null?r:$r.identity)),e&&(i.updateMatrix(),vr(i.parent)&&br(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 WS(i,t){qS(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 Rm(i,t,e){WS(i,t),t.color!==void 0&&(i.color=Xe(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof Gm)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof Gm)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&Gr(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function Fm(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 Li=new jm,ft=new Ve,he=new Ve,tt=new tc;function $S(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),m=t.getZ(h);p<o&&(o=p),u<n&&(n=u),m<s&&(s=m),p>a&&(a=p),u>l&&(l=u),m>c&&(c=m)}return i.min.set(o,n,s),i.max.set(a,l,c),i}var Vm=(i,t,e,r)=>{var o;if(br(i)){let n=i.geometry.userData.parameters,s=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?ft.copy(i.originalGeometry.boundingSphere.center):s!==void 0&&($S(Li,s,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:s.count),Li.getCenter(ft)),i.forceComputeSize?Li.getSize(he).multiplyScalar(.5):he.set(n.width,n.height,(o=n.depth)!=null?o:0).multiplyScalar(.5)}else if(Gr(i)&&r===!0){let n=i.geometryHelper.getAttribute("position");Li.setFromArray(n.array),Li.getCenter(ft),Li.getSize(he).multiplyScalar(.5)}else ft.setScalar(0),he.setScalar(0);tt.copy(t).multiply(i.matrixWorld),he.x===0&&he.y===0&&he.z===0?e.push(new Ve(ft.x,ft.y,ft.z).applyMatrix4(tt)):e.push(new Ve(-he.x,he.y,he.z).add(ft).applyMatrix4(tt),new Ve(-he.x,-he.y,he.z).add(ft).applyMatrix4(tt),new Ve(he.x,-he.y,he.z).add(ft).applyMatrix4(tt),new Ve(he.x,he.y,he.z).add(ft).applyMatrix4(tt),new Ve(-he.x,he.y,-he.z).add(ft).applyMatrix4(tt),new Ve(-he.x,-he.y,-he.z).add(ft).applyMatrix4(tt),new Ve(he.x,-he.y,-he.z).add(ft).applyMatrix4(tt),new Ve(he.x,he.y,-he.z).add(ft).applyMatrix4(tt))},Mn=class extends jm{constructor(){super(...arguments);this.matrix=new tc;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 tc().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&&Vm(s,r,n,e.enableHelper===!0)}):Vm(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(tt.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(he).multiplyScalar(.5),this.getCenter(ft),tt.copy(this.matrix).setPosition(ft),this.vertices=[new Ve(-he.x,he.y,he.z).applyMatrix4(tt),new Ve(-he.x,-he.y,he.z).applyMatrix4(tt),new Ve(he.x,-he.y,he.z).applyMatrix4(tt),new Ve(he.x,he.y,he.z).applyMatrix4(tt),new Ve(-he.x,he.y,-he.z).applyMatrix4(tt),new Ve(-he.x,-he.y,-he.z).applyMatrix4(tt),new Ve(he.x,-he.y,-he.z).applyMatrix4(tt),new Ve(he.x,he.y,-he.z).applyMatrix4(tt)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new Jt(this.vertices[0],this.vertices[3]),new Jt(this.vertices[1],this.vertices[2]),new Jt(this.vertices[5],this.vertices[6]),new Jt(this.vertices[4],this.vertices[7]),new Jt(this.vertices[0],this.vertices[1]),new Jt(this.vertices[3],this.vertices[2]),new Jt(this.vertices[7],this.vertices[6]),new Jt(this.vertices[4],this.vertices[5]),new Jt(this.vertices[0],this.vertices[4]),new Jt(this.vertices[1],this.vertices[5]),new Jt(this.vertices[2],this.vertices[6]),new Jt(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new Ve))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new Ve().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new Ve().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new Ve().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new Ve().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new Ve().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new Ve().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};import{Object3D as JS,Matrix4 as YS,Light as KS}from"three";function Pn(i){let t=[];for(let e in i){let r=i[e];delete r.metadata,t.push(r)}return t}function XS(i){let t=[];for(let e in i)t.push(i[e]);return t}var va=i=>class extends i{hasEntityChild(){return this.children.some(e=>ba(e))}isDescendantOf(e){e instanceof JS&&(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 YS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),ba(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}toJSON(e){let r=e===void 0,o={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},o.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let n={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(n.name=this.name),n.matrix=this.matrix.toArray(),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),n.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData),this.children.length>0){n.children=[];for(let s of this.children)(ba(s)||s instanceof KS)&&n.children.push(s.toJSON(e).object)}if(r){let s=Pn(e.geometries),a=Pn(e.materials),l=Pn(e.textures),c=Pn(e.images),h=Pn(e.interactionStates),p=XS(e.nodes);s.length>0&&(o.geometries=s),a.length>0&&(o.materials=a),l.length>0&&(o.textures=l),c.length>0&&(o.images=c),h.length>0&&(o.interactionStates=h),p.length>0&&(o.nodes=p)}return o.object=n,o}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var Yt=i=>"isEntity"in i,Um=i=>"isAbstractMesh"in i,Kt=i=>class extends va(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new rc;this._singleBBox=new Mn;this._recursiveBBox=new Mn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Yt(o)&&o.traverseEntity(n=>{Gr(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=>{Yt(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)Yt(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)Yt(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)Yt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new rc,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)Yt(n)&&n.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),n=o.object;return this.raycastLock===!0&&(n.raycastLock=!0),this.scaleLock===!0&&(n.scaleLock=!0),n.hiddenMatrix=this.hiddenMatrix.toArray(),o}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let o=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new rc}),this.copy(r),r.children=o,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return $o(o,r)}fromObjectTransformState(r){return r.position&&this.position.fromArray(r.position),r.rotation&&this.rotation.fromArray(r.rotation),r.scale&&this.scale.fromArray(r.scale),r.hiddenMatrix&&this.hiddenMatrix.fromArray(r.hiddenMatrix),this.updateMatrix(),this}toState(r=[]){let o=I({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return $o(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as ZS,Vector3 as On,Euler as km,MathUtils as ro}from"three";var Co=class extends ZS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new On),n=.1;this.parameters=xs.defaultData(o.toArray(),n),uo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(e){let r=this.object.material.map(o=>o.clone());for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let r=this.object.material.clone();for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let 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*ro.DEG2RAD,n=r.end*ro.DEG2RAD,s=o-n,a=new km(r.rotation[0]*ro.DEG2RAD,r.rotation[1]*ro.DEG2RAD,r.rotation[2]*ro.DEG2RAD),l;switch(r.axis){case"z":l=new On(0,0,1);break;case"y":l=new On(0,1,0);break;default:case"x":l=new On(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 km(r.rotation[0]*ro.DEG2RAD,r.rotation[1]*ro.DEG2RAD,r.rotation[2]*ro.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 On(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}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),uo(this.parameters,e),this.update(),this}};var rt=class extends Kt(QS){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new ew;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=oc[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(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,o){ln.resizeGeometry(this.geometry,{width:e,height:r,depth:o})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=In(r),n=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new Co(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new Co(this)),this.cloner.fromClonerState(e))}fromState(e,r){var o,n,s;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(o=e.castShadow)!=null?o:!0,this.receiveShadow=(n=e.receiveShadow)!=null?n:!0,this.booleanExclude=(s=e.booleanExclude)!=null?s:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Xt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),vr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)br(e)&&(e.freeBooleanPointer(),vr(e)&&e.invalidateUpstreamBooleanData())}};var iw=new ic(0,0,1),Hm=new ic,qm=new ic,Wm=new ow,oo=class extends rt{constructor(e=ut.create({}),r=new dt({side:tw})){var o;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new rw;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){var r,o;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),Wm.getNormalMatrix(this.matrixWorld),Hm.copy(iw).applyMatrix3(Wm).normalize(),qm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(Hm,qm)}clone(e){let r=this.shape.clone(),o=this.material.clone(),n=this.geometry.userData,s=ut.create(Object.assign({},n,{shape:r})),a=new oo(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){rt.prototype.raycast.call(this,e,r)}};function Sa(i,t){return sw(i)}function sw(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Pe.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var o;return r.materialIndex=Math.max((o=r.materialIndex)!=null?o:0,0)}),t.geometry=new nw().parse(i));let e;try{e=In(t)}catch(r){console.error(r)}if(!e){let r=Pe.createFromState(ti.defaultData(),100,100);t.shape=r,e=In(t)}return e}var fe;ia.then(i=>{fe=i});var Ym=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Km=new Uint32Array([0,1,2,3]),Xm=new Uint8Array([4]),Zt=class{static build(i,t,e,r,o){var c,h;let n,s,a,l=(h=(c=i==null?void 0:i.phongAngle)!=null?c:t==null?void 0:t.phongAngle)!=null?h:35;if(r===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(fe.free_bvh(e),fe.free_subdivision_surface(e));try{n=Zt.allocate(i,o)}catch(p){console.error(p,i),n=Zt.allocate({positionWASM:Ym,indexWASM:Km,verticesPerFaceWASM:Xm},o)}fe.set_destination_refinement_level(n,0),s=Zt.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=Zt.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(fe.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Zt.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:Sa(i),r,o,n,s;return{positions:r,triIndices:s}=hc(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=pc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){var N;let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=Ym,r=Km,o=Xm);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,m=h*Float32Array.BYTES_PER_ELEMENT,f=p*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(u),b=new Float32Array(fe.HEAPF32.buffer,g,h),y=new Uint32Array(fe.HEAPU32.buffer,g+m,p);b.set(e,0),b.set(n,e.length),b.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let v;(N=i==null?void 0:i.scaleBaked)!=null&&N.some(w=>w!==1)&&(v=new aw().makeScale(...i.scaleBaked)),t&&(v?v.premultiply(t):v=t);let D=v?fe.alloc_subdivision_surface2(g,a,g+m,l,g+m+r.length*Uint32Array.BYTES_PER_ELEMENT,c,v.elements):fe.alloc_subdivision_surface(g,a,g+m,l,g+m+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return fe._free(g),D}static buildLevel(i,t,e,r,o){let n=o?fe.get_mesh_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e,o.elements):fe.get_mesh_data(i,t?fe.Level.CONTROL:fe.Level.REFINED,e),s=8,a=fe.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,h=fe.HEAPU32[a[c]>>2],p=fe.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=fe.HEAPU32[a[c]>>2],m=fe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=fe.HEAPU32[a[c]>>2],g=fe.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let b=fe.HEAPU32[a[c]>>2],y=fe.HEAPU32.subarray(b>>2,(b>>2)+l[c]);if(c++,r===void 0){let v=new $m;if(v.setIndex(new nc(y,1)),v.setAttribute("position",new sc(p,3)),v.setAttribute("normal",new sc(m,3)),t){v.setAttribute("faceMap",new nc(g,1));let D=new Float32Array(m.length/3*4).fill(0);v.setAttribute("color",new Jm(D,4))}return fe.free_mesh_data(n),v.userData.type="SubdivGeometry",v}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,fe.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=fe.get_wireframe_data_for_base_level(i),o=4,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=fe.HEAPU32[n[a]>>2],c=fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=fe.HEAPU32[n[a]>>2],p=fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new $m;u.setAttribute("position",new sc(c,3));let m=new Float32Array(c.length);for(let f=0,g=c.length;f<g;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return u.setAttribute("color",new Jm(m,3)),u.setIndex(new nc(p,1)),fe.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||fe.set_destination_refinement_level(i,1);let r=e?fe.get_topological_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e.elements):fe.get_topological_data(i,t?fe.Level.CONTROL:fe.Level.REFINED),o=6,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=fe.HEAPU32[n[a]>>2],c=new Float32Array(fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=fe.HEAPU32[n[a]>>2],p=new Uint32Array(fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=fe.HEAPU32[n[a]>>2],m=new Uint8Array(fe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return fe.free_topological_data(r),{positions:c,indices:p,verticesPerFace:m}}};var Zm=["getX","getY","getZ"];function hc(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[Zm[u]](h)*a)},`;if(p in e)n.push(e[p]);else{for(let u=0;u<3;u++)s.push(i[Zm[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 wa=new La,ac=new La,lc=new La,cc=new La;function pc(i,t,e){var n;let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<s.length;c+=2)a+=(s[c]-s[(c===0?s.length:c)-2])*(s[c+1]+s[(c===0?s.length:c)-1]);i.length=0;let l=0;if(a<0)for(let c=0;c<s.length;c+=2)i.push(s[c],s[c+1],0),r.push(l++);else for(let c=s.length-2;c>=0;c-=2)i.push(s[c],s[c+1],0),r.push(l++);return o.push(l),{indices:r,verticesPerFace:o}}for(let s=0,a=(n=e.capStartIndex)!=null?n:t.length;s<a;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){wa.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),ac.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),lc.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),cc.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),ac.sub(wa).normalize(),lc.sub(wa).normalize(),cc.sub(wa).normalize();let l=ac.cross(lc).dot(cc);Math.abs(l)>.005?(r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3):(r.push(t[s],t[s+1],t[s+4],t[s+5]),o.push(4),s+=6)}else r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],l=0;for(let c=0,h=0;c<i.length;c+=3,h++)i[c+2]===0&&(s.push(h),l++),i[c+2]===e.userData.parameters.depth&&a.push(h);if(e.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}s.reverse(),r.push(...s,...a),o.push(l,l)}return{indices:r,verticesPerFace:o}}var Xt={};Tc(Xt,{calcBoolean:()=>uw,calcBooleanTopological:()=>pw,freeMeshSet:()=>fw,getMeshSet:()=>mw,transformMeshSet:()=>dw});var lw,Qm=new Promise(i=>{lw=i});import{Float32BufferAttribute as ed,Sphere as cw}from"three";var Le,Ci;Qm.then(i=>Le=i);function hw(i,t){let e,{positions:r,triIndices:o}=hc(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=pc(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 td(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=Le._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Le.HEAPU32.buffer,n,t):new Float32Array(Le.HEAPF32.buffer,n,t)).set(i,0),n}function rd(i){switch(i){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function pw(i,t){Ci===void 0&&(Ci=Le.init_csg());let e=td(i),r=Le.csg_calc_topological(Ci,e,i.length,rd(t));Le._free(e);let o=6,n=Le.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=Le.HEAPU32[n[a]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=Le.HEAPU32[n[a]>>2],p=new Uint32Array(Le.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=Le.HEAPU32[n[a]>>2],m=new Uint8Array(Le.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return Le.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:m}}function uw(i,t,e,r){Ci===void 0&&(Ci=Le.init_csg());let o=td(i),n=Le.csg_calc(Ci,o,i.length,r,rd(t));Le._free(o);let s=5,a=Le.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,h=Le.HEAPU32[a[c]>>2],p=Le.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=Le.HEAPU32[a[c]>>2],m=Le.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new ed(p,3)),e.setAttribute("normal",new ed(m,3));let g=Le.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new cw),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},Le.free_mesh_data(n),f}function mw(i,t){if(Le===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((b,y)=>b+y,0)+o);for(let b=0,y=0,v=0;b<g.verticesPerFace.length;b++){r[v++]=g.verticesPerFace[b];for(let D=0;D<g.verticesPerFace[b];D++)r[v++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=hw(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=Le._malloc(c),m=new Float32Array(Le.HEAPF32.buffer,u,a),f=new Uint32Array(Le.HEAPU32.buffer,u+h,l);return m.set(e,0),f.set(r,0),Le.get_csg_mesh(u,n,u+h,s,o)}function dw(i,t){Le.transform_csg_mesh(i,t.elements)}function fw(i){Le.free_csg_mesh(i)}var oc={ConeGeometry:xu,CubeGeometry:bu,CylinderGeometry:gu,DodecahedronGeometry:vu,EllipseGeometry:$u,HelixGeometry:Zu,IcosahedronGeometry:Qu,LatheGeometry:em,NonParametricGeometry:im,PolygonGeometry:nm,PyramidGeometry:sm,RectangleGeometry:ra,SphereGeometry:am,PlaneGeometry:lm,BackdropGeometry:cm,StarGeometry:hm,TextFrameGeometry:oa,TorusGeometry:pm,TorusKnotGeometry:um,TriangleGeometry:mm,VectorGeometry:ut},In=i=>oc[i.type].create(i);import{BufferGeometry as od,Matrix4 as yw}from"three";var id=new yw;var Ca=class extends rt{constructor(e=new od,r=new Ot){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){var o;if(this.booleanMeshSetAddress!==-1)return;for(let n=0;n<this.children.length;n++){let s=this.children[n];vr(s)&&s.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let s=this.children[n];if(Um(s)&&s.booleanExclude===!1&&((o=s.geometry.attributes.position)==null?void 0:o.count)>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Xt.getMeshSet(s.geometry,e===!0),s.booleanMeshSetAddress===-1)return;Xt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else vr(s)&&s.needsTransformForDownstream===!0?(Xt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(id.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Xt.transformMeshSet(s.booleanMeshSetAddress,id),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Xt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new od,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Xt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}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()}};import{Camera as Dw,OrthographicCamera as Bw,PerspectiveCamera as Ew,Vector3 as Ut,Object3D as ad,Quaternion as _w}from"three";import{BoxBufferGeometry as gw}from"three";var Sr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new gw(30,30,30),t};import{Camera as ww,LineSegments as Lw,BufferGeometry as Cw,LineBasicMaterial as Tw,Color as mc,Vector3 as Nw,Float32BufferAttribute as sd}from"three";import{Ray as xw,Sphere as bw,Matrix4 as vw,Vector3 as zr}from"three";var Ta=new xw,uc=new bw,nd=new vw,wr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),uc.copy(n.boundingSphere),uc.applyMatrix4(s),e.ray.intersectsSphere(uc)===!1||(nd.copy(s).invert(),Ta.copy(e.ray).applyMatrix4(nd),n.boundingBox!==null&&Ta.intersectsBox(n.boundingBox)===!1))return;let a,l,c,h,p=n.index,u=n.attributes.position,m=n.drawRange,f,g;if(o===!1){let y=Math.max(0,m.start),v=Math.min(p.count,m.start+m.count);for(f=y,g=v;f<g;f+=3)if(l=p.getX(f),c=p.getX(f+1),h=p.getX(f+2),a=b(i,e,Ta,u,l,c,h),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let v=n.attributes.position,D=new zr,N=new zr,w=new zr,H=new zr,T=2,O=1/((i.scale.x+i.scale.y+i.scale.z)/3),x=O*O,L=Math.max(0,m.start),C=Math.min(v.count,m.start+m.count);for(let P=L,$=C-1;P<$;P+=T){if(D.fromBufferAttribute(v,P),N.fromBufferAttribute(v,P+1),Ta.distanceSqToSegment(D,N,H,w)>x)continue;H.applyMatrix4(i.matrixWorld);let oe=e.ray.origin.distanceTo(H);oe<e.near||oe>e.far||r.push({distance:oe,point:w.clone().applyMatrix4(i.matrixWorld),object:i})}}function b(y,v,D,N,w,H,T){let d=new zr,O=new zr,x=new zr,L=new zr,C=new zr;if(d.fromBufferAttribute(N,w),O.fromBufferAttribute(N,H),x.fromBufferAttribute(N,T),D.intersectTriangle(d,O,x,!1,L)===null)return null;C.copy(L),C.applyMatrix4(y.matrixWorld);let $=v.ray.origin.distanceTo(C);return $<v.near||$>v.far?null:{faceIndex:1,distance:$,point:C.clone(),object:y}}};var Na=new Nw,Qt=new ww,dc=class extends Lw{constructor(e){let r=new Cw,o=new Tw({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new mc(15711266),c=new mc(15711266),h=new mc(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(m,f,g){u(m,g),u(f,g)}function u(m,f){n.push(0,0,0),s.push(f.r,f.g,f.b),a[m]===void 0&&(a[m]=[]),a[m].push(n.length/3-1)}r.setAttribute("position",new sd(n,3)),r.setAttribute("color",new sd(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;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;sr("n1",r,e,Qt,-n,-s,a),sr("n2",r,e,Qt,n,-s,a),sr("n3",r,e,Qt,-n,s,a),sr("n4",r,e,Qt,n,s,a);let l=a;sr("f1",r,e,Qt,-n,-s,l),sr("f2",r,e,Qt,n,-s,l),sr("f3",r,e,Qt,-n,s,l),sr("f4",r,e,Qt,n,s,l);let c=l,h=.5;sr("u1",r,e,Qt,n*.7*h,s*1.1,c),sr("u2",r,e,Qt,-n*.7*h,s*1.1,c),sr("u3",r,e,Qt,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function sr(i,t,e,r,o,n,s){Na.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],Na.x,Na.y,Na.z)}}var Ma=class extends Sr(dc){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){wr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as Mw}from"three";var Ti=class extends Sr(Mw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){wr(this.object,Ti.geometryHelper,e,r)}};import{AxesHelper as Pw}from"three";var Ni=class extends Sr(Pw){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){wr(this.object,Ni.geometryHelper,e,r)}update(){}};import{PointLightHelper as Ow}from"three";var Mi=class extends Sr(Ow){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){wr(this.object,Mi.geometryHelper,e,r)}};import{SpotLightHelper as Iw,Vector3 as Aw}from"three";var Pa=class extends Sr(Iw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){wr(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)}}},An=Pa;An._vector=new Aw;var Lr=(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)Yt(n)&&n.traverseEntity(s=>{Gr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}copy(o,n=!0){return super.copy(o,n),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let n=super.toJSON(o),s=n.object;return s.enableHelper=this.enableHelper,n}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Xe(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 Pi=new Ut,fc=new Ut,Rr=class extends Lr(Kt(Dw),Ma){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=mo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Bw(e*-.5,e*.5,r*.5,r*-.5,n!=null?n:-5e4,s),this.perspCamera=new Ew(o,e/r,n!=null?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 Rr().fromState(r);return o.enableHelper=!0,o.objectHelper.update(),o.uuid=e,o}get isPerspectiveCamera(){return this.cameraType==="PerspectiveCamera"}get isOrthographicCamera(){return!this.isPerspectiveCamera}get cameraType(){return this._cameraType}setNear(e,r){e==="PerspectiveCamera"?this.perspCamera.near=r:this.orthoCamera.near=r}setZoom(e,r){r>=0&&(e==="PerspectiveCamera"?this.perspCamera.zoom=r:this.orthoCamera.zoom=r)}set cameraType(e){e==="PerspectiveCamera"?this.toPerspective():e==="OrthographicCamera"&&this.toOrthographic()}get near(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.near:this.orthoCamera.near}set near(e){this._cameraType==="PerspectiveCamera"?this.perspCamera.near=e:this.orthoCamera.near=e}get zoom(){return this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom:this.orthoCamera.zoom}set zoom(e){e>=0&&(this._cameraType==="PerspectiveCamera"?this.perspCamera.zoom=e:this.orthoCamera.zoom=e)}lookAt(e){super.lookAt(e),this.getWorldPosition(Pi),this.targetOffset=Pi.distanceTo(e)}getTarget(e=new Ut){return this.getWorldDirection(fc),this.getWorldPosition(Pi),fc.multiplyScalar(this.targetOffset),e.copy(Pi).add(fc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Pi),Pi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new _w),r=new Ut(0,0,1).applyQuaternion(e),o=new Ut().copy(ad.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new Ut().copy(ad.DefaultUp).projectOnPlane(r),s=new Ut().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new Ut),n=e.getWorldDirection(new Ut).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new Ut),n=this.getWorldDirection(new Ut).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}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},o={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=o.near,this.perspCamera.far=o.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="CombinedCamera",o.cameraType=this.cameraType,o.targetOffset=this.targetOffset,o.isUpVectorFlipped=this.isUpVectorFlipped,o.angleOffsetFromUp=this.angleOffsetFromUp,o.left=this.left,o.right=this.right,o.top=this.top,o.bottom=this.bottom,this.view!==null&&(o.view=Object.assign({},this.view)),o.zoomOrtho=this.orthoCamera.zoom,o.nearOrtho=this.orthoCamera.near,o.far=this.far,o.aspect=this.aspect,o.fov=this.fov,o.focus=this.focus,o.filmGauge=this.filmGauge,o.filmOffset=this.filmOffset,o.zoomPersp=this.perspCamera.zoom,o.nearPersp=this.perspCamera.near,r}fromJSON(e){var r;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let o=this.getWorldPosition(new Ut),n=new Ut().fromArray(e.orbitControlsTarget);this.targetOffset=n.distanceTo(o)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=e.angleOffsetFromUp)!=null?r:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return $o(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return q(I(I({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as Gw}from"three";var Fr=class extends Lr(Kt(Gw),Ni){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Fr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as zw,CameraHelper as Oa}from"three";var Oi=class extends Lr(Kt(zw),Ti){constructor(...e){super(...e);this.objectType="LightDirectional";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.top=1250,o.bottom=-1250,o.right=1250,o.left=-1250,o.near=1,o.far=2500;let n=new Oa(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Oi().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 Oa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Oa&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightDirectional",o.color=this.color.getHex(),o.intensity=this.intensity,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.left=o.left,r.right=o.right,r.top=o.top,r.bottom=o.bottom,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Fm(this,e.size),o&&this.update(),this}fromState(e,r){return super.fromState(e),this.fromDirectionalLightState(e,r),this}};import{PointLight as Rw,Vector3 as Ia,Box3 as Fw,Box3Helper as Aa,Color as Vw}from"three";var Ii=class extends Lr(Kt(Rw),Mi){constructor(...e){super(...e);this.objectType="LightPoint";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=90,o.aspect=1,o.near=100,o.far=2500;let n=new Ia(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ia(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Fw(n,s),l=new Aa(a,new Vw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new Ii().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 Aa&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Aa&&(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 Aa){let o=this.shadow.camera,n=new Ia(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Ia(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()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightPoint",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.decay=this.decay,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as jw,CameraHelper as Da,MathUtils as Uw,Vector3 as pd,Quaternion as kw}from"three";var ld=new pd,cd=new pd,hd=new kw,Ai=class extends Lr(Kt(jw),An){constructor(...e){super(...e);this.objectType="LightSpot";this._gizmos={};this.castShadow=!0,this.shadow.mapSize.width=1024,this.shadow.mapSize.height=1024;let o=this.shadow.camera;o.fov=Uw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Da(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Ai().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 Da&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),cd.setFromMatrixPosition(this.matrixWorld),hd.setFromRotationMatrix(this.matrixWorld),ld.copy(this.up).applyQuaternion(hd).negate().multiplyScalar(this.distance),this.target.position.copy(cd).add(ld),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightSpot",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.angle=this.angle,o.decay=this.decay,o.penumbra=this.penumbra,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),this}fromState(e,r){return super.fromState(e),this.fromSpotLightState(e,r),this}};import{VideoTexture as Hw}from"three";var ud=i=>i.tagName==="VIDEO",To=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;ud(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];Sm(a)&&(To.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;ud(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 Di=class extends rt{constructor(e,r=new dt){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&To.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,o;if(e instanceof Hw){let a=e.image;r=a.videoWidth*.5,o=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,o=a.height*.5}let n=ra.create({parameters:{width:r,height:o}}),s=new dt;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Di(n,s)}};var Bi=class extends rt{constructor(e,r=new Ot){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var Ei=class extends Bi{constructor(e,r=new Ot){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as qw,Mesh as Ww,MeshBasicMaterial as $w,ShapeBufferGeometry as Jw,Vector2 as Yw,Vector3 as Kw}from"three";import{FontLoader as Xw}from"three/examples/jsm/loaders/FontLoader.js";var Ze=class extends Ww{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new $w({color:0,opacity:1,visible:!0,transparent:!0,side:qw})){let c=Ze.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?r:e,this.fontFamily=o,this.letterSpacing=n,this.fontSize=s,this.LOD=a,this.resolution=c.resolution,this.glyphsHa=c.glyphsHa,this.localPosition=new Yw,this.charSize=0,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}static get FONTS_PATH(){return Ze._fontPath}static set FONTS_PATH(e){Ze._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Kw(this.localPosition.x,-this.localPosition.y,0);this.position.copy(o).add(r)}updateFontSize(e){let r=e/this.resolution;this.fontSize=e,this.scale.set(this.fontSize,this.fontSize,1),this.charSize=this.glyphsHa*r*this.letterSpacing}updateFontFamily(e){if(this.fontFamily===e)return;this.fontFamily=e;let r=Ze.loadChar(this.char,e,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateChar(e){if(this.char===e)return;this.char=e;let r=Ze.loadChar(e,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}updateLetterSpacing(e){this.letterSpacing!==e&&(this.letterSpacing=e,this.updateFontSize(this.fontSize))}updateLOD(e){if(this.LOD===e)return;this.LOD=e;let r=Ze.loadChar(this.char,this.fontFamily,this.LOD);this.geometry=r.geometry,this.resolution=r.resolution,this.glyphsHa=r.glyphsHa,this.geometry.userData={type:"CharacterGeometry",parameters:{char:this.char,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,lod:this.LOD,resolution:this.resolution,charSize:this.charSize,localPosition:this.localPosition}},this.updateFontSize(this.fontSize)}clone(){let e={char:this.char,originalChar:this.originalChar,fontFamily:this.fontFamily,letterSpacing:this.letterSpacing,fontSize:this.fontSize,LOD:this.LOD};return new Ze(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Ze.fontCache[e]?r(Ze.fontCache[e]):new Xw().load(Ze.FONTS_PATH+e+".json",s=>{Ze.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Ze.charCache[e]){if(Ze.charCache[e][o]&&Ze.charCache[e][o].fontFamily===r)return Ze.charCache[e][o]}else Ze.charCache[e]={};let n=Ze.fontCache[r],s=n.generateShapes(e,1);return Ze.charCache[e][o]={geometry:new Jw(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},Ze.charCache[e][o]}},It=Ze;It.charCache={},It.fontCache={},It._fontPath="/_assets/_fonts/";import{DoubleSide as Ea,MeshBasicMaterial as dd,Vector3 as fd,Object3D as Zw}from"three";import{Vector2 as md}from"three";var Ba=new md,io=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new md(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){Ba.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Ba),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),Ba.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Ba),e)}clone(){let t=new io(this.yLinePos,this.lineHeight,this.maxCharSize);t.nextChar3DPos=this.nextChar3DPos.clone(),t.align=this.align,t.endLine=this.endLine;for(let e=0;e<this.message.length;e++)t.message.push(this.message[e].clone());return t}};var yc=class extends rt{constructor(e,r=new dt({transparent:!0,opacity:1,visible:!1,side:Ea})){super(e,r);this.objectType="TextFrame";this.charContainer=new Zw,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 fd(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=oa.create({parameters:{width:r.width,height:r.height}}),s=new yc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await It.loadFont(o),r.text=e;let n=r.textOrigin,s=new dd({visible:r.visible,transparent:!0,side:Ea}),a=e.split(`
|
|
942
|
-
`),l=0;this.userData.textFrame.textLines=a.map((c,h)=>{let p=new io(l,r.lineHeight,r.fontSize);return p.message=c.split("").map(u=>{let m={char:u,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new It(m,f);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 It&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){var h,p,u,m;let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=(p=(h=e.parameters)==null?void 0:h.width)!=null?p:n,l=(m=(u=e.parameters)==null?void 0:u.height)!=null?m: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 io(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){var n;let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++){let c=a[l].material;(n=c.color)!=null&&n.isColor&&(c.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 It.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 It.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()}toJSON(e){let r=super.toJSON(e),o=r.object;o.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return o.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await It.loadFont(r.fontFamily),r.textOrigin=new fd(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new dd({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:Ea});r.textLinesData&&(r.textLines=r.textLinesData.map((n,s)=>{let a=new io(Number(n.yLinePos),Number(n.lineHeight),Number(n.maxCharSize)),l=n.message.map((c,h)=>{if(c.char===void 0){let m=r.textLines[s].message[h];if("geometries"in m){let f=m.geometries[0].userData.parameters;Object.assign(c,{LOD:f.lod,char:f.char,fontFamily:f.fontFamily,fontSize:f.fontSize,letterSpacing:f.letterSpacing,originalChar:f.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},u=new It(p,o.clone());return a.addChar3D(u,r.textOrigin),this.charContainer.add(u),u});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Xe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,o=new Fr;o.name="Text Shape";let n=It.fontCache[e];for(let s of this.charContainer.children)s instanceof It&&n.generateShapes(s.char,1).forEach(a=>{let l=new Pe().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=ut.create({shape:l}),h=new dt({side:Ea});h.color=r;let p=new oo(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},No=yc;No.VerticalAlign=cl,No.HorizontalAlign=ll,No.TextTransform=hl;import{HemisphereLight as u1,Scene as m1,Vector3 as d1,Color as Pd,Fog as f1,Box3 as y1}from"three";import{Box3 as Qw,Matrix4 as Mo,Sphere as xd,Vector3 as e1}from"three";var vd=Xd(gd());var gc;ia.then(i=>{gc=i});var Sd=new Mo,t1=new Mo,r1=new Mo,ar=new Qw,no=new e1,o1=new Mo,i1=new Mo,_i=class extends rt{constructor(e,r,o,n=new Ot){super(o!=null?o:r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Mo;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Mo;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Zt.build(r.geometry,void 0,void 0,!r.flatShading),l=Nn(r.material,o),c=new _i(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 Ei(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e,r){var a,l,c;let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Zt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&((a=this.originalGeometry)==null||a.dispose(),this.originalGeometry=o),n!==void 0&&((l=this.subdividedGeometry)==null||l.dispose(),this.subdividedGeometry=n!=null?n:void 0),this.geometry=(c=this.subdividedGeometry)!=null?c:this.originalGeometry,this.cloner)for(let h of this.cloner.children)h.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Zt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Zt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=Zt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Zt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=(e=this.subdividedGeometry)!=null?e:this.originalGeometry}raycast(e,r){var o;this.geometry=this.originalGeometry,rt.prototype.raycast.call(this,e,r),this.geometry=(o=this.subdividedGeometry)!=null?o:this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:n,q:s}=(0,vd.SVD)(r),a=Sd.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=t1.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=r1.copy(l).transpose();this.shearScale=o1.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=i1.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 xd);let r=e.attributes.position,o=e.boundingSphere.center;ar.setFromBufferAttribute(r),ar.getCenter(o),e.boundingSphere.radius=o.distanceTo(ar.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(no);let n={width:no.x,height:no.y,depth:no.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;ar.min.set(e[0],e[2],e[4]),ar.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(ar.min.applyMatrix4(this.shearScaleInv),ar.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new xd);let o=r.boundingSphere.center;ar.getCenter(o),r.boundingSphere.radius=o.distanceTo(ar.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),ar.getSize(no);let n={width:no.x,height:no.y,depth:no.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(gc.free_bvh(this.subdivPointer),gc.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,bd(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(bd(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=I({},e.parameters)}};function bd(i,t,e,r){let o=i.position.array,n=i.normal.array,s=Sd.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}import{BackSide as n1,BufferGeometry as s1,DoubleSide as a1,FrontSide as l1}from"three";function wd(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=l1:t.side===1?i.side=n1:i.side=a1)}function c1(i,t){if(Array.isArray(i.material))for(let e of i.material)wd(e,t);else{let e=i.material;wd(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function Ld(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=_i.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new s1:Sa(t.geometry,e),n="materials"in t?_m(t.materials,e):Nn(t.material,e);Vs.is2DParametricMesh(o.userData.type)?r=new Di(o,n):(o==null?void 0:o.userData.type)==="VectorGeometry"?r=new oo(o,n):t.geometry.type==="NonParametricGeometry"?r=new Ei(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 Bi(o,n),r.uuid=i,r.fromState(t)}return c1(r,t),r}function Cd(i,t,e){return t.type==="Mesh"?Ld(i,t,e):t.type==="TextFrame"?No.createFromState(i,t,e):t.type==="Empty"?Fr.createFromState(i,t):t.type==="PointLight"?Ii.createFromState(i,t,e):t.type==="SpotLight"?Ai.createFromState(i,t,e):t.type==="DirectionalLight"?Oi.createFromState(i,t,e):Jo.is(t.type)?Rr.createFromState(i,t):(console.error(t),new Fr)}function h1(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function Td(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission");return o.length>0?(t.layers.set(3),r=!0,i!==void 0&&o.forEach(n=>h1(i,n))):t.layers.set(0),r}function Nd(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Td(i,r,r.material[o])&&(e=!0);else Td(i,r,r.material)&&(e=!0)}),e}function Md(i,t){"material"in i&&p1(i.material,t),"geometry"in i&&i.geometry.dispose()}function p1(i,t){Nc(i).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var Od=new d1,xc=class extends va(m1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new f1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new Pd(1,0,0);this.bgColor=new Pd(1,1,1);this.entityByUuid={};this.ambientLight=new u1(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=Nd(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Xe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Rr&&this.switchActiveCamera(o)}this.traverse(o=>{vr(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{Md(r,e)});for(let r of this.children)Yt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Rr.createFromState(xc.PERSONAL_CAMERA_ID,q(I({},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)Yt(s)&&!s.raycastLock&&s.visible&&((br(s)||Gr(s)&&s.enableHelper&&s.objectHelper.parent)&&e.intersectObject(s,!1,r),o(s))};return o(this),r}traverseEntity(e){for(let r of this.children)Yt(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Rm(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let 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=Cd(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),vr(n)&&br(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 y1;return o.setFromPoints(r),o.getCenter(Od),Od}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){var n;if(e===null){r.identity();return}let o=(n=this.find(e))==null?void 0:n.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)e(r.material[o]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,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})})}},Dn=xc;Dn.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as g1}from"three/examples/jsm/loaders/DRACOLoader.js";var so;function x1(){return so||(so=new g1,so.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),so.decoderPending}async function b1(i){if(so){let t={attributeIDs:so.defaultAttributeIDs,attributeTypes:so.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await so.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 Id(i){let[t,e]=Wa(_s.deserialize(new Uint8Array(i))),r=[];t.scene.objects.traverse((o,n)=>{n.type==="Mesh"&&n.geometry.type==="NonParametricGeometry"&&n.geometry.data.draco!==void 0&&r.push(n)}),r.length&&await x1();for(let o of r){let n=await b1(Ja(o.geometry.data.draco));if(n){n.index&&(o.geometry.data.index={array:n.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};n.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),o.geometry.data.attributes=s,o.geometry.data.draco=void 0}}return e.result().data}var bc=new Map,Bn={url:"head",time:0,data:null,next:null,prev:null},Gi={url:"tail",time:1/0,data:null,next:null,prev:null};Bn.next=Gi;Gi.prev=Bn;var Ad=0;function Si(i){if(typeof i=="string")return i;let t=Date.now(),e=bc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},bc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=Gi.prev,e.next=Gi,Gi.prev.next=e,Gi.prev=e,t-Ad>1e3*10&&(Ad=t+1e3,setTimeout(()=>{let r=Date.now(),o=Bn.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),bc.delete(o.data),o=o.next,o.prev=Bn,Bn.next=o},900)),e.url}import{WebGLRenderTarget as v1,LinearMipmapLinearFilter as S1,LinearFilter as w1,ClampToEdgeWrapping as Dd,DepthTexture as L1}from"three";var Bd=new dt,Ga=class extends Bt{},za=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new v1(2048,2048,{generateMipmaps:!0,minFilter:S1,magFilter:w1,wrapS:Dd,wrapT:Dd}),this.transmissionRenderTarget.depthTexture=new L1(2048,2048),this.reset(t)}reset(t){for(let[e,r]of Object.entries(t.images))this.addImage(e,r.data);for(let[e,r]of Object.entries(t.colors))this.addColor(e,r);for(let[e,r]of Object.entries(t.materials))this.addMaterial(e,ec(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===Bd}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:Bd}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=Si(e),!0;{let r=new Image;return r.src=Si(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 Ga(e.r,e.g,e.b,e.a):this.colors[t]=new Ga(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,o,n,s;if(this.colors[t]){let a=this.colors[t];return this.colors[t].r=(r=e.r)!=null?r:a.r,this.colors[t].g=(o=e.g)!=null?o:a.g,this.colors[t].b=(n=e.b)!=null?n:a.b,this.colors[t].a=(s=e.a)!=null?s:a.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{Mesh as hH}from"three";import{mergeBufferGeometries as mH}from"three/examples/jsm/utils/BufferGeometryUtils.js";function Ed(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}import{Color as _d,ShaderLib as C1}from"three";function Gd(i){let t=new Set;return i.traverse(e=>{if(br(e))if(et(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);T1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new _d,specularColor:new _d}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(C1.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)})}):N1(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function T1(i){return i.userData.layers.getLayersOfType("transmission").length>0}function N1(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 zd(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function Rd(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}import{mergeBufferGeometries as M1}from"three/examples/jsm/utils/BufferGeometryUtils";function Fd(i){let t=[];return i.traverse(e=>{e instanceof Co&&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&&Ed(l),l}),s=M1(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function Vd(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}var jd="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",vc=class extends O1{load(t,e,r,o=console.error){let n=new P1(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(jd+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(jd),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 Id(t),r=new za(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Dn(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&&zm(s)&&Object.assign(s,{makeDefault:!0})}return o=Fd(o),o=Gd(o),o=zd(o),o=Rd(o),o=Vd(o),o}};export{vc as default};
|
|
942
|
+
`)}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 ba=class extends Ut{constructor(e=new xa,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 Si=class extends ba{constructor(t,e,r){super(e,t),this.userData.type="PhysicalMaterial",this.userData.category="Physical",this.userData.layers=r!=null?r:this._getLayerStack(t==null?void 0:t.map)}get layersList(){return this.userData.layers}set layersList(t){this.userData.layers=t}equals(t){return this.userData.type===t.userData.type&&this.userData.layers.uuid==t.userData.layers.uuid}copy(t){if(t.userData.layers!==void 0&&t.userData.layers instanceof Ct){let e=t.userData.layers,r=t.fragment;super.copy(t);let o=r.clone();this.fragment=o,this.vertex=o;let n=e.clone(this);this.userData.layers=n,o.shadingAlpha.value=r.shadingAlpha.value,o.shadingBlend.value=r.shadingBlend.value}else super.copy(t);return this}static fromJSON(t,e,r){let o=r.getNode(e.vertex),n=new Si(void 0,o);return n.fromJSON(e,r),n}dispose(){super.dispose()}};import{Color as ec}from"three";function Xe(i,t){let e;if(typeof i=="string"){let r=t==null?void 0: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 Et(0,0,0,0))}else return"a"in i?new Et(i.r,i.g,i.b,i.a):new Et(i.r,i.g,i.b,1);return e}import{Matrix3 as Pm,Texture as Zl,Vector2 as Nn,Vector3 as oo,Vector4 as Om}from"three";function Im(i,t){switch(i.data.type){case"light":return sr(i);case"fresnel":return DS(i,t);case"gradient":return BS(i);case"depth":return ES(i);case"normal":return _S(i);case"noise":return GS(i,t);case"texture":return zS(i,t);case"rainbow":return RS(i);case"transmission":return FS(i,t);case"matcap":return VS(i,t);case"displace":return jS(i);case"color":default:return AS(i,t)}}function Am(i){return{type:i.data.type}}function sr(i){let{alpha:t,mode:e}=i.data;return H(I({},Am(i)),{alpha:t,mode:e})}function AS(i,t){return H(I({},sr(i)),{color:Xe(i.data.color,t)})}function DS(i,t){let{bias:e,scale:r,intensity:o,factor:n,color:s}=i.data;return H(I({},sr(i)),{color:Xe(s,t),bias:e,scale:r,intensity:o,factor:n})}function BS(i){let{gradientType:t,smooth:e,colors:r,steps:o,angle:n,offset:s,morph:a}=i.data;return H(I({},sr(i)),{gradientType:t,smooth:e,colors:r.map(l=>new Om(l[0],l[1],l[2],l[3])),num:r.length,steps:o,offset:new Nn(...s),morph:new Nn(...a),angle:n})}function ES(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 H(I({},sr(i)),{gradientType:t,near:e,far:r,isVector:o,isWorldSpace:n,origin:new oo(...s),direction:a?new oo(...a):new oo(1,0,0),num:p,colors:l.map(u=>new Om(u[0],u[1],u[2],u[3])),steps:c,smooth:h})}function _S(i){let{cnormal:t}=i.data;return H(I({},sr(i)),{cnormal:new oo(t[0],t[1],t[2])})}function GS(i,t){let{data:e}=i;return H(I({},sr(i)),{scale:e.scale,move:e.move,fA:new Nn(...e.fA),fB:new Nn(...e.fB),size:new oo(...e.size),distortion:new Nn(...e.distortion),colorA:Xe(e.colorA,t),colorB:Xe(e.colorB,t),colorC:Xe(e.colorC,t),colorD:Xe(e.colorD,t),noiseType:e.noiseType})}function zS(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 Zl,u;if(typeof a=="string")u=t==null?void 0:t.getImage(a);else{let m=new Image;m.src=wi(a.data),m.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad())},u=m}return p.image=u,p.repeat.set(c[0],c[1]),p.offset.set(h[0],h[1]),p.wrapS=p.wrapT=l,H(I({},sr(i)),{texture:p,mat:new Pm().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 RS(i){let{data:t}=i;return H(I({},sr(i)),{filmThickness:t.filmThickness,movement:t.movement,wavelengths:new oo(...t.wavelengths),noiseStrength:t.noiseStrength,noiseScale:t.noiseScale,offset:new oo(...t.offset)})}function FS(i,t){let{data:e}=i;return H(I({},sr(i)),{thickness:e.thickness,ior:e.ior,roughness:e.roughness,transmissionSamplerMap:t.transmissionSamplerMap,transmissionDepthMap:t.transmissionDepthMap})}function VS(i,t){let e=new Zl,{image:r}=i.data.texture,o;if(typeof r=="string")o=t==null?void 0:t.getImage(r);else{let s=new Image;s.src=wi(r.data),s.onload=()=>{t!=null&&t.onImageLoad&&(t==null||t.onImageLoad())},o=s}e.image=o;let n=16777215;return H(I({},sr(i)),{color:n,texture:e})}function jS(i){let{data:t}=i,e=H(I({},Am(i)),{intensity:t.intensity});if(t.displacementType==="noise")return H(I({},e),{offset:new oo(...t.offset),scale:t.scale,movement:t.movement,noiseType:t.noiseType});{let r=new Zl,o=new Pm().setUvTransform(0,0,1,1,0,0,0);return H(I({},e),{texture:r,mat:o,crop:t.crop})}}function Dm(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`];return r?(r.value=e.alpha*(e.visible?1:0),r):void 0}}import{Color as _m,Vector4 as US}from"three";var Li;(t=>{function i(e){return new _m(e.x,e.y,e.z).getHex()}t.getHex=i})(Li||(Li={}));var Bm;(t=>{function i(e){return new US(e.r,e.g,e.b,e.a)}t.getThreeVector4=i})(Bm||(Bm={}));var Em;(e=>{function i(r,o){r.setRGB(o.r,o.g,o.b)}e.setThreeColor=i;function t(r){return new _m(r.r,r.g,r.b).getHex()}e.getHex=t})(Em||(Em={}));function Mn(i,t){return typeof i=="string"?t.getMaterialOrDeletedPlaceholder(i):tc(i,t)}function Gm(i,t){return i.map(e=>Mn(e,t))}function tc(i,t){var s,a;let e=(s=i.layers)!=null?s:vo.defaultTwoLayerData("phong").layers,r=kS(e),o;switch(r.category){case"basic":o=new ft;break;case"lambert":{o=new bi;break}case"toon":{o=new vi;break}case"physical":o=new Si;break;case"phong":default:{o=new It;break}}o.name=(a=i.name)!=null?a:"Untitled Material";let n=o.userData.layers;HS(n);for(let l=e.length-1;l>=0;l--)qS(n,e[l],t);switch(r.category){case"basic":break;case"lambert":{let h=o,u=Xe(r.emissive,t);u instanceof ec?h.emissive.value=u:h.emissive.value.setHex(Li.getHex(u));break}case"toon":{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof ec?h.specular.value=u:h.specular.value.setHex(Li.getHex(u));break}case"physical":let l=o,c=r;l.metalness.value=c.metalness,l.roughness.value=c.roughness,l.reflectivity.value=c.reflectivity;break;case"phong":default:{let h=o,p=r;h.shininess.value=p.shininess;let u=Xe(p.specular,t);u instanceof ec?h.specular.value=u:h.specular.value.setHex(Li.getHex(u));break}}return o.penumbraSizeNode=t.penumbraSizeNode,n.blendColors(),n.blendAfterColors(),n.blendPositions(),o}function kS(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 HS(i){for(let t of i.getLayers())i.removeLayer(t.id)}function qS(i,t,e){let r=Im(t,e);r.type==="transmission"&&(r.transmissionSamplerMap=e==null?void 0:e.transmissionSamplerMap,r.transmissionDepthMap=e==null?void 0:e.transmissionDepthMap);let o=i.addLayer(r);o.uuid=t.id;for(let n in t.data)Dm(n,o,t.data)}import{Mesh as ew,Matrix4 as tw}from"three";import{Matrix4 as oc}from"three";import{Box3 as Um,Line3 as Yt,Matrix4 as rc,Vector3 as Ve}from"three";import{HemisphereLight as zm}from"three";var va=i=>"isEntity"in i,vr=i=>"isAbstractMesh"in i,Sr=i=>i!==null&&i.isBooleanMesh,Rm=i=>i.objectType==="CombinedCamera";var zr=i=>"objectHelper"in i;function WS(i,t){var r;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((r=t.hiddenMatrix)!=null?r:Jr.identity)),e&&(i.updateMatrix(),Sr(i.parent)&&vr(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 $S(i,t){WS(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 Fm(i,t,e){$S(i,t),t.color!==void 0&&(i.color=Xe(t.color,e)),t.intensity!==void 0&&(i.intensity=t.intensity),t.shadows!==void 0&&!(i instanceof zm)&&(i.castShadow=t.shadows),i.shadow&&!(i instanceof zm)&&t.depth!==void 0&&(i.shadow.camera.far=t.depth,i.shadow.needsUpdate=!0),t.helper!==void 0&&zr(i)&&(i.enableHelper=t.helper,i.gizmos.shadowmap.visible=t.helper)}function Vm(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 Ci=new Um,yt=new Ve,he=new Ve,tt=new rc;function JS(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),m=t.getZ(h);p<o&&(o=p),u<n&&(n=u),m<s&&(s=m),p>a&&(a=p),u>l&&(l=u),m>c&&(c=m)}return i.min.set(o,n,s),i.max.set(a,l,c),i}var jm=(i,t,e,r)=>{var o;if(vr(i)){let n=i.geometry.userData.parameters,s=i.geometry.getAttribute("position");i.geometry.userData.type==="SubdivGeometry"?yt.copy(i.originalGeometry.boundingSphere.center):s!==void 0&&(JS(Ci,s,i.geometry.drawRange.start,i.geometry.drawRange.count<1/0?i.geometry.drawRange.count:s.count),Ci.getCenter(yt)),i.forceComputeSize?Ci.getSize(he).multiplyScalar(.5):he.set(n.width,n.height,(o=n.depth)!=null?o:0).multiplyScalar(.5)}else if(zr(i)&&r===!0){let n=i.geometryHelper.getAttribute("position");Ci.setFromArray(n.array),Ci.getCenter(yt),Ci.getSize(he).multiplyScalar(.5)}else yt.setScalar(0),he.setScalar(0);tt.copy(t).multiply(i.matrixWorld),he.x===0&&he.y===0&&he.z===0?e.push(new Ve(yt.x,yt.y,yt.z).applyMatrix4(tt)):e.push(new Ve(-he.x,he.y,he.z).add(yt).applyMatrix4(tt),new Ve(-he.x,-he.y,he.z).add(yt).applyMatrix4(tt),new Ve(he.x,-he.y,he.z).add(yt).applyMatrix4(tt),new Ve(he.x,he.y,he.z).add(yt).applyMatrix4(tt),new Ve(-he.x,he.y,-he.z).add(yt).applyMatrix4(tt),new Ve(-he.x,-he.y,-he.z).add(yt).applyMatrix4(tt),new Ve(he.x,-he.y,-he.z).add(yt).applyMatrix4(tt),new Ve(he.x,he.y,-he.z).add(yt).applyMatrix4(tt))},Pn=class extends Um{constructor(){super(...arguments);this.matrix=new rc;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 rc().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&&jm(s,r,n,e.enableHelper===!0)}):jm(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(tt.copy(this.matrix).setPosition(0,0,0)),e}computeVertices(){this.getSize(he).multiplyScalar(.5),this.getCenter(yt),tt.copy(this.matrix).setPosition(yt),this.vertices=[new Ve(-he.x,he.y,he.z).applyMatrix4(tt),new Ve(-he.x,-he.y,he.z).applyMatrix4(tt),new Ve(he.x,-he.y,he.z).applyMatrix4(tt),new Ve(he.x,he.y,he.z).applyMatrix4(tt),new Ve(-he.x,he.y,-he.z).applyMatrix4(tt),new Ve(-he.x,-he.y,-he.z).applyMatrix4(tt),new Ve(he.x,-he.y,-he.z).applyMatrix4(tt),new Ve(he.x,he.y,-he.z).applyMatrix4(tt)]}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=[new Yt(this.vertices[0],this.vertices[3]),new Yt(this.vertices[1],this.vertices[2]),new Yt(this.vertices[5],this.vertices[6]),new Yt(this.vertices[4],this.vertices[7]),new Yt(this.vertices[0],this.vertices[1]),new Yt(this.vertices[3],this.vertices[2]),new Yt(this.vertices[7],this.vertices[6]),new Yt(this.vertices[4],this.vertices[5]),new Yt(this.vertices[0],this.vertices[4]),new Yt(this.vertices[1],this.vertices[5]),new Yt(this.vertices[2],this.vertices[6]),new Yt(this.vertices[3],this.vertices[7])],this.centerEdges=this.edges.map(e=>e.getCenter(new Ve))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=[new Ve().copy(this.vertices[0]).sub(this.vertices[2]).multiplyScalar(.5).add(this.vertices[2]),new Ve().copy(this.vertices[7]).sub(this.vertices[5]).multiplyScalar(.5).add(this.vertices[5]),new Ve().copy(this.vertices[4]).sub(this.vertices[1]).multiplyScalar(.5).add(this.vertices[1]),new Ve().copy(this.vertices[3]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6]),new Ve().copy(this.vertices[4]).sub(this.vertices[3]).multiplyScalar(.5).add(this.vertices[3]),new Ve().copy(this.vertices[1]).sub(this.vertices[6]).multiplyScalar(.5).add(this.vertices[6])]}};import{Object3D as YS,Matrix4 as KS,Light as XS}from"three";function On(i){let t=[];for(let e in i){let r=i[e];delete r.metadata,t.push(r)}return t}function QS(i){let t=[];for(let e in i)t.push(i[e]);return t}var Sa=i=>class extends i{hasEntityChild(){return this.children.some(e=>va(e))}isDescendantOf(e){e instanceof YS&&(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 KS().copy(this.matrixWorld).invert();return e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),o.multiply(e.parent.matrixWorld)),va(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}toJSON(e){let r=e===void 0,o={object:{uuid:"",objectType:""}};e===void 0&&(e={geometries:{},materials:{},textures:{},images:{},interactionStates:{},nodes:{}},o.metadata={version:1.5,type:"Object",generator:"Object3D.toJSON"});let n={uuid:this.uuid,objectType:this.type};if(this.name!==""&&(n.name=this.name),n.matrix=this.matrix.toArray(),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),n.layers=this.layers.mask,JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData),this.children.length>0){n.children=[];for(let s of this.children)(va(s)||s instanceof XS)&&n.children.push(s.toJSON(e).object)}if(r){let s=On(e.geometries),a=On(e.materials),l=On(e.textures),c=On(e.images),h=On(e.interactionStates),p=QS(e.nodes);s.length>0&&(o.geometries=s),a.length>0&&(o.materials=a),l.length>0&&(o.textures=l),c.length>0&&(o.images=c),h.length>0&&(o.interactionStates=h),p.length>0&&(o.nodes=p)}return o.object=n,o}fromJSON(e){return this.uuid=e.uuid,e.name!==void 0&&(this.name=e.name),e.matrix!==void 0?(this.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(this.matrixAutoUpdate=e.matrixAutoUpdate),this.matrixAutoUpdate&&this.matrix.decompose(this.position,this.quaternion,this.scale)):(e.position!==void 0&&this.position.fromArray(e.position),e.rotation!==void 0&&this.rotation.fromArray(e.rotation),e.quaternion!==void 0&&this.quaternion.fromArray(e.quaternion),e.scale!==void 0&&this.scale.fromArray(e.scale)),this.castShadow=e.castShadow!==void 0,this.receiveShadow=e.receiveShadow!==void 0,e.visible!==void 0&&(this.visible=e.visible),e.frustumCulled!==void 0&&(this.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(this.renderOrder=e.renderOrder),e.layers!==void 0&&(this.layers.mask=e.layers),e.userData!==void 0&&(this.userData=e.userData),this}};var Kt=i=>"isEntity"in i,km=i=>"isAbstractMesh"in i,Xt=i=>class extends Sa(i){constructor(){super(...arguments);this.objectType="";this.isEntity=!0;this.raycastLock=!1;this.scaleLock=!1;this.hiddenMatrix=new oc;this._singleBBox=new Pn;this._recursiveBBox=new Pn;this.singleBBoxNeedsUpdate=!0;this.recursiveBBoxNeedsUpdate=!0;this.forceComputeSize=!1}set visibility(r){this.visible=r;for(let o of this.children)Kt(o)&&o.traverseEntity(n=>{zr(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=>{Kt(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)Kt(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)Kt(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)Kt(n)&&this.add(n.clone());return this}keepChildrenMatrixWorld(){let r=new oc,o=this.matrixWorld.clone();this.updateWorldMatrix(!1,!1),r.copy(this.matrixWorld).invert(),r.multiply(o);for(let n of this.children)Kt(n)&&n.hiddenMatrix.premultiply(r)}toJSON(r){let o=super.toJSON(r),n=o.object;return this.raycastLock===!0&&(n.raycastLock=!0),this.scaleLock===!0&&(n.scaleLock=!0),n.hiddenMatrix=this.hiddenMatrix.toArray(),o}fromJSON(r){return super.fromJSON(r),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.scaleLock!==void 0&&(this.scaleLock=r.scaleLock),this.hiddenMatrix.fromArray(r.hiddenMatrix),this}fromObject3D(r){let o=r.children;return r.children=[],Object.assign(r,{raycastLock:!1,scaleLock:!1,hiddenMatrix:new oc}),this.copy(r),r.children=o,this}toObjectTransformState(r=[]){this.updateWorldMatrix(!0,!1);let o={position:this.position.toArray(),rotation:[this.rotation.x,this.rotation.y,this.rotation.z],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return Jo(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=I({name:this.name,visible:this.visible,raycastLock:this.raycastLock},this.toObjectTransformState(r));return Jo(o,r)}fromState(r,o){return r.name&&(this.name=r.name),r.raycastLock!==void 0&&(this.raycastLock=r.raycastLock),r.type!=="OrthographicCamera"&&r.type!=="PerspectiveCamera"&&(this.matrixAutoUpdate=!1),r.visible!==void 0&&(this.visibility=r.visible),this.fromObjectTransformState(r),this}};import{Object3D as ZS,Vector3 as In,Euler as Hm,MathUtils as io}from"three";var To=class extends ZS{constructor(e,r={}){super();this.object=e;let o=e.recursiveBBox.getSize(new In),n=.1;this.parameters=bs.defaultData(o.toArray(),n),fo(this.parameters,r),this.update(),this.setHideBase(this.parameters.hideBase)}refreshMaterial(){if("material"in this.object)for(let e of this.children)e.material=this.object.material}setHideBase(e){if("material"in this.object){if(Array.isArray(this.object.material)){if(this.children.length>0){for(let r of this.object.material)r.visible=!0;if(e){let r=this.object.material.map(o=>o.clone());for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material}for(let r of this.object.material)r.visible=!e}else{if(this.children.length>0)if(this.object.material.visible=!0,e){let r=this.object.material.clone();for(let o of this.children)o.material=r}else for(let r of this.children)r.material=this.object.material;this.object.material.visible=!e}this.parameters.hideBase=e}}update(){switch(this._updateCount(),this.parameters.type){case"radial":this._updateRadial(this.parameters);break;case"linear":this._updateLinear(this.parameters);break;case"grid":this._updateGrid(this.parameters)}this.children.forEach(e=>e.updateMatrix())}_updateCount(){let e=this.parameters.type==="grid"?this.parameters.grid.count[0]*this.parameters.grid.count[1]*this.parameters.grid.count[2]:this.parameters.count;if(this.children.length!==e)if(this.children.length<e)for(let r=0,o=e-this.children.length;r<o;++r){let 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*io.DEG2RAD,n=r.end*io.DEG2RAD,s=o-n,a=new Hm(r.rotation[0]*io.DEG2RAD,r.rotation[1]*io.DEG2RAD,r.rotation[2]*io.DEG2RAD),l;switch(r.axis){case"z":l=new In(0,0,1);break;case"y":l=new In(0,1,0);break;default:case"x":l=new In(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 Hm(r.rotation[0]*io.DEG2RAD,r.rotation[1]*io.DEG2RAD,r.rotation[2]*io.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 In(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}}fromJSON(e){return this}toJSON(){return{}}fromClonerState(e){return e.hideBase!==void 0&&this.setHideBase(e.hideBase),fo(this.parameters,e),this.update(),this}};var rt=class extends Xt(ew){constructor(e,r){super(e,r);this.isAbstractMesh=!0;this.isBooleanMesh=!1;this.booleanMeshSetAddress=-1;this.booleanWasTransformed=!1;this.booleanMatrixInvOld=new tw;this.booleanExclude=null;Array.isArray(r)&&(this.selectedMaterial=0,e.groups.length===0&&e.addGroup(0,e.getAttribute("position").count,0))}get cloner(){return this._cloner}set cloner(e){this._cloner&&this.remove(this._cloner),e&&this.add(e),this._cloner=e}getSelectedMaterial(e){return Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=e!=null?e:0),this.material[e!=null?e:this.selectedMaterial]):this.material}setSelectedMaterial(e,r){Array.isArray(this.material)?(this.selectedMaterial===void 0&&(this.selectedMaterial=r!=null?r:0),r=r!=null?r:this.selectedMaterial,this.material[r].dispose(),this.material[r]=e):(this.material.dispose(),this.material=e)}updateGeometry(e){let r=this.geometry,o=ic[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(),this.cloner)for(let l of this.cloner.children)l.geometry=this.geometry}resizeGeometry(e,r,o){cn.resizeGeometry(this.geometry,{width:e,height:r,depth:o})}shallowClone(e){return new this.constructor(this.geometry,this.material).shallowCopy(this,e)}clone(e){let r=this.objectType==="NonParametric"?Object.assign({},this.geometry.userData,{geometry:this.geometry.clone()}):this.geometry.userData,o=An(r),n=Array.isArray(this.material)?this.material.map(s=>s.clone()):this.material.clone();return new this.constructor(o,n).copy(this,e)}copy(e,r=!0){return super.copy(e,r),e.cloner&&(this.cloner=new To(e,e.cloner.parameters),this.add(this.cloner)),this}setFromClonerState(e){e===null?this.cloner=void 0:(this.cloner===void 0&&(this.cloner=new To(this)),this.cloner.fromClonerState(e))}fromState(e,r){var o,n,s;return super.fromState(e),e.type==="Mesh"&&(this.setFromClonerState(e.cloner),this.castShadow=(o=e.castShadow)!=null?o:!0,this.receiveShadow=(n=e.receiveShadow)!=null?n:!0,this.booleanExclude=(s=e.booleanExclude)!=null?s:null),this}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(Qt.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(e=!1){return e?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Sr(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let e of this.children)vr(e)&&(e.freeBooleanPointer(),Sr(e)&&e.invalidateUpstreamBooleanData())}};var nw=new nc(0,0,1),qm=new nc,Wm=new nc,$m=new iw,no=class extends rt{constructor(e=ut.create({}),r=new ft({side:rw})){var o;super(e,r);this.recursiveSelection=!1;this.objectType="VectorObject";this.eventDispatcher=new ow;this._onShapeUpdate=()=>{this.updateGeometry({}),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox()};this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!0,this.shape=e.userData.shape,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="VectorObject",r}fromState(e){return super.fromState(e),this.shape.update(),this}setHelperVisibility(){}updateGeometry(e){if(super.updateGeometry(e),"userData"in this.geometry){let r=this.geometry.userData.parameters;this.eventDispatcher.dispatchEvent({type:"geometryUpdate",parameters:r})}}setShape(e){var r,o;this.shape&&((r=this.shape.eventDispatcher)==null||r.removeEventListener("update",this._onShapeUpdate)),this.shape=e,(o=this.shape.eventDispatcher)==null||o.addEventListener("update",this._onShapeUpdate)}updateWorldMatrix(e,r){super.updateWorldMatrix(e,r),$m.getNormalMatrix(this.matrixWorld),qm.copy(nw).applyMatrix3($m).normalize(),Wm.setFromMatrixPosition(this.matrixWorld),this.shape.plane.setFromNormalAndCoplanarPoint(qm,Wm)}clone(e){let r=this.shape.clone(),o=this.material.clone(),n=this.geometry.userData,s=ut.create(Object.assign({},n,{shape:r})),a=new no(s,o).copy(this,e);return a.shape=r,r.update(),a}raycast(e,r){rt.prototype.raycast.call(this,e,r)}};function wa(i,t){return aw(i)}function aw(i){let t={parameters:i,type:i.type};if(i.type==="VectorGeometry"){let r=Pe.createFromState(i.shape,i.width,i.height);t.shape=r}else i.type==="NonParametricGeometry"&&(i.data.groups&&i.data.groups.forEach(r=>{var o;return r.materialIndex=Math.max((o=r.materialIndex)!=null?o:0,0)}),t.geometry=new sw().parse(i));let e;try{e=An(t)}catch(r){console.error(r)}if(!e){let r=Pe.createFromState(ri.defaultData(),100,100);t.shape=r,e=An(t)}return e}var fe;na.then(i=>{fe=i});var Km=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),Xm=new Uint32Array([0,1,2,3]),Qm=new Uint8Array([4]),Zt=class{static build(i,t,e,r,o){var c,h;let n,s,a,l=(h=(c=i==null?void 0:i.phongAngle)!=null?c:t==null?void 0:t.phongAngle)!=null?h:35;if(r===!1&&(l=-1),i.positionWASM!==void 0){e&&e!==0&&(fe.free_bvh(e),fe.free_subdivision_surface(e));try{n=Zt.allocate(i,o)}catch(p){console.error(p,i),n=Zt.allocate({positionWASM:Km,indexWASM:Xm,verticesPerFaceWASM:Qm},o)}fe.set_destination_refinement_level(n,0),s=Zt.buildLevel(n,!0,l)}else n=e,i.phongAngle!==void 0&&(s=Zt.buildLevel(n,!0,l));return i.subdivisions!==void 0&&(fe.set_destination_refinement_level(n,i.subdivisions),i.subdivisions>0?a=Zt.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}=pc(e.getAttribute("position"),e.getIndex()),{indices:o,verticesPerFace:n}=uc(r,s,e),{positions:r,indices:o,verticesPerFace:n}}static allocate(i,t){var N;let e,r,o,n=[],s=[];i.positionWASM&&i.positionWASM.length>0?(e=i.positionWASM,r=i.indexWASM,o=i.verticesPerFaceWASM):(e=Km,r=Xm,o=Qm);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,m=h*Float32Array.BYTES_PER_ELEMENT,f=p*Uint32Array.BYTES_PER_ELEMENT,g=fe._malloc(u),v=new Float32Array(fe.HEAPF32.buffer,g,h),y=new Uint32Array(fe.HEAPU32.buffer,g+m,p);v.set(e,0),v.set(n,e.length),v.set(s,e.length+n.length),y.set(r,0),y.set(o,r.length);let b;(N=i==null?void 0:i.scaleBaked)!=null&&N.some(S=>S!==1)&&(b=new lw().makeScale(...i.scaleBaked)),t&&(b?b.premultiply(t):b=t);let A=b?fe.alloc_subdivision_surface2(g,a,g+m,l,g+m+r.length*Uint32Array.BYTES_PER_ELEMENT,c,b.elements):fe.alloc_subdivision_surface(g,a,g+m,l,g+m+r.length*Uint32Array.BYTES_PER_ELEMENT,c);return fe._free(g),A}static buildLevel(i,t,e,r,o){let n=o?fe.get_mesh_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e,o.elements):fe.get_mesh_data(i,t?fe.Level.CONTROL:fe.Level.REFINED,e),s=8,a=fe.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(4,4+4),c=0,h=fe.HEAPU32[a[c]>>2],p=fe.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=fe.HEAPU32[a[c]>>2],m=fe.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=fe.HEAPU32[a[c]>>2],g=fe.HEAPU32.subarray(f>>2,(f>>2)+l[c]);c++;let v=fe.HEAPU32[a[c]>>2],y=fe.HEAPU32.subarray(v>>2,(v>>2)+l[c]);if(c++,r===void 0){let b=new Jm;if(b.setIndex(new sc(y,1)),b.setAttribute("position",new ac(p,3)),b.setAttribute("normal",new ac(m,3)),t){b.setAttribute("faceMap",new sc(g,1));let A=new Float32Array(m.length/3*4).fill(0);b.setAttribute("color",new Ym(A,4))}return fe.free_mesh_data(n),b.userData.type="SubdivGeometry",b}r.getAttribute("position").copyArray(p),r.getAttribute("normal").copyArray(m),r.attributes.position.needsUpdate=!0,r.attributes.normal.needsUpdate=!0,fe.free_mesh_data(n)}static buildControlCageWireframe(i,t,e){let r=fe.get_wireframe_data_for_base_level(i),o=4,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(2,2+2),a=0,l=fe.HEAPU32[n[a]>>2],c=fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]);a++;let h=fe.HEAPU32[n[a]>>2],p=fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]);if(t===void 0){let u=new Jm;u.setAttribute("position",new ac(c,3));let m=new Float32Array(c.length);for(let f=0,g=c.length;f<g;)m[f++]=e.r,m[f++]=e.g,m[f++]=e.b;return u.setAttribute("color",new Ym(m,3)),u.setIndex(new sc(p,1)),fe.free_wireframe_data_for_base_level(r),u}t.getAttribute("position").copyArray(c),t.attributes.position.needsUpdate=!0,fe.free_wireframe_data_for_base_level(r)}static updateCollabMesh(i,t,e){t||fe.set_destination_refinement_level(i,1);let r=e?fe.get_topological_data2(i,t?fe.Level.CONTROL:fe.Level.REFINED,e.elements):fe.get_topological_data(i,t?fe.Level.CONTROL:fe.Level.REFINED),o=6,n=fe.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=fe.HEAPU32[n[a]>>2],c=new Float32Array(fe.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=fe.HEAPU32[n[a]>>2],p=new Uint32Array(fe.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=fe.HEAPU32[n[a]>>2],m=new Uint8Array(fe.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return fe.free_topological_data(r),{positions:c,indices:p,verticesPerFace:m}}};var Zm=["getX","getY","getZ"];function pc(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[Zm[u]](h)*a)},`;if(p in e)n.push(e[p]);else{for(let u=0;u<3;u++)s.push(i[Zm[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 La=new Ca,lc=new Ca,cc=new Ca,hc=new Ca;function uc(i,t,e){var n;let r=[],o=[];if(e.userData.shape!==void 0&&e.userData.parameters.depth===0){let s=e.userData.shape.extractShapePointsToFlatArray([]),a=0;for(let c=0;c<s.length;c+=2)a+=(s[c]-s[(c===0?s.length:c)-2])*(s[c+1]+s[(c===0?s.length:c)-1]);i.length=0;let l=0;if(a<0)for(let c=0;c<s.length;c+=2)i.push(s[c],s[c+1],0),r.push(l++);else for(let c=s.length-2;c>=0;c-=2)i.push(s[c],s[c+1],0),r.push(l++);return o.push(l),{indices:r,verticesPerFace:o}}for(let s=0,a=(n=e.capStartIndex)!=null?n:t.length;s<a;)if(t[s+1]===t[s+3]&&t[s+2]===t[s+5]||t[s+0]===t[s+3]&&t[s+2]===t[s+4]){La.set(i[t[s]*3],i[t[s]*3+1],i[t[s]*3+2]),lc.set(i[t[s+1]*3],i[t[s+1]*3+1],i[t[s+1]*3+2]),cc.set(i[t[s+4]*3],i[t[s+4]*3+1],i[t[s+4]*3+2]),hc.set(i[t[s+5]*3],i[t[s+5]*3+1],i[t[s+5]*3+2]),lc.sub(La).normalize(),cc.sub(La).normalize(),hc.sub(La).normalize();let l=lc.cross(cc).dot(hc);Math.abs(l)>.005?(r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3):(r.push(t[s],t[s+1],t[s+4],t[s+5]),o.push(4),s+=6)}else r.push(t[s],t[s+1],t[s+2]),o.push(3),s+=3;if(e.capStartIndex!==void 0){let s=[],a=[],l=0;for(let c=0,h=0;c<i.length;c+=3,h++)i[c+2]===0&&(s.push(h),l++),i[c+2]===e.userData.parameters.depth&&a.push(h);if(e.userData.parameters.extrudeBevelSize===0){let c=a[0];a[0]=a[1],a[1]=c}s.reverse(),r.push(...s,...a),o.push(l,l)}return{indices:r,verticesPerFace:o}}var Qt={};Nc(Qt,{calcBoolean:()=>mw,calcBooleanTopological:()=>uw,freeMeshSet:()=>yw,getMeshSet:()=>dw,transformMeshSet:()=>fw});var cw,ed=new Promise(i=>{cw=i});import{Float32BufferAttribute as td,Sphere as hw}from"three";var Le,Ti;ed.then(i=>Le=i);function pw(i,t){let e,{positions:r,triIndices:o}=pc(i.getAttribute("position"),i.getIndex()),n;if(t){let{indices:s,verticesPerFace:a}=uc(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 rd(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=Le._malloc(o);return(Number.isInteger(i[0])?new Uint32Array(Le.HEAPU32.buffer,n,t):new Float32Array(Le.HEAPF32.buffer,n,t)).set(i,0),n}function od(i){switch(i){case 0:return Le.OP.UNION;case 1:return Le.OP.INTERSECTION;case 2:return Le.OP.A_MINUS_B;case 3:return Le.OP.B_MINUS_A;case 4:return Le.OP.SYMMETRIC_DIFFERENCE;case 5:return Le.OP.ALL;default:throw new Error("Unknown boolean operation "+i)}}function uw(i,t){Ti===void 0&&(Ti=Le.init_csg());let e=rd(i),r=Le.csg_calc_topological(Ti,e,i.length,od(t));Le._free(e);let o=6,n=Le.HEAPU32.subarray(r>>2,(r>>2)+o),s=n.subarray(3,3+3),a=0,l=Le.HEAPU32[n[a]>>2],c=new Float32Array(Le.HEAPF32.subarray(l>>2,(l>>2)+s[a]));a++;let h=Le.HEAPU32[n[a]>>2],p=new Uint32Array(Le.HEAPU32.subarray(h>>2,(h>>2)+s[a]));a++;let u=Le.HEAPU32[n[a]>>2],m=new Uint8Array(Le.HEAPU32.subarray(u>>2,(u>>2)+s[a]));return Le.free_mesh_data(r),{positions:c,indices:p,verticesPerFace:m}}function mw(i,t,e,r){Ti===void 0&&(Ti=Le.init_csg());let o=rd(i),n=Le.csg_calc(Ti,o,i.length,r,od(t));Le._free(o);let s=5,a=Le.HEAPU32.subarray(n>>2,(n>>2)+s),l=a.subarray(2,2+3),c=0,h=Le.HEAPU32[a[c]>>2],p=Le.HEAPF32.subarray(h>>2,(h>>2)+l[c]);c++;let u=Le.HEAPU32[a[c]>>2],m=Le.HEAPF32.subarray(u>>2,(u>>2)+l[c]);c++;let f=l[c];e.setAttribute("position",new td(p,3)),e.setAttribute("normal",new td(m,3));let g=Le.HEAPF32.subarray((n>>2)+5,(n>>2)+5+6);return e.boundingSphere===null&&(e.boundingSphere=new hw),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},Le.free_mesh_data(n),f}function dw(i,t){if(Le===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((v,y)=>v+y,0)+o);for(let v=0,y=0,b=0;v<g.verticesPerFace.length;v++){r[b++]=g.verticesPerFace[v];for(let A=0;A<g.verticesPerFace[v];A++)r[b++]=g.indices[y++]}}else({positions:e,faceIndices:r,nFaces:o}=pw(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=Le._malloc(c),m=new Float32Array(Le.HEAPF32.buffer,u,a),f=new Uint32Array(Le.HEAPU32.buffer,u+h,l);return m.set(e,0),f.set(r,0),Le.get_csg_mesh(u,n,u+h,s,o)}function fw(i,t){Le.transform_csg_mesh(i,t.elements)}function yw(i){Le.free_csg_mesh(i)}var ic={ConeGeometry:bu,CubeGeometry:vu,CylinderGeometry:xu,DodecahedronGeometry:Su,EllipseGeometry:Ju,HelixGeometry:Zu,IcosahedronGeometry:em,LatheGeometry:tm,NonParametricGeometry:nm,PolygonGeometry:sm,PyramidGeometry:am,RectangleGeometry:oa,SphereGeometry:lm,PlaneGeometry:cm,BackdropGeometry:hm,StarGeometry:pm,TextFrameGeometry:ia,TorusGeometry:um,TorusKnotGeometry:mm,TriangleGeometry:dm,VectorGeometry:ut},An=i=>ic[i.type].create(i);import{BufferGeometry as id,Matrix4 as gw}from"three";var nd=new gw;var Ta=class extends rt{constructor(e=new id,r=new It){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){var o;if(this.booleanMeshSetAddress!==-1)return;for(let n=0;n<this.children.length;n++){let s=this.children[n];Sr(s)&&s.recomputeBoolean(e===!0)}this.meshSetAddresses=[];for(let n=0;n<this.children.length;n++){let s=this.children[n];if(km(s)&&s.booleanExclude===!1&&((o=s.geometry.attributes.position)==null?void 0:o.count)>0&&s.geometry.drawRange.count>0){if(s.booleanMeshSetAddress===-1){if(s.booleanMeshSetAddress=Qt.getMeshSet(s.geometry,e===!0),s.booleanMeshSetAddress===-1)return;Qt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1}else Sr(s)&&s.needsTransformForDownstream===!0?(Qt.transformMeshSet(s.booleanMeshSetAddress,s.matrix),s.needsTransformForDownstream=!1):s.booleanWasTransformed===!0&&(nd.multiplyMatrices(s.matrix,s.booleanMatrixInvOld),Qt.transformMeshSet(s.booleanMeshSetAddress,nd),s.booleanMatrixInvOld.copy(s.matrix).invert(),s.booleanWasTransformed=!1);this.meshSetAddresses.push(s.booleanMeshSetAddress)}}if(this.meshSetAddresses.length===0){this.geometry.setDrawRange(0,0);return}if(e===!0)return Qt.calcBooleanTopological(this.meshSetAddresses,this.booleanOp);let r=this.geometry;r.dispose(),this.geometry=new id,this.geometry.userData=r.userData,this.geometry.boundingSphere=r.boundingSphere;try{this.booleanMeshSetAddress=Qt.calcBoolean(this.meshSetAddresses,this.booleanOp,this.geometry,this.phongAngle)}catch(n){this.booleanMeshSetAddress=0,console.error(n)}this.booleanMatrixInvOld.copy(this.matrix).invert(),this.needsTransformForDownstream=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}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()}};import{Camera as Bw,OrthographicCamera as Ew,PerspectiveCamera as _w,Vector3 as kt,Object3D as ld,Quaternion as Gw}from"three";import{BoxBufferGeometry as xw}from"three";var wr=i=>{var t;return t=class extends i{constructor(){super(...arguments);this.isObjectHelper=!0}},t.geometryHelper=new xw(30,30,30),t};import{Camera as Lw,LineSegments as Cw,BufferGeometry as Tw,LineBasicMaterial as Nw,Color as dc,Vector3 as Mw,Float32BufferAttribute as ad}from"three";import{Ray as bw,Sphere as vw,Matrix4 as Sw,Vector3 as Rr}from"three";var Na=new bw,mc=new vw,sd=new Sw,Lr=(i,t,e,r,o=!1)=>{let n=t,s=i.matrixWorld;if(n.boundingSphere===null&&n.computeBoundingSphere(),mc.copy(n.boundingSphere),mc.applyMatrix4(s),e.ray.intersectsSphere(mc)===!1||(sd.copy(s).invert(),Na.copy(e.ray).applyMatrix4(sd),n.boundingBox!==null&&Na.intersectsBox(n.boundingBox)===!1))return;let a,l,c,h,p=n.index,u=n.attributes.position,m=n.drawRange,f,g;if(o===!1){let y=Math.max(0,m.start),b=Math.min(p.count,m.start+m.count);for(f=y,g=b;f<g;f+=3)if(l=p.getX(f),c=p.getX(f+1),h=p.getX(f+2),a=v(i,e,Na,u,l,c,h),a){a.faceIndex=Math.floor(f/3),r.push(a);return}}else{let b=n.attributes.position,A=new Rr,N=new Rr,S=new Rr,k=new Rr,T=2,O=1/((i.scale.x+i.scale.y+i.scale.z)/3),x=O*O,L=Math.max(0,m.start),C=Math.min(b.count,m.start+m.count);for(let P=L,$=C-1;P<$;P+=T){if(A.fromBufferAttribute(b,P),N.fromBufferAttribute(b,P+1),Na.distanceSqToSegment(A,N,k,S)>x)continue;k.applyMatrix4(i.matrixWorld);let oe=e.ray.origin.distanceTo(k);oe<e.near||oe>e.far||r.push({distance:oe,point:S.clone().applyMatrix4(i.matrixWorld),object:i})}}function v(y,b,A,N,S,k,T){let d=new Rr,O=new Rr,x=new Rr,L=new Rr,C=new Rr;if(d.fromBufferAttribute(N,S),O.fromBufferAttribute(N,k),x.fromBufferAttribute(N,T),A.intersectTriangle(d,O,x,!1,L)===null)return null;C.copy(L),C.applyMatrix4(y.matrixWorld);let $=b.ray.origin.distanceTo(C);return $<b.near||$>b.far?null:{faceIndex:1,distance:$,point:C.clone(),object:y}}};var Ma=new Mw,er=new Lw,fc=class extends Cw{constructor(e){let r=new Tw,o=new Nw({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={},l=new dc(15711266),c=new dc(15711266),h=new dc(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(m,f,g){u(m,g),u(f,g)}function u(m,f){n.push(0,0,0),s.push(f.r,f.g,f.b),a[m]===void 0&&(a[m]=[]),a[m].push(n.length/3-1)}r.setAttribute("position",new ad(n,3)),r.setAttribute("color",new ad(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;er.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;ar("n1",r,e,er,-n,-s,a),ar("n2",r,e,er,n,-s,a),ar("n3",r,e,er,-n,s,a),ar("n4",r,e,er,n,s,a);let l=a;ar("f1",r,e,er,-n,-s,l),ar("f2",r,e,er,n,-s,l),ar("f3",r,e,er,-n,s,l),ar("f4",r,e,er,n,s,l);let c=l,h=.5;ar("u1",r,e,er,n*.7*h,s*1.1,c),ar("u2",r,e,er,-n*.7*h,s*1.1,c),ar("u3",r,e,er,0,s*(1.1+.9*h),c),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function ar(i,t,e,r,o,n,s){Ma.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],Ma.x,Ma.y,Ma.z)}}var Pa=class extends wr(fc){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){Lr(this.object,this.geometry,e,r,!0)}};import{DirectionalLightHelper as Pw}from"three";var Ni=class extends wr(Pw){constructor(e,r=15,o=10066329){super(e,r,o);this.object=e;this.added=!1;this.name=`DirectionalLightHelper: ${e.uuid}`}raycast(e,r){Lr(this.object,Ni.geometryHelper,e,r)}};import{AxesHelper as Ow}from"three";var Mi=class extends wr(Ow){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){Lr(this.object,Mi.geometryHelper,e,r)}update(){}};import{PointLightHelper as Iw}from"three";var Pi=class extends wr(Iw){constructor(e,r=15,o=6710886){super(e,r,o);this.object=e;this.name=`PointLightHelper: ${e.uuid}`}raycast(e,r){Lr(this.object,Pi.geometryHelper,e,r)}};import{SpotLightHelper as Aw,Vector3 as Dw}from"three";var Oa=class extends wr(Aw){constructor(e,r=6710886){super(e,r);this.object=e;this.name=`SpotLightHelper: ${e.uuid}`}raycast(e,r){Lr(this.object,Oa.geometryHelper,e,r)}update(){if(this.object!==void 0){let e=Oa._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)}}},Dn=Oa;Dn._vector=new Dw;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)Kt(n)&&n.traverseEntity(s=>{zr(s)&&s.visible&&(s.objectHelper.visible=o)})}raycast(o,n){this.objectHelper.raycast(o,n)}copy(o,n=!0){return super.copy(o,n),o.enableHelper!==void 0&&(this.enableHelper=o.enableHelper),o.objectHelper!==void 0&&(this.objectHelper.visible=o.objectHelper.visible),this}toJSON(o){let n=super.toJSON(o),s=n.object;return s.enableHelper=this.enableHelper,n}fromJSON(o){return super.fromJSON(o),o.enableHelper!==void 0&&(this.enableHelper=!0),this}fromLightState(o,n){if(this.objectType==="LightDirectional"||this.objectType==="LightPoint"||this.objectType==="LightSpot"){let s=this;o.color!==void 0&&(s.color=Xe(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 Oi=new kt,yc=new kt,Fr=class extends Cr(Xt(Bw),Pa){constructor(e=window.innerWidth,r=window.innerHeight,o=45,n,s=1e5){super();this.objectType="CombinedCamera";this._cameraType="OrthographicCamera";this.targetOffset=yo.DefaultTargetOffset;this.isUpVectorFlipped=!1;this.angleOffsetFromUp=0;this.width=e,this.height=r,this.orthoCamera=new Ew(e*-.5,e*.5,r*.5,r*-.5,n!=null?n:-5e4,s),this.perspCamera=new _w(o,e/r,n!=null?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 Fr().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(Oi),this.targetOffset=Oi.distanceTo(e)}getTarget(e=new kt){return this.getWorldDirection(yc),this.getWorldPosition(Oi),yc.multiplyScalar(this.targetOffset),e.copy(Oi).add(yc),e}getDistanceToTarget(){let e=this.getTarget();return this.getWorldPosition(Oi),Oi.distanceTo(e)}updateUp(){let e=this.getWorldQuaternion(new Gw),r=new kt(0,0,1).applyQuaternion(e),o=new kt().copy(ld.DefaultUp);this.isUpVectorFlipped&&o.negate(),o.applyQuaternion(e);let n=new kt().copy(ld.DefaultUp).projectOnPlane(r),s=new kt().crossVectors(n,o).dot(r)>=0?1:-1;this.angleOffsetFromUp=n.angleTo(o)*s}getViewFrontToObject(e){let r=e.getWorldPosition(new kt),n=e.getWorldDirection(new kt).multiplyScalar(this.targetOffset);return{position:r.clone().add(n),target:r}}getViewToObject(e){let r=e.getWorldPosition(new kt),n=this.getWorldDirection(new kt).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}fromCameraRender(e){let r={near:this.orthoCamera.near,far:this.orthoCamera.far},o={near:this.perspCamera.near,far:this.perspCamera.far};return this.copy(e),this.name="",this.enableHelper=!0,this.objectHelper.visible=!0,this.orthoCamera.near=r.near,this.orthoCamera.far=r.far,this.perspCamera.near=o.near,this.perspCamera.far=o.far,this.updateProjectionMatrix(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="CombinedCamera",o.cameraType=this.cameraType,o.targetOffset=this.targetOffset,o.isUpVectorFlipped=this.isUpVectorFlipped,o.angleOffsetFromUp=this.angleOffsetFromUp,o.left=this.left,o.right=this.right,o.top=this.top,o.bottom=this.bottom,this.view!==null&&(o.view=Object.assign({},this.view)),o.zoomOrtho=this.orthoCamera.zoom,o.nearOrtho=this.orthoCamera.near,o.far=this.far,o.aspect=this.aspect,o.fov=this.fov,o.focus=this.focus,o.filmGauge=this.filmGauge,o.filmOffset=this.filmOffset,o.zoomPersp=this.perspCamera.zoom,o.nearPersp=this.perspCamera.near,r}fromJSON(e){var r;if(super.fromJSON(e),this.cameraType=e.cameraType,e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.orbitControlsTarget!==void 0){let o=this.getWorldPosition(new kt),n=new kt().fromArray(e.orbitControlsTarget);this.targetOffset=n.distanceTo(o)}else e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset);return this.isUpVectorFlipped=!1,this.angleOffsetFromUp=(r=e.angleOffsetFromUp)!=null?r:0,e.left!==void 0&&(this.left=e.left),e.right!==void 0&&(this.right=e.right),e.top!==void 0&&(this.top=e.top),e.bottom!==void 0&&(this.bottom=e.bottom),e.view!==void 0&&(this.view=Object.assign({},e.view)),e.zoomOrtho!==void 0&&(this.orthoCamera.zoom=e.zoomOrtho),e.nearOrtho!==void 0&&(this.orthoCamera.near=e.nearOrtho),e.far!==void 0&&(this.far=e.far),e.aspect!==void 0&&(this.aspect=e.aspect),e.fov!==void 0&&(this.fov=e.fov),e.focus!==void 0&&(this.focus=e.focus),e.filmGauge!==void 0&&(this.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(this.filmOffset=e.filmOffset),e.zoomPersp!==void 0&&(this.perspCamera.zoom=e.zoomPersp),e.nearPersp!==void 0&&(this.perspCamera.near=e.nearPersp),this.updateProjectionMatrix(),this}toCameraState(e=[]){let r={type:this.cameraType,far:this.far,orthographic:{near:this.orthoCamera.near,zoom:this.orthoCamera.zoom},perspective:{near:this.perspCamera.near,fov:this.perspCamera.fov,zoom:this.perspCamera.zoom},up:this.up.toArray(),targetOffset:this.targetOffset,isUpVectorFlipped:this.isUpVectorFlipped};return Jo(r,e)}fromCameraState(e){let{orthographic:r,perspective:o}=e;return e.type!==void 0&&(this.cameraType=e.type),e.far!==void 0&&(this.far=e.far),r!==void 0&&(r.near!==void 0&&(this.orthoCamera.near=r.near),r.zoom!==void 0&&(this.orthoCamera.zoom=r.zoom)),o!==void 0&&(o.near!==void 0&&(this.perspCamera.near=o.near),o.fov!==void 0&&(this.perspCamera.fov=o.fov),o.zoom!==void 0&&(this.perspCamera.zoom=o.zoom)),e.up!==void 0&&this.up.fromArray(e.up),e.targetOffset!==void 0&&(this.targetOffset=e.targetOffset),e.isUpVectorFlipped!==void 0&&(this.isUpVectorFlipped=e.isUpVectorFlipped),this.updateProjectionMatrix(),this}toState(e){return H(I(I({},super.toState(e)),this.toCameraState(e)),{type:this.cameraType})}fromState(e){return super.fromState(e),this.fromCameraState(e),this}};import{Group as zw}from"three";var Vr=class extends Cr(Xt(zw),Mi){constructor(){super(...arguments);this.objectType="EmptyObject"}static createFromState(e,r){let o=new Vr().fromState(r);return o.uuid=e,o.enableHelper=!0,o.objectHelper.update(),o}toJSON(e){let r=super.toJSON(e);return r.object.objectType="EmptyObject",r}};import{DirectionalLight as Rw,CameraHelper as Ia}from"three";var Ii=class extends Cr(Xt(Rw),Ni){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 Ia(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Ii().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 Ia&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ia&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ia&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightDirectional",o.color=this.color.getHex(),o.intensity=this.intensity,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.left=o.left,r.right=o.right,r.top=o.top,r.bottom=o.bottom,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromDirectionalLightState(e,r){let o=e.depth!==void 0&&e.depth!==this.shadow.camera.far||e.size!==void 0&&e.size/2!==this.shadow.camera.right;return super.fromLightState(e,r),e.size!==void 0&&Vm(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}};import{PointLight as Fw,Vector3 as Aa,Box3 as Vw,Box3Helper as Da,Color as jw}from"three";var Ai=class extends Cr(Xt(Fw),Pi){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 Aa(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Aa(o.far+this.position.x,o.far+this.position.y,o.far+this.position.z),a=new Vw(n,s),l=new Da(a,new jw(16755200));l.visible=!1,this._gizmos.shadowmap=l,this.update()}static createFromState(e,r,o){let n=new Ai().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 Da&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Da&&(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 Da){let o=this.shadow.camera,n=new Aa(-o.far+this.position.x,-o.far+this.position.y,-o.far+this.position.z),s=new Aa(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()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightPoint",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.decay=this.decay,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n,s;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.decay=e.decay,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray((s=e.shadow.mapSize)!=null?s:[512,512]),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromPointLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.shadowRadius!==void 0&&(this.shadow.radius=e.shadowRadius),e.shadowResolution!==void 0&&(this.shadow.mapSize.set(e.shadowResolution,e.shadowResolution),this.shadow.map&&(this.shadow.map.dispose(),this.shadow.map=null)),this}fromState(e,r){return super.fromState(e),this.fromPointLightState(e,r),this}};import{SpotLight as Uw,CameraHelper as Ba,MathUtils as kw,Vector3 as ud,Quaternion as Hw}from"three";var cd=new ud,hd=new ud,pd=new Hw,Di=class extends Cr(Xt(Uw),Dn){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=kw.RAD2DEG*2*this.angle,o.aspect=1,o.near=100,o.far=2500;let n=new Ba(this.shadow.camera);n.visible=!1,this._gizmos.shadowmap=n,this.update()}static createFromState(e,r,o){let n=new Di().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 Ba&&(r.visible=!0)}}hideGizmos(){for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ba&&(r.visible=!1)}}update(){this.shadow.camera.updateProjectionMatrix();for(let e in this._gizmos){let r=this._gizmos[e];r instanceof Ba&&r.update()}}updateMatrixWorld(e){super.updateMatrixWorld(e),hd.setFromMatrixPosition(this.matrixWorld),pd.setFromRotationMatrix(this.matrixWorld),cd.copy(this.up).applyQuaternion(pd).negate().multiplyScalar(this.distance),this.target.position.copy(hd).add(cd),this.target.updateMatrixWorld(),this.enableHelper===!0&&this.objectHelper.visible===!0&&this.objectHelper.update()}copy(e,r=!0){return super.copy(e,r),this.color.copy(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}toJSON(e){let r=super.toJSON(e),o=r.object;return o.objectType="LightSpot",o.color=this.color.getHex(),o.intensity=this.intensity,o.distance=this.distance,o.angle=this.angle,o.decay=this.decay,o.penumbra=this.penumbra,o.shadow=this.shadow.toJSON(),r}fromJSON(e){var n;super.fromJSON(e),this.color.set(e.color),this.intensity=e.intensity,this.distance=e.distance,this.angle=e.angle,this.decay=e.decay,this.penumbra=e.penumbra,this.shadow.normalBias=(n=e.shadow.normalBias)!=null?n:0,this.shadow.radius=e.shadow.radius,this.shadow.mapSize.fromArray(e.shadow.mapSize);let r=this.shadow.camera,o=e.shadow.camera;return r.near=o.near,r.far=o.far,r.zoom=o.zoom,r.fov=o.fov,r.focus=o.focus,r.aspect=o.aspect,r.filmGauge=o.filmGauge,r.filmOffset=o.filmOffset,o.view!==void 0&&(r.view=Object.assign({},o.view)),this}fromSpotLightState(e,r){return super.fromLightState(e,r),e.distance!==void 0&&(this.distance=e.distance),e.decay!==void 0&&(this.decay=e.decay),e.angle!==void 0&&(this.angle=e.angle),e.penumbra!==void 0&&(this.penumbra=e.penumbra),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}};import{VideoTexture as qw}from"three";var md=i=>i.tagName==="VIDEO",No=class{static resize(t,e,r){let o=t/e,n;if(!r.image)return;let s=r.image;md(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];wm(a)&&(No.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;md(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 Bi=class extends rt{constructor(e,r=new ft){super(e,r);this.objectType="Mesh2D";this.castShadow=!0,this.receiveShadow=!0}updateGeometry(e){super.updateGeometry(e),this.material.userData.layers&&No.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}resizeGeometry(e,r){super.resizeGeometry(e,r,0),this.material.userData.layers&&No.resizeTextureLayers(this.geometry.userData.parameters.width,this.geometry.userData.parameters.height,this.material)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh2D",r}clone(){let e=super.clone();return e.updateGeometry({}),e}static fromTexture(e){let r,o;if(e instanceof qw){let a=e.image;r=a.videoWidth*.5,o=a.videoHeight*.5}else{let a=e.image;r=a.width*.5,o=a.height*.5}let n=oa.create({parameters:{width:r,height:o}}),s=new ft;return s.layersList.changeLayer(0,{type:"texture",texture:e}),s.layersList.moveLayer(0,1),s.dispose(),new Bi(n,s)}};var Ei=class extends rt{constructor(e,r=new It){super(e,r);this.objectType="Mesh3D";this.castShadow=!0,this.receiveShadow=!0}toJSON(e){let r=super.toJSON(e);return r.object.objectType="Mesh3D",r}};var _i=class extends Ei{constructor(e,r=new It){super(e,r);this.objectType="NonParametric"}toJSON(e){let r=super.toJSON(e);return r.object.objectType="NonParametric",r}};import{DoubleSide as Ww,Mesh as $w,MeshBasicMaterial as Jw,ShapeBufferGeometry as Yw,Vector2 as Kw,Vector3 as Xw}from"three";import{FontLoader as Qw}from"three/examples/jsm/loaders/FontLoader.js";var Qe=class extends $w{constructor({char:e,originalChar:r,fontFamily:o,letterSpacing:n,fontSize:s,LOD:a=16},l=new Jw({color:0,opacity:1,visible:!0,transparent:!0,side:Ww})){let c=Qe.loadChar(e,o,a);super(c.geometry,l);this.char=e,this.originalChar=r!=null?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 Kw,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 Qe._fontPath}static set FONTS_PATH(e){Qe._fontPath=e}updatePosition(e,r){this.localPosition.copy(e);let o=new Xw(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=Qe.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=Qe.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=Qe.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 Qe(e).copy(this)}static loadFont(e){return new Promise(function(r,o){Qe.fontCache[e]?r(Qe.fontCache[e]):new Qw().load(Qe.FONTS_PATH+e+".json",s=>{Qe.fontCache[e]=s,r(s)},void 0,o)})}static loadChar(e,r,o){if(Qe.charCache[e]){if(Qe.charCache[e][o]&&Qe.charCache[e][o].fontFamily===r)return Qe.charCache[e][o]}else Qe.charCache[e]={};let n=Qe.fontCache[r],s=n.generateShapes(e,1);return Qe.charCache[e][o]={geometry:new Yw(s,o),fontFamily:r,resolution:n.data.resolution,glyphsHa:n.data.glyphs[e].ha},Qe.charCache[e][o]}},At=Qe;At.charCache={},At.fontCache={},At._fontPath="/_assets/_fonts/";import{DoubleSide as _a,MeshBasicMaterial as fd,Vector3 as yd,Object3D as Zw}from"three";import{Vector2 as dd}from"three";var Ea=new dd,so=class{constructor(t,e,r){this.message=[];this.endLine=!0;this.yLinePos=t,this.lineHeight=e,this.maxCharSize=r,this.nextChar3DPos=new dd(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){Ea.set(e,r);let o=this.message.length;for(let n=0;n<o;n++)this.message[n].updatePosition(this.message[n].localPosition.add(Ea),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),Ea.set(s,r),this.message[a].updatePosition(this.message[a].localPosition.add(Ea),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 gc=class extends rt{constructor(e,r=new ft({transparent:!0,opacity:1,visible:!1,side:_a})){super(e,r);this.objectType="TextFrame";this.charContainer=new Zw,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 yd(this._geometryUserData.parameters.width*-.5,this._geometryUserData.parameters.height*.5,0),textLines:[]},this.createTextLine()}static createFromState(e,r,o){let n=ia.create({parameters:{width:r.width,height:r.height}}),s=new gc(n).fromState(r,o);return s.uuid=e,s}async updateText(e){this.clearText();let r=this.userData.textFrame,o=r.fontFamily;await At.loadFont(o),r.text=e;let n=r.textOrigin,s=new fd({visible:r.visible,transparent:!0,side:_a}),a=e.split(`
|
|
943
|
+
`),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 m={char:u,fontFamily:o,letterSpacing:r.letterSpacing,fontSize:r.fontSize,LOD:16},f=s.clone();f.color=r.hexColor,f.opacity=r.opacity;let g=new At(m,f);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 At&&(e.intersectObject(this.charContainer.children[s],!1,n),n.length>0)){n[0].object=this,r.push(n[0]);return}}updateGeometry(e){var h,p,u,m;let r=this.userData,o=this.geometry.userData,n=o.parameters.width,s=o.parameters.height,a=(p=(h=e.parameters)==null?void 0:h.width)!=null?p:n,l=(m=(u=e.parameters)==null?void 0:u.height)!=null?m: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){var n;let r=this.userData;r.textFrame.hexColor=e;let o=r.textFrame.textLines;for(let s=0;s<o.length;s++){let a=o[s].message;for(let l=0;l<a.length;l++){let c=a[l].material;(n=c.color)!=null&&n.isColor&&(c.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 At.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 At.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()}toJSON(e){let r=super.toJSON(e),o=r.object;o.objectType="TextFrame";let s=this.userData.textFrame.textLines.map(a=>{let l=a.message.map(c=>({char:c.char,originalChar:c.originalChar,fontFamily:c.fontFamily,letterSpacing:c.letterSpacing,fontSize:c.fontSize,LOD:c.LOD}));return{align:a.align,endLine:a.endLine,lineHeight:a.lineHeight,maxCharSize:a.maxCharSize,yLinePos:a.yLinePos,message:l}});return o.userData.textFrame.textLinesData=s,r}async fromJSONasync(e){if(super.fromJSON(e),e.userData!==void 0){let r=e.userData.textFrame;await At.loadFont(r.fontFamily),r.textOrigin=new yd(r.textOrigin.x,r.textOrigin.y,r.textOrigin.z);let o=new fd({color:r.hexColor,opacity:r.opacity,visible:r.visible,transparent:!0,side:_a});r.textLinesData&&(r.textLines=r.textLinesData.map((n,s)=>{let a=new so(Number(n.yLinePos),Number(n.lineHeight),Number(n.maxCharSize)),l=n.message.map((c,h)=>{if(c.char===void 0){let m=r.textLines[s].message[h];if("geometries"in m){let f=m.geometries[0].userData.parameters;Object.assign(c,{LOD:f.lod,char:f.char,fontFamily:f.fontFamily,fontSize:f.fontSize,letterSpacing:f.letterSpacing,originalChar:f.char})}}let p={char:c.char,fontFamily:c.fontFamily,letterSpacing:Number(c.letterSpacing),fontSize:Number(c.fontSize),LOD:c.LOD},u=new At(p,o.clone());return a.addChar3D(u,r.textOrigin),this.charContainer.add(u),u});return a.message=l,a}),this.userData.textFrame=r),this.textFullUpdate()}return this}fromTextFrameData(e,r){if(e.color!==void 0){let o=Xe(e.color,r);this.updateColor(o),this.updateOpacity(o.a)}e.alpha!==void 0&&this.updateOpacity(e.alpha),e.font!==void 0&&this.updateFontFamily(e.font),e.horizontalAlign!==void 0&&this.updateHorizontalAlignment(e.horizontalAlign),e.verticalAlign!==void 0&&this.updateVerticalAlignment(e.verticalAlign),e.textTransform!==void 0&&this.updateTextTransform(e.textTransform),e.fontSize!==void 0&&this.updateFontSize(e.fontSize),e.lineHeight!==void 0&&this.updateLineHeight(e.lineHeight),e.letterSpacing!==void 0&&this.updateLetterSpacing(e.letterSpacing),e.text!==void 0&&e.text!==""&&this.updateText(e.text),(e.width!==void 0||e.height!==void 0)&&this.updateGeometry({parameters:{width:e.width,height:e.height}})}fromState(e,r){return super.fromState(e),this.fromTextFrameData(e,r),this}convertToVector(){let{fontFamily:e,hexColor:r}=this.userData.textFrame,o=new Vr;o.name="Text Shape";let n=At.fontCache[e];for(let s of this.charContainer.children)s instanceof At&&n.generateShapes(s.char,1).forEach(a=>{let l=new Pe().fromShape(a);l.applyScale(s.scale.x,s.scale.y);let c=ut.create({shape:l}),h=new ft({side:_a});h.color=r;let p=new no(c,h);p.name=s.char,p.position.copy(s.position),p.rotation.copy(s.rotation),o.attach(p)});return o}},Mo=gc;Mo.VerticalAlign=hl,Mo.HorizontalAlign=cl,Mo.TextTransform=pl;import{HemisphereLight as m1,Scene as d1,Vector3 as f1,Color as Od,Fog as y1,Box3 as g1}from"three";import{Box3 as e1,Matrix4 as Po,Sphere as bd,Vector3 as t1}from"three";var Sd=Qd(xd());var xc;na.then(i=>{xc=i});var wd=new Po,r1=new Po,o1=new Po,lr=new e1,ao=new t1,i1=new Po,n1=new Po,Gi=class extends rt{constructor(e,r,o,n=new It){super(o!=null?o:r,n);this.subdivPointer=e;this.originalGeometry=r;this.subdividedGeometry=o;this.objectType="SubdivObject";this.hiddenMatrixOld=new Po;this.smoothShading=!0;this.phongAngle=35;this.matrixWorldRigid=new Po;this.castShadow=!0,this.receiveShadow=!0,this.forceComputeSize=!1}static createFromState(e,r,o){let{subdivPointer:n,originalGeometry:s,subdividedGeometry:a}=Zt.build(r.geometry,void 0,void 0,!r.flatShading),l=Mn(r.material,o),c=new Gi(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 _i(this.geometry,this.material).shallowCopy(this,e)}toJSON(e){let r=super.toJSON(e);return r.object.objectType="SubdivObject",r}buildFromStore(e,r){var a,l,c;let{originalGeometry:o,subdividedGeometry:n,subdivPointer:s}=Zt.build(e,r,this.subdivPointer,this.smoothShading,this.shearScale);if(e.phongAngle!==void 0&&(this.phongAngle=e.phongAngle),this.subdivPointer=s,o!==void 0&&((a=this.originalGeometry)==null||a.dispose(),this.originalGeometry=o),n!==void 0&&((l=this.subdividedGeometry)==null||l.dispose(),this.subdividedGeometry=n!=null?n:void 0),this.geometry=(c=this.subdividedGeometry)!=null?c:this.originalGeometry,this.cloner)for(let h of this.cloner.children)h.geometry=this.geometry;e.width&&(this.geometry.userData.parameters={width:e.width,height:e.height,depth:e.depth})}updateMesh(e=!1){Zt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1,this.originalGeometry,e?this.shearScaleInv:void 0),this.subdividedGeometry&&Zt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1,this.subdividedGeometry,e?this.shearScaleInv:void 0)}updateTopology(){var e;this.originalGeometry.dispose(),this.originalGeometry=Zt.buildLevel(this.subdivPointer,!0,this.smoothShading?this.phongAngle:-1),this.subdividedGeometry&&(this.subdividedGeometry.dispose(),this.subdividedGeometry=Zt.buildLevel(this.subdivPointer,!1,this.smoothShading?this.phongAngle:-1)),this.geometry=(e=this.subdividedGeometry)!=null?e:this.originalGeometry}raycast(e,r){var o;this.geometry=this.originalGeometry,rt.prototype.raycast.call(this,e,r),this.geometry=(o=this.subdividedGeometry)!=null?o:this.originalGeometry}updateMatrixWorldSVD(){let e=this.matrixWorld.elements,r=[[e[0],e[4],e[8]],[e[1],e[5],e[9]],[e[2],e[6],e[10]]],{u:o,v:n,q:s}=(0,Sd.SVD)(r),a=wd.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=r1.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=o1.copy(l).transpose();this.shearScale=i1.makeScale(s[0],s[1],s[2]).multiply(c).premultiply(l),this.shearScaleInv=n1.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 bd);let r=e.attributes.position,o=e.boundingSphere.center;lr.setFromBufferAttribute(r),lr.getCenter(o),e.boundingSphere.radius=o.distanceTo(lr.max),isNaN(e.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),lr.getSize(ao);let n={width:ao.x,height:ao.y,depth:ao.z};return this.geometry.userData.parameters=n,n}updateBoundingBox(e){let r=this.originalGeometry;lr.min.set(e[0],e[2],e[4]),lr.max.set(e[1],e[3],e[5]),this.shearScaleInv&&(lr.min.applyMatrix4(this.shearScaleInv),lr.max.applyMatrix4(this.shearScaleInv)),r.boundingSphere===null&&(r.boundingSphere=new bd);let o=r.boundingSphere.center;lr.getCenter(o),r.boundingSphere.radius=o.distanceTo(lr.max),isNaN(r.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),lr.getSize(ao);let n={width:ao.x,height:ao.y,depth:ao.z};return this.geometry.userData.parameters=n,n}freeSubdivPointer(){this.subdivPointer&&(xc.free_bvh(this.subdivPointer),xc.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,vd(this.originalGeometry.attributes,...this.geometry.userData.scale),this.originalGeometry.attributes.position.needsUpdate=!0,this.originalGeometry.attributes.normal.needsUpdate=!0,this.subdividedGeometry&&(vd(this.subdividedGeometry.attributes,...this.subdividedGeometry.userData.scale),this.subdividedGeometry.attributes.position.needsUpdate=!0,this.subdividedGeometry.attributes.normal.needsUpdate=!0),this.geometry.userData.parameters=I({},e.parameters)}};function vd(i,t,e,r){let o=i.position.array,n=i.normal.array,s=wd.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}import{BackSide as s1,BufferGeometry as a1,DoubleSide as l1,FrontSide as c1}from"three";function Ld(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=c1:t.side===1?i.side=s1:i.side=l1)}function h1(i,t){if(Array.isArray(i.material))for(let e of i.material)Ld(e,t);else{let e=i.material;Ld(e,t)}i.objectType==="SubdivObject"&&t.flatShading!==void 0&&(i.material.flatShading=!1,i.smoothShading=!t.flatShading,i.updateMesh())}function Cd(i,t,e){let r;if(t.geometry.type==="SubdivGeometry")r=Gi.createFromState(i,t,e);else{let o=t.geometry.type==="BooleanGeometry"?new a1:wa(t.geometry,e),n="materials"in t?Gm(t.materials,e):Mn(t.material,e);js.is2DParametricMesh(o.userData.type)?r=new Bi(o,n):(o==null?void 0:o.userData.type)==="VectorGeometry"?r=new no(o,n):t.geometry.type==="NonParametricGeometry"?r=new _i(o,n):t.geometry.type==="BooleanGeometry"?(r=new Ta(void 0,n),r.booleanOp=t.geometry.operation,t.geometry.phongAngle!==void 0&&(r.phongAngle=t.geometry.phongAngle)):r=new Ei(o,n),r.uuid=i,r.fromState(t)}return h1(r,t),r}function Td(i,t,e){return t.type==="Mesh"?Cd(i,t,e):t.type==="TextFrame"?Mo.createFromState(i,t,e):t.type==="Empty"?Vr.createFromState(i,t):t.type==="PointLight"?Ai.createFromState(i,t,e):t.type==="SpotLight"?Di.createFromState(i,t,e):t.type==="DirectionalLight"?Ii.createFromState(i,t,e):Yo.is(t.type)?Fr.createFromState(i,t):(console.error(t),new Vr)}function p1(i,t){t.uniforms[`f${t.id}_transmissionSamplerMap`].value=i.texture,t.uniforms[`f${t.id}_transmissionDepthMap`].value=i.depthTexture}function Nd(i,t,e){if(!e.userData.layers)return!1;let r=!1,o=e.userData.layers.getLayersOfType("transmission");return o.length>0?(t.layers.set(3),r=!0,i!==void 0&&o.forEach(n=>p1(i,n))):t.layers.set(0),r}function Md(i,t){let e=!1;return t.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)Nd(i,r,r.material[o])&&(e=!0);else Nd(i,r,r.material)&&(e=!0)}),e}function Pd(i,t){"material"in i&&u1(i.material,t),"geometry"in i&&i.geometry.dispose()}function u1(i,t){Mc(i).forEach(e=>{t.isSharedMaterial(e)||e.dispose()})}var Id=new f1,bc=class extends Sa(d1){constructor(e,r){super();this.objectType="Scene";this.alpha=1;this.backupFog=new y1(16777215,.1,2e3);this.fogUseBGColor=!1;this.wireframeState=!1;this.needsTransmissionDirty=!0;this._needsTransmission=!1;this._color=new Od(1,0,0);this.bgColor=new Od(1,1,1);this.entityByUuid={};this.ambientLight=new m1(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=Md(e,this),e!==void 0&&(this.needsTransmissionDirty=!1)),this._needsTransmission}find(e){if(e===""||e===void 0)return;let r=this.entityByUuid[e];return r===void 0?this.getObjectByProperty("uuid",e):r}get color(){return this._color}set color(e){this.fogUseBGColor===!0&&this.backupFog.color.copy(e),this._color.copy(e)}get enableFog(){return this.fog!==null}set enableFog(e){this.fog=e===!0?this.backupFog:null}init(e,r){if(this.createChildrenObjects(e.objects,this,r),this.personalCamera.removeFromParent(),this.add(this.personalCamera),this.ambientLight.removeFromParent(),this.add(this.ambientLight),this.setBackgroundColor(Xe(e.backgroundColor,r)),this.updateFog(e.fog,r),this.updateAmbientLight(e.environment.ambientLight,r),this.activeCamera=this.personalCamera,e.publish.playCamera!==null){let o=this.find(e.publish.playCamera);o instanceof Fr&&this.switchActiveCamera(o)}this.traverse(o=>{Sr(o)&&o.recomputeBoolean()})}clearScene(e){this.traverseEntity(r=>{Pd(r,e)});for(let r of this.children)Kt(r)&&r.removeFromParent()}resetAfterClear(e,r){this.init(e,r)}createPersonalCamera(){let e=Fr.createFromState(bc.PERSONAL_CAMERA_ID,H(I({},ks.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)Kt(s)&&!s.raycastLock&&s.visible&&((vr(s)||zr(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)Kt(r)&&r.traverseEntity(e)}updateFog(e,r){this.enableFog=e.enabled,this.fogUseBGColor=e.useBackgroundColor,e.useBackgroundColor?this.backupFog.color.set(this.bgColor):this.backupFog.color=Xe(e.color,r),this.backupFog.near=e.near,this.backupFog.far=e.far}toJSON(e){return{}}fromJSON(e){return this}dispose(){this.clearScene(this.sharedAssetManager),this.sharedAssetManager.dispose()}updateAmbientLight(e,r){Fm(this.ambientLight,e,r),e.groundColor!==void 0&&(this.ambientLight.groundColor=Xe(e.groundColor,r)),e.enabled!==void 0&&(this.ambientLight.visible=e.enabled)}switchActiveCamera(e){this.activeCamera!==this.personalCamera&&(this.activeCamera.enableHelper=!0),this.activeCamera=e,e.enableHelper=!1}setBackgroundColor(e){this.bgColor=e,this.alpha=e.a}createChildrenObjects(e,r,o){for(let 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=Td(e,r,s);return a&&(this.entityByUuid[e]=a,n.add(a),Sr(n)&&vr(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 g1;return o.setFromPoints(r),o.getCenter(Id),Id}copyMatrixWorld(e,r){if(e===null){r.identity();return}let o=this.find(e);o?r.copy(o.matrixWorld):r.identity()}copyParentMatrixWorld(e,r){var n;if(e===null){r.identity();return}let o=(n=this.find(e))==null?void 0:n.parent;o?r.copy(o.matrixWorld):r.identity()}traverseMaterial(e){this.traverseEntity(r=>{if(r instanceof rt)if(Array.isArray(r.material))for(let o=0;o<r.material.length;o++)e(r.material[o]);else e(r.material)})}updateCanvasSize(e,r){this.activeCamera.setViewplaneSize(e,r);let o,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})})}},Bn=bc;Bn.PERSONAL_CAMERA_ID="f23858d0-4a3b-4bd8-8173-66ed0af7f6fb-personalCamera";import{DRACOLoader as x1}from"three/examples/jsm/loaders/DRACOLoader.js";var lo;function b1(){return lo||(lo=new x1,lo.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.2/").preload()),lo.decoderPending}async function v1(i){if(lo){let t={attributeIDs:lo.defaultAttributeIDs,attributeTypes:lo.defaultAttributeTypes,useUniqueIDs:!1},e;try{e=await lo.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 Ad(i){let[t,e]=$a(Gs.deserialize(new Uint8Array(i))),r=[];t.scene.objects.traverse((o,n)=>{n.type==="Mesh"&&n.geometry.type==="NonParametricGeometry"&&n.geometry.data.draco!==void 0&&r.push(n)}),r.length&&await b1();for(let o of r){let n=await v1(Ya(o.geometry.data.draco));if(n){n.index&&(o.geometry.data.index={array:n.index.array,itemSize:1,normalized:!1,type:"Uint32Array"});let s={};n.attributes.forEach(({name:a,array:l,itemSize:c})=>{s[a]={array:l,itemSize:c,type:"Float32Array",normalized:!1}}),o.geometry.data.attributes=s,o.geometry.data.draco=void 0}}return e.result().data}var vc=new Map,En={url:"head",time:0,data:null,next:null,prev:null},zi={url:"tail",time:1/0,data:null,next:null,prev:null};En.next=zi;zi.prev=En;var Dd=0;function wi(i){if(typeof i=="string")return i;let t=Date.now(),e=vc.get(i);return e===void 0?(e={url:URL.createObjectURL(new Blob([i])),data:i,time:t,next:null,prev:null},vc.set(i,e)):(e.time=t,e.prev.next=e.next,e.next.prev=e.prev),e.prev=zi.prev,e.next=zi,zi.prev.next=e,zi.prev=e,t-Dd>1e3*10&&(Dd=t+1e3,setTimeout(()=>{let r=Date.now(),o=En.next;for(;o.time<r-1e3*10;)URL.revokeObjectURL(o.url),vc.delete(o.data),o=o.next,o.prev=En,En.next=o},900)),e.url}import{WebGLRenderTarget as S1,LinearMipmapLinearFilter as w1,LinearFilter as L1,ClampToEdgeWrapping as Bd,DepthTexture as C1}from"three";var Ed=new ft,za=class extends Et{},Ra=class{constructor(t){this.materials={};this.images={};this.colors={};this.transmissionRenderTarget=new S1(2048,2048,{generateMipmaps:!0,minFilter:w1,magFilter:L1,wrapS:Bd,wrapT:Bd}),this.transmissionRenderTarget.depthTexture=new C1(2048,2048),this.penumbraSizeNode=new dt(5,t.penumbraSize),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,tc(r,this))}get transmissionSamplerMap(){return this.transmissionRenderTarget.texture}get transmissionDepthMap(){return this.transmissionRenderTarget.depthTexture}addMaterial(t,e){e.uuid=t,this.materials[t]=e}deleteMaterial(t){this.materials[t]&&(this.materials[t].dispose(),delete this.materials[t])}isSharedMaterial(t){return t.uuid in this.materials||t===Ed}getMaterial(t){let e=this.materials[t];return e}getMaterialOrDeletedPlaceholder(t){var e;return(e=this.materials[t])!=null?e:Ed}getMaterials(){return this.materials}addImage(t,e){if(this.images[t])return this.images[t].onload=()=>{this.onImageLoad&&this.onImageLoad()},this.images[t].src=wi(e),!0;{let r=new Image;return r.src=wi(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 za(e.r,e.g,e.b,e.a):this.colors[t]=new za(e.r,e.g,e.b,1),!1)}updateColor(t,e){var r,o,n,s;if(this.colors[t]){let a=this.colors[t];return this.colors[t].r=(r=e.r)!=null?r:a.r,this.colors[t].g=(o=e.g)!=null?o:a.g,this.colors[t].b=(n=e.b)!=null?n:a.b,this.colors[t].a=(s=e.a)!=null?s:a.a,!0}return!1}deleteColor(t){this.colors[t]&&delete this.colors[t]}getColor(t){return this.colors[t]}dispose(){Object.keys(this.materials).forEach(e=>this.deleteMaterial(e)),this.transmissionRenderTarget.depthTexture.dispose(),this.transmissionRenderTarget.dispose(),this.onImageLoad=void 0}};import{Mesh as yH}from"three";import{mergeBufferGeometries as bH}from"three/examples/jsm/utils/BufferGeometryUtils.js";function _d(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}import{Color as Gd,ShaderLib as T1}from"three";function zd(i){let t=new Set;return i.traverse(e=>{if(vr(e))if(et(e.material))e.material.forEach(r=>{let o=r;t.has(o)||t.add(o)});else{let r=e.material;t.has(r)||t.add(r)}}),t.forEach(e=>{if(e instanceof Array)return;let r=e.onBeforeCompile.bind(e);N1(e)?(Object.assign(e,{isMeshStandardMaterial:!0,isMeshPhysicalMaterial:!0,transmission:1,attenuationColor:new Gd,specularColor:new Gd}),e.onBeforeCompile=(o,n)=>{r&&r(o,n),o.uniforms=Object.assign(T1.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)})}):M1(e)||(e.onBeforeCompile=(o,n)=>{r&&r(o,n),e.transparent=!1})}),i}function N1(i){return i.userData.layers.getLayersOfType("transmission").length>0}function M1(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 Rd(i){return i.traverse(t=>{if(t.type==="Camera"){let e=t;e.type=e.cameraType}}),i}function Fd(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}import{mergeBufferGeometries as P1}from"three/examples/jsm/utils/BufferGeometryUtils";function Vd(i){let t=[];return i.traverse(e=>{e instanceof To&&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&&_d(l),l}),s=P1(e.parameters.hideBase?n:[r.geometry,...n]);r.geometry=s,r.material=o[0].material,r.remove(e)}),i}function jd(i){return i.traverse(t=>{t.matrixAutoUpdate=!0}),i}var Ud="The SplineLoader only accepts .splinecode files that are generated from Spline export panel.",Sc=class extends I1{load(t,e,r,o=console.error){let n=new O1(this.manager);n.setPath(this.path),n.setResponseType("arraybuffer"),n.setRequestHeader(this.requestHeader),n.setWithCredentials(this.withCredentials),t.endsWith(".spline")?console.warn(Ud+" The .spline files are only meant to be used by the Editor."):t.endsWith(".splinecode")||console.warn(Ud),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 Ad(t),r=new Ra(e.shared);Object.values(r.getMaterials()).forEach(s=>Object.assign(s,{isAsset:!0}));let o=new Bn(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&&Rm(s)&&Object.assign(s,{makeDefault:!0})}return o=Vd(o),o=zd(o),o=Rd(o),o=Fd(o),o=jd(o),o}};export{Sc as default};
|